<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>100-heon.log</title>
        <link>https://velog.io/</link>
        <description>취미가 많은 대학원생</description>
        <lastBuildDate>Wed, 03 Dec 2025 05:35:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>100-heon.log</title>
            <url>https://velog.velcdn.com/images/100-heon/profile/2b9d90ae-160d-47cd-af2b-3d728d120ce8/image.JPG</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. 100-heon.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/100-heon" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[DeepSeek로 upbit 자동 매매 인증 (1달 차)]]></title>
            <link>https://velog.io/@100-heon/DeepSeek%EB%A1%9C-upbit-%EC%9E%90%EB%8F%99-%EB%A7%A4%EB%A7%A4-%EC%9D%B8%EC%A6%9D-1%EB%8B%AC-%EC%B0%A8</link>
            <guid>https://velog.io/@100-heon/DeepSeek%EB%A1%9C-upbit-%EC%9E%90%EB%8F%99-%EB%A7%A4%EB%A7%A4-%EC%9D%B8%EC%A6%9D-1%EB%8B%AC-%EC%B0%A8</guid>
            <pubDate>Wed, 03 Dec 2025 05:35:55 GMT</pubDate>
            <description><![CDATA[<p>나의 현금 10만원으로 돌리려했으나.. 소량의 금액이라 수수로 및 최소 거래 금액에 막히는 경우가 있어 가상의 돈 1억으로 다시 만들었습니다.</p>
<p>이에 따라 시각화를 하기 위해 간단한 웹페이지를 제작하였습니다.</p>
<p><a href="https://llm-coin.p-e.kr/">https://llm-coin.p-e.kr/</a></p>
<p>요즘 코인시장이 엄청나게 격동중이긴한데.. 그나마 가장 좋은 변수값을 찾아서 돌려보니 나름 선방중이라고 생각이 듭니다.</p>
<p>많은 관심 부탁드립니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DeepSeek로 upbit 자동 매매 인증 (1일 차)]]></title>
            <link>https://velog.io/@100-heon/DeepSeek%EB%A1%9C-upbit-%EC%9E%90%EB%8F%99-%EB%A7%A4%EB%A7%A4-%EC%9D%B8%EC%A6%9D-1%EC%9D%BC-%EC%B0%A8</link>
            <guid>https://velog.io/@100-heon/DeepSeek%EB%A1%9C-upbit-%EC%9E%90%EB%8F%99-%EB%A7%A4%EB%A7%A4-%EC%9D%B8%EC%A6%9D-1%EC%9D%BC-%EC%B0%A8</guid>
            <pubDate>Sun, 02 Nov 2025 12:24:11 GMT</pubDate>
            <description><![CDATA[<p><a href="https://hkuds.github.io/AI-Trader/">https://hkuds.github.io/AI-Trader/</a></p>
<p><img src="https://velog.velcdn.com/images/100-heon/post/255953f4-122b-4aee-b6dd-210e9f737002/image.png" alt=""></p>
<p>요즘 나름 핫한 LLM 모델 투자 대회를 보다가 실제로 해보면 좋지 않을까 해서 구현해보았습니다.</p>
<p>현재 기준 과거 캔들(분봉,일봉, 시간봉) 등을 참고 하고 필요 할 경우 뉴스까지 참고하여 프롬프트를 넣어 딥식이가 판단하에 매수 매도 보류 등 선택을 하도록 했습니다.</p>
<p><img src="https://velog.velcdn.com/images/100-heon/post/df86dc0e-2d30-4c8a-9cde-4e7ea2a2002b/image.PNG" alt=""></p>
<p>deepseek api 비용이 있어서.. 분단위는 조금 빡시고.. 10달러 충전해서 사용중입니다.</p>
<p>그림에서와 같이 포트폴리오 및 분석결과도 알려줍니다.</p>
<p>aws 에 올려두어서 1달 정도는 무사히 작동할 것 같습니다. 11월 동안 돌려보도록 하겠습니다.</p>
<p>10만원 좀 안되는 돈으로 시작했습니다. api 만지다가 몇번 실수로 매수해서..</p>
<p><img src="https://velog.velcdn.com/images/100-heon/post/c1c35567-bf9e-437d-9c48-6f072b7c3c10/image.png" alt=""></p>
<p>저는 지금 5분 단위로 하고 있는데.. 수익률0.5% 유지 중입니다.</p>
<p>결과는 매일은 아니더라 남겨두도록 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[YOLOv5 를 활용한 FPS게임 에임핵 제작하기 (발로란트)]]></title>
            <link>https://velog.io/@100-heon/YOLOv5-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-FPS%EA%B2%8C%EC%9E%84-%EC%97%90%EC%9E%84%ED%95%B5-%EC%A0%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B0%9C%EB%A1%9C%EB%9E%80%ED%8A%B8</link>
            <guid>https://velog.io/@100-heon/YOLOv5-%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-FPS%EA%B2%8C%EC%9E%84-%EC%97%90%EC%9E%84%ED%95%B5-%EC%A0%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B0%9C%EB%A1%9C%EB%9E%80%ED%8A%B8</guid>
            <pubDate>Wed, 30 Oct 2024 04:45:49 GMT</pubDate>
            <description><![CDATA[<p>졸업작품으로 만든 프로그램이며 학습용으로 봐주세요~</p>
<h3 id="aimbot-이란">Aimbot 이란?</h3>
<p>FPS를 기반으로 한 게임들에서 에임을 쉽게 할 수 있도록 보조하는 프로그램들의 총칭이다. 국내에서는 게임산업진흥에 관한 법률에 따라 프로그램 제작/유포자만 처벌되고 이용자에 관한 처벌 규정은 없다. 전세계 대부분의 다른 국가에서는 관련 법령이 없기 때문에 만들어진 핵을 상용으로 판매하는 등 저작권법에 저촉되는 부분이 없다면 적법한 것으로 본다. 2010년대 이전에는 핵의 개념에 들어갔었지만, 리플레이 등에서 핵 사용유무를 유저가 판독하지 못하게끔 하거나 부가 기능을 추가하기 위해 정교해지면서 점차 봇의 개념을 끌어오기 시작했다.
-출처 위키</p>
<p>aimbot을 구글에 검색하니 github로 연결됐는데 학습이라고 해놓고 디스코드 연결해서 구매를 유도하고 있었다.
판매하는 곳들을 살펴보니 나랑 같은 기술을 사용했다. 물론 더 좋겠지만 과정은 거의 같을 것이다.</p>
<p>다음은 과정이다.
<img src="https://velog.velcdn.com/images/100-heon/post/3959f4f6-5472-44a7-bdb0-c4fe66fe1c13/image.png" alt=""></p>
<p>과정은 간단하다. 사람이랑 같이 작동합니다.
화면 속 적이 인식이 되면 마우스를 제어하는 간단한 구조.</p>
<p>그렇다면 화면 속 적은 어떻게 인식을 하는가?</p>
<h2 id="yolov5---object-detection-모델">YOLOv5 - object detection 모델</h2>
<p>YOLOv5 라는 객체탐지 모델을 사용하면 된다.
이건 인공지능 모델로 학습을 통해 적을 식별할 수 있다.</p>
<p>다음은 적을 학습 시키는 과정
정확한 학습을 하려면 10000장의 사진이 필요한데 누가 이걸 하겠냐고... 그래서 1000장 정도만 직접 캡쳐했다.
캡쳐도 코딩으로하면 쉽다. - 코딩을 배워야 하는 이유
<img src="https://velog.velcdn.com/images/100-heon/post/6268e503-8142-4307-9550-7bf0e5276572/image.png" alt=""></p>
<p>1000장의 사진에서 적의 위치를 네모박스 쳐주면 된다. 그러면 txt파일로 이미지상의 적의 네모를 시작좌표와 끝나는좌표를 같이 저장해준다.
데이터 라벨링이라는 작업이 바로 이것이다. 
라벨링하는 알바를 많이 구하길래 알려드림. 이거 진짜 너무 귀찮음........</p>
<p>이렇게 1000장의 이미지를 라벨링하고 학습 train, valid, test 로 나눠야함. 이건 인공지능 공부하면 알겠지만 학습,검증,테스트 데이터가 각각 필요하다. 
학습 할 때 필요한 데이터, 정답 데이터, 학습이 안된데이터 라고 생각하면 조금 쉽다.</p>
<p>이렇게 데이터를 완성했으면 YOLOv5에 학습시켜주면 된다.
이건 내 컴퓨터가 사양이 좀 부족해서 google colab을 사용했다.</p>
<p>YOLOv5 공식홈페이지 들어가면 학습방법이 적당히 설명되어있으니 하고싶으면 직접하시길... 이걸보고 누가 따라하진 않겠지만
<img src="https://velog.velcdn.com/images/100-heon/post/8df91358-fca0-454f-99ed-90e809a6a984/image.png" alt=""></p>
<p>300 에폭을 돌렸다.
쉽게 얘기하면 전공책 300번을 읽게 시켰다고 하면된다.
300번 읽으면 분명 전공책을 달달 외우게 될 것이다. 얘도 그렇다.
학습하다가 화났는지 더 이상 학습안해도 된다고 지가 멈췄다.
그러면 best.pt 와 last.pt 라는 파일이 생성된다.
best.pt는 학습이 가장 잘된 것 last.pt는 마지막으로 학습이 된 것 이다
best.pt만 씀
학습 끝나고 best.pt만 가지고 사용하면 된다.
학습 된 모델을 이제 pytorch로 불러온다.
<img src="https://velog.velcdn.com/images/100-heon/post/d5bc4f2d-d03d-4126-8606-2955113e383e/image.png" alt=""></p>
<p>자세히 보면 model = 로 시작하는 줄 끝에 보면 best.pt를 불러온게 보인다.
이렇게 불러온 모델을 발로란트 게임을 실행하고 작은 스크린샷을 띄운다 여기서 찾아봐 라고 시키면
<img src="https://velog.velcdn.com/images/100-heon/post/6fd169e0-a836-4232-8273-6489f907f7b3/image.gif" alt=""></p>
<p>오른쪽 화면이 인식된 화면이다. 파란색 네모가 쳐진다.
이제 적을 인식했으니 마우스를 이동시키고 클릭시키면 완성이다.</p>
<h3 id="마우스를-이동시키는-방법은-2가지">마우스를 이동시키는 방법은 2가지</h3>
<ol>
<li>소프트웨어로 움직이기 </li>
<li>하드웨어로 움직이기</li>
</ol>
<p>1번 방법은 발로란트자체에서 막혀있어서 내 수준에서는 못할 것 같다. 하려면 게임을 뜯어야하는데 그건 이제 역공학으로 들어가니 불가.. (메모리변조의 영역..)</p>
<p>2번 방법은 코딩으로 마우스(하드웨어)를 제어하는데 하드웨어로 인식하게 하는 것이다. 이것이 가능하려면 아두이노 레오나르도 라는 제품을 사용해야 한다.</p>
<h3 id="아두이노-레오나르도">아두이노 레오나르도</h3>
<p><img src="https://velog.velcdn.com/images/100-heon/post/50916d54-2340-40eb-982f-797bbb5fcae5/image.png" alt=""></p>
<p>키보드입력이나 마우스 입력을 코드로 작동하게하고 마우스로 인식하게 해주는 제품이다.
다양한 게임들을 하다보면 채팅을 무한반복하는 사람들이 보일 것이다. </p>
<p>특히 과거 메이플스토리 자유시장.
<img src="https://velog.velcdn.com/images/100-heon/post/083d5894-d63b-472a-a529-89d30c536d35/image.jpeg" alt=""></p>
<p>저 말풍선을 계속 올리는 사람들은 아마 대부분 이걸 사용했을 것이다. 아마 옛날이라 다른 방법도 있겠지만...? 이게 제일 안전하다.</p>
<p>각설하고 이제 이어가면 어떻게 마우스를 제어하냐?
방법은 간단하다. 위에서 인식시킨 객체의 파란 네모박스는 거의 일정하게 그려진다.
그 네모안에서 적의 머리에 해당하는 좌표를 계산하면 됩니다.
<img src="https://velog.velcdn.com/images/100-heon/post/9d12b21c-786f-4e5d-8770-37635d08d64d/image.png" alt=""></p>
<p>xim,xmax,ymin,ymax는 네모의 네개의 꼭지점의 좌표로 이걸 이용해서 머리에 해당하는 좌표를 계산하면 된다. 코드 참고.
그리고 아두이노로 보내주면 된다. </p>
<p>아두이노 코드는 생략하겠습니다. 그냥 받은 좌표를 조금씩 이동하면서 도착하면 클릭하게 하면 됩니다.
너무 자세하게 적으면 문제가 될 수도 있으니...??</p>
<h3 id="결과">결과</h3>
<p><img src="blob:https://velog.io/771c2a6d-5987-4865-94bf-ec462e5df3ae" alt="업로드중.."></p>
<p>마치며
글은 되게 짧고 쉽게 말했지만 힘들었다. 제작하는데 2달정도 걸렸습니다. 블로그 쓰면서 정보를 많이 찾아봤는데 대부분 에임핵을 판매하고 있었다. (핵은 나빠요)
이상 코린이의 에임핵 제작기였습니다.</p>
<p>여담)
요새 이미지를 생성해주는 많은 모델이 개발되면서 세상에 정말 많은 데이터가 쏟아지고 있다. 대학원을 가게되었기에 나중에 데이터가 쌓이게 되어 내가 일을 시작할 때에는 많은 데이터로 재밌게 뭔가를 제작하고 싶다.</p>
<p><strong>ps) 2022년 말 졸업작품으로 제작한 프로그램입니다. 이 글도 네이버에 작성한 걸 가져온 내용입니다. 현재는 yoloV11이 나와서 벌써 이게 옛날모델이 되어버렸네요....그럼 20000</strong>       <strong>:)</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[옛날메이플 인공지능 사냥]]></title>
            <link>https://velog.io/@100-heon/%EC%98%9B%EB%82%A0%EB%A9%94%EC%9D%B4%ED%94%8C-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-%EC%82%AC%EB%83%A5</link>
            <guid>https://velog.io/@100-heon/%EC%98%9B%EB%82%A0%EB%A9%94%EC%9D%B4%ED%94%8C-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-%EC%82%AC%EB%83%A5</guid>
            <pubDate>Thu, 15 Aug 2024 08:32:12 GMT</pubDate>
            <description><![CDATA[<p>요즘은 아니지만 작년 말 부터 옛날 메이플스토리가 유행하더군요...
사실 저는 옛날 메이플을 유학생 때 조금 즐기곤 했는데 제가 거주하던 국가에서는
핵사용이 거의 합법인 수준인 지라 안쓰는 사람이 없었습니다.. 외국인인 저까지...</p>
<p>각설하고.. 옛날 메이플을 해보다가 재밌는 생각이 들어 제작을 해보기로 했습니다..
하지만 저는 간이 작기 때문에 코드를 구현하고 작동만 확인하고 사용은 하지 않았습니다..!</p>
<h1 id="process">Process</h1>
<p>적이 나타나면 범위에 도달하여 스킬을 사용합니다. 사람도 그렇게 사냥을 하죠?
하지만 이 작업을 실제로 구현할려고 하니 많이 복잡했습니다.</p>
<h1 id="객체탐지">객체탐지</h1>
<p>적을 탐지하고 위치를 알기 위해선 객체탐지 (object detection)이 되어야 합니다.
따라서 우리는 모델을 골라야합니다.</p>
<h3 id="yolov8">YOLOv8</h3>
<p>이미 잘 작동하고 object detection 에서는 goat인 yolo를 사용했습니다.
게임상의 적은 다양한 움직임을 보이지 않기에 20장 이내의 사진으로도 충분했습니다.
<img src="https://velog.velcdn.com/images/100-heon/post/f8320c64-124c-4532-9031-4eb2119b79ab/image.png" alt=""></p>
<p>작고 빠른 모델인 YOLOv8s을 사용했습니다.
n은 학습이 잘되지 않았습니다.</p>
<p>학습과정은 검색하면 잘 나오니 넘어가고...</p>
<p>저는 적과 나의 거리가 특정 거리 이내면 키를 입력하게 하였습니다.</p>
<p><img src="https://velog.velcdn.com/images/100-heon/post/0b74738b-7ab6-48d8-ab30-c530fdba2441/image.png" alt="">
원래는 재 케릭터 객체도 학습 하려했지만 보통 자신의 캐릭터는 중앙에 있기에 중앙저을 기준으로 객체의 거리를 계산하였습니다.</p>
<p>용기사 캐릭이기에 드래곤로어를 사용하도록 하였습니다.</p>
<p><img src="https://velog.velcdn.com/images/100-heon/post/8c4b1f06-4773-43a0-9fe1-a683ce2cd7d9/image.gif" alt=""></p>
<p>적과의 거리를 계산한다거나 하는 아주 기초적인 내용은 모두 뺐습니다.</p>
<p>사실 인공지능을 적용한다면 이정도 작업이 가능하다는 것으 보여드리고 싶었습니다.</p>
<p>추 후 절대 사용하지 않았습니다. 사용하더라도 어차피 이 월드는 매크로가 대부분이라고 하더라구요..
거짓말탐지기도 존재하기도 합니다.</p>
<p>그러나 거짓말탐지기 또한 인공지능을 사용한다면 쉽게 해결할 수 있긴 할 겁니다...ㅎ...</p>
<p>이상 아주 간단한 인공지능사냥툴 제작기였습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AIcrowd Amazon KDD Cup 24: Shopping Knowledge Reasoning 본선 후기]]></title>
            <link>https://velog.io/@100-heon/AIcrowd-Amazon-KDD-Cup-24-Shopping-Knowledge-Reasoning-%EB%B3%B8%EC%84%A0-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@100-heon/AIcrowd-Amazon-KDD-Cup-24-Shopping-Knowledge-Reasoning-%EB%B3%B8%EC%84%A0-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Thu, 15 Aug 2024 07:08:01 GMT</pubDate>
            <description><![CDATA[<p>앞서 대회를 마무리하고 후기를 남겼는데요...</p>
<p>본선에 진출을 했습니다..?!</p>
<p><img src="https://velog.velcdn.com/images/100-heon/post/e0a0ad99-ac3a-41d3-8e89-33b33dcec84f/image.png" alt=""></p>
<p>baseline인 클로드보다 더 좋은 성적이 나온 팀들은 모두 본선으로 갔습니다..</p>
<p>본선도 똑같이 파인튜닝을 해야할 것 같은데 성능이 더 업그레이드 됐습니다.</p>
<ol>
<li><p>T4 gpu가 4개로 2배 업그레이드 됐습니다.</p>
</li>
<li><p>vLLM을 적용할 수 있습니다. batch perdiction</p>
</li>
</ol>
<p>하지만 이 부분에서 저희는 절망할 수 밖에 없었습니다..</p>
<h1 id="t4-gpu-4개">T4 GPU 4개</h1>
<p>제공해준 GPU &gt; 서버 GPU
따라서 infernce를 하기 위해선 모델을 학습을 시켜야하지만 서버가 더 좋지않기에
제공해준 gpu를 최대롤 사용할 수 없었습니다... 그래서 점수는 바닥을 쳤습니다...
최종 점수 0.3 점....</p>
<p>네... 이렇게 어이없이 끝나게 되었습니다..ㅠ....
문제를 푸는데 20분으로 시간제한이 풀렸지만.. 저희의 최대모델로는 2분만에 inference 하긴 했으나..
속도가 중요한 것이 아니기에..
<img src="https://velog.velcdn.com/images/100-heon/post/eeebf3f9-eda1-4983-993e-ddb5278dfda6/image.png" alt="">
508팀중 최종 43등을 하였습니다.</p>
<p>이상.. 진짜 대회 후기였습니다...</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AIcrowd Amazon KDD Cup 24: Shopping Knowledge Reasoning 대회 준비 과정(3)]]></title>
            <link>https://velog.io/@100-heon/AIcrowd-Amazon-KDD-Cup-24-Shopping-Knowledge-Reasoning-%EB%8C%80%ED%9A%8C-%EC%A4%80%EB%B9%84-%EA%B3%BC%EC%A0%953</link>
            <guid>https://velog.io/@100-heon/AIcrowd-Amazon-KDD-Cup-24-Shopping-Knowledge-Reasoning-%EB%8C%80%ED%9A%8C-%EC%A4%80%EB%B9%84-%EA%B3%BC%EC%A0%953</guid>
            <pubDate>Thu, 23 May 2024 07:02:05 GMT</pubDate>
            <description><![CDATA[<p>학습에 대한 내용을 적어보도록 하겠습니다.
이제 학습코드가 잘 작동하는 것을 확인했고 학습을 진행했습니다.
본 글은 후기를 적는 것이기에 코드는 제공하지는 않겠습니다..!
어차피 구글링하면 나오기도 하고 각자 수정하여 본인에 맞게 사용해야 하기에..</p>
<p>llam3-8B-bnb-4bit 모델을 사용하였습니다.</p>
<p>학습을 하려면 데이터를 그냥 넣으면 되는 것이 아니라 하나의 text로 넣어야 한다고 합니다.</p>
<p>앞서 학습데이터를 query, response 로 만들어 학습을 진행하려고 하였습니다. start_kit에 있는 데이터와 유사하게 만들기 위해 더 필요한 과정이 있습니다.
 <img src="https://velog.velcdn.com/images/100-heon/post/530043ab-5f9d-45dc-8cb0-4d02fb465878/image.png" alt=""></p>
<p>먼저 쿼리의 맨 밑에 Answer: 가 붙어야 할거라고 생각해 query뒤에 Answer:를 붙였습니다. 
최종적으로 query와 response를 갖게 되었습니다.</p>
<p>이제 학습에 맞게... 프롬프트를 작성해야 합니다.</p>
<h3 id="학습-프롬프트-text-만들기">학습 프롬프트 text 만들기</h3>
<p>학습에는 하나의 프롬프트만 넣어서 학습을 진행합니다.(llama3-8bit)</p>
<pre><code>df[&#39;query&#39;]=df[&#39;query&#39;].apply(lambda x: x.replace(&#39;\nAnswer:&#39;, &#39;&#39;))

df[&#39;text&#39;] = df.apply(lambda row: f&#39;&#39;&#39;&lt;|begin_of_text|&gt;
&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;
Select the most appropriate answer from the given options with following the multiple choice question. 
The options are represented as integer and end mark. 
it is important to consider options without bias from ordering because options are not related to probability.
You must choose only one of the integer options that have given. &lt;|eot_id|&gt;
&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;
question: {row[&#39;query&#39;]}&lt;|eot_id|&gt;
&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;
{row[&#39;response&#39;]}&lt;|eot_id|&gt;
&lt;|end_of_text|&gt;    &#39;&#39;&#39;, axis = 1)</code></pre><p>이런 식으로 &#39;text&#39;라는 새로운 열을 만듭니다.</p>
<p><img src="https://velog.velcdn.com/images/100-heon/post/835d6560-3471-4c8b-a58b-8481129c048f/image.png" alt=""></p>
<p>이러한 코드로 파라미터를 설정하고 text를 넣어 학습하면 됩니다.
위 코드는 이전에 작성했던거라 제가 사용한 모델은 아닙니다.! 
(수 많은 시행착오 중 하나...)</p>
<p>이렇게 학습이 다 되면 adapter  모델이 저장이 됩니다.
이모델은 베이스모델과 함께 사용이 됩니다. (우리의 베이스모델은 llama3)</p>
<p>사실 학습이 되었고 문제를 input으로 넣었더니 답을 내기는 하는데 말이 너무 많습니다... 우리는 답하나만 출력해야하는 설명을 계속합니다..ㅠ...
아무리 프롬프트를 수정해도 되지않아 출력에 정규식을 사용하였습니다.</p>
<pre><code>match = re.search(r&#39;\d&#39;, prompt.split(&quot;assistant\n&quot;)[1])
        if match:
            return str(match.group())</code></pre><p>assitant라는 출력을 기준으로 나누고 처음으로 나온 숫자를 str로 변환하여 뱉어내는 것으로 적용하였습니다..ㅎㅎ
(이건 야매이지 않을까 싶지만.. 시간이 없었습니다...ㅠㅠㅠ)</p>
<p>그리고 local_evaluation 코드를 돌려보니 0.79점이 나왔습니다..!</p>
<p>실제 점수도 아니고 몇문제 안되는 것이었지만 1점이 만점이라 엄청 좋은 점수가 나와서 기뻤습니다. leaderboard에서의 1위 기록이 0.791점이었기에..</p>
<p>이제 신나서 제출을 하려했으나 제출이라는 벽에 막혔습니다..</p>
<h3 id="최종보스--제출">최종보스:  제출</h3>
<p>제출을 하는 과정은 간단합니다.
start_kit gitlab을 
fork-&gt; clone -&gt; 수정 -&gt; add ,commit, push 하면 됩니다.</p>
<p>git은 이미 많이 다뤄봤기에 문제가 없어서 제출을 했는데... failed,
log을 찾아보니 requirements를 수정하지 않았더군요... </p>
<p><img src="https://velog.velcdn.com/images/100-heon/post/cd6ceaf6-a3b8-4049-b3d2-13ad9e327dbb/image.png" alt=""></p>
<p>그래서 계속 수정하고 제출 수정하고 제출을 반복했는데 너무 비효율적이라고 생각이 되어 QnA를 찾아보니 start_kit에 docker_file을 먼저 실행하고 제출을 하라더군요....!
<img src="https://velog.velcdn.com/images/100-heon/post/3b7a460e-71bd-407c-8f0a-939149e228b2/image.png" alt="">
이 과정이 거의 4~5일이 걸린 것 같습니다...
requirements 파일과 dockerfile을 수정하여 환경을 완벽하게 구성하였습니다. 이제는 되겠지...
하지만 역시 failed...
이유를 찾아보니 제가 사용하는 gpu는 rtx40490인데 제출환경은 a100을 사용하여 dtype이 맞지 않는다고 하였습니다.</p>
<p>제가 사용한 모델의 config.json을 보니 dtype이 bfloat16으로 되어있어서 float16으로 변경하였더니 드디어 제출이 되었습니다...
<img src="https://velog.velcdn.com/images/100-heon/post/a8f561c9-c465-4c67-a860-dd1dd00353b7/image.png" alt=""></p>
<p>드디어 제출..!
<img src="https://velog.velcdn.com/images/100-heon/post/5693c7ea-52f0-4dc6-b675-4aacf32ef63a/image.png" alt="">
총 4단계로 제출이 진행되는데 맨앞 환경 구성에 3일 정도 사용하였습니다...
제발 다음단계만 넘어가자고 했고 requirement를 수정하고 docker를 수정하면서 넘어갔습니다..! 사진상으론 몇초지만 사실 일주일 동안 저기서 막혔었습니다...ㅠ
<img src="https://velog.velcdn.com/images/100-heon/post/15e29dea-fe53-4933-83e9-abf45736738c/image.png" alt="">
넘어가자마자failed... 웹오류로 failed이라는 글자는 안떴지만 빨간색은 failed 입니다. 환경은 구성이 됐지만 dtype과 dockerfile을 더 수정해야했습니다. python 버전과 cuda버전 수정..</p>
<p><img src="https://velog.velcdn.com/images/100-heon/post/b6dc627c-0730-4cd2-8ac2-bb027e677ef1/image.png" alt=""></p>
<p>드디어 모든 에러를 잡고 넘어갔습니다. 여기까지 온다면 다 된 것입니다..ㅠ... 제한시간은 40분이라고 하고 1229개의 문제를 40분안에 출력해내면 됩니다. 개당 2초 안쪽이면 됐고 제가 튜닝한 모델은 개당 0.4초가 걸렸습니다..!
<img src="https://velog.velcdn.com/images/100-heon/post/be0a916b-867d-4c53-96a9-912815161fe5/image.png" alt="">
최종적으로 올라갔고 지금보니 100등 이더군요... 
사실 더 낮은 점수였었는데 학습 안한걸 올렸더군요..ㅎ..</p>
<p>성공의 제출은 일주일에 최대 3번까지 가능해서 마지막으로 학습을 한번 더 해서 제출을 했습니다.</p>
<h3 id="최종-결과">최종 결과</h3>
<p><img src="https://velog.velcdn.com/images/100-heon/post/c4d1548d-d1d5-4af1-ab81-4ce837b55057/image.png" alt=""></p>
<p>최종적으로 등수는 86등으로 마무리했습니다..! 참가팀은 총 508팀으로 
그중 86등을 한 것에 매우 만족합니다...</p>
<p>글을 매우 중구난방으로 작성한 것 같습니다... 사실 이 대회를 기록하기 위해 만든 블로그이기도 한데... 앞으로 다른 글은 더 이쁘게 작성해보겠습니다.</p>
<p>사실 대회를 준비하는 것도 많이 중구난방이었고 더 정신없이 진행했고 복잡한 부분을 빼고 그랬기에 더 정신없는 글이 된 것 같습니다...
여튼 그래도 처음엔 제출에 의미를 뒀었는데 나름 좋은 성적(?)까지 나온 것 같아서 매우 의미있고 많은걸 배운 대회였습니다!!</p>
<p>fin</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AIcrowd Amazon KDD Cup 24: Shopping Knowledge Reasoning 대회 준비 과정(2)]]></title>
            <link>https://velog.io/@100-heon/AIcrowd-Amazon-KDD-Cup-24-Shopping-Knowledge-Reasoning-%EB%8C%80%ED%9A%8C-%EC%A4%80%EB%B9%84-%EA%B3%BC%EC%A0%952</link>
            <guid>https://velog.io/@100-heon/AIcrowd-Amazon-KDD-Cup-24-Shopping-Knowledge-Reasoning-%EB%8C%80%ED%9A%8C-%EC%A4%80%EB%B9%84-%EA%B3%BC%EC%A0%952</guid>
            <pubDate>Thu, 23 May 2024 06:04:37 GMT</pubDate>
            <description><![CDATA[<p>후기 2탄..
지난 후기는 모델선정하는 과정(?) 을 적었는데 이번엔 대회에서 원하는 출력이 무엇인지 알아보고 튜닝에 필요하는 학습데이터셋을 알아보도록 하겠습니다.</p>
<p>대회에서 starter kit을 제공하여서 열어보니 예시 문제가 있었습니다.
evaluation을 하기 위한 local_evaluation.py 가 존재하고 
이 파일을 열어보니 data 폴더 안의 development.json을 불러오고 있었습니다.
<img src="https://velog.velcdn.com/images/100-heon/post/44112d4b-2696-47fb-929c-80b552af76c2/image.png" alt=""></p>
<h3 id="developmentjson">development.json</h3>
<p><img src="https://velog.velcdn.com/images/100-heon/post/247e4e68-b205-400f-a79a-9697be37f986/image.png" alt=""></p>
<p>이 파일을 열어보니  5개 track에 관한 문제가 있었습니다.
<img src="https://velog.velcdn.com/images/100-heon/post/43cc8ca7-0a52-4fa5-90a4-bc0441eebecb/image.png" alt="">
마지막 열에 해당하는 것이 track 이고 
제가 참가한 건 shopping knowledge reasoning 이기에
필터링 하면
<img src="https://velog.velcdn.com/images/100-heon/post/f600a1c3-690a-4edf-a413-e6f1cb56fac5/image.png" alt="">
이런 문제가 총 16개 있었습니다.
input_filed가 제대로 보이지 않아서 출력해보면
<img src="https://velog.velcdn.com/images/100-heon/post/d52e6521-8209-4bb6-8344-0131da378ead/image.png" alt="">
이러한 문제가 있었습니다.</p>
<p>여기서 중요하게 본 부분은 input_filed에 문제, 보기, answer: 이 3가지가 존재한 것을 발견하였습니다.</p>
<p>또한 위에서 output_field가 숫자 하나만 뱉어내기에 이것도 중요한 부분인 것 같습니다.</p>
<h3 id="학습방법">학습방법</h3>
<p>학습의 자세한 방법은 구글링 하면 잘 나오니.. 그건 패스하고
파인튜닝을 하기위해 query와 response만으로 학습을 하려고 합니다.
query는 앞에서 예시 문제처럼
문제, 보기, 마지막에 answer:를 붙여서 query로 넣고 response는 
문자(숫자지만 str로 되어있었음) 1개를 넣어 파인튜닝하였습니다.</p>
<p>학습을 위한 프롬프트 세팅은 학습하는 단계에서 설명하겠습니다..! </p>
<h3 id="학습데이터-구하기">학습데이터 구하기</h3>
<p>모든 데이터는 huggingface에서 구했습니다.
multiple choice 문제가있고 그것에 대한 대답으로 이루어진 데이터를 찾아보았으나 당연히 없었습니다.. (날로먹기 실패)
그래도 비슷한 건 있었습니다.<img src="https://velog.velcdn.com/images/100-heon/post/8fc899fe-6c94-481c-b1ae-748c5b608f07/image.png" alt="">
Problem, option, correct 등등 이루어진 데이터셋이었는데
이걸 원하는 형태로 변형하면 됩니다. 이러한 데이터셋을 모아서 10만 행을 가진 데이터셋을 만들었습니다. </p>
<p>원래 분할해서 학습을 하려했으나...실패하였습니다. 이건 학습하는 과정 보일 때 설명하겠습니다...ㅠ..</p>
<p>최종적으로 수학데이터셋, 감성데이터셋, 쇼핑데이터셋으로 학습을 진행하였습니다. 시간이 없어서 많이는 못했습니다...</p>
<p>여튼 이런 방법으로 query 와 response로 학습을 하면 됩니다. 참 쉽죠.......
말은 진짜 쉬운데 막상 코드와 데이터를 다루는 순간 수백가지의 에러를 보게 될 것입니다. LLM 파인튜닝은 참... 번거롭고 힘드네요...
학습이 끝나면 그냥 model.pt 나오면 얼마나 좋습니까... 
이상한 .json , .safetensors등.. 당황했지만 이제는 친숙해졌습니다..ㅎ</p>
<p>이렇게 학습이 된걸 model 폴더에 넣고 파이썬 파일들을 수정하여 불러옵니다. 
<img src="https://velog.velcdn.com/images/100-heon/post/6b481416-c596-477f-9c9f-fbbe5e7d3dde/image.png" alt=""></p>
<p>출력을 생성하는 predict함수만 제대로 작성해서 제출하면 됩니다. predict함수는 ground_truth와 비교하기 위한 최종출력단 이라고 생각하면 됩니다.
이제 학습 방향까지 정했으니 학습을 하고 검증해서 제출하면 되겠죠?</p>
<p>이떄까지는 몰랐습니다. 제출이 가장 어렵다는걸........</p>
<p>(3)에서 계속... 투비 칸티뉴ㄷ..</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AIcrowd Amazon KDD Cup 24: Shopping Knowledge Reasoning 대회 준비 과정(1)]]></title>
            <link>https://velog.io/@100-heon/AIcorwd-Amazon-KDD-Cup-24-Shopping-Knowledge-Reasoning-%EB%8C%80%ED%9A%8C-%EC%A4%80%EB%B9%84-%EA%B3%BC%EC%A0%951</link>
            <guid>https://velog.io/@100-heon/AIcorwd-Amazon-KDD-Cup-24-Shopping-Knowledge-Reasoning-%EB%8C%80%ED%9A%8C-%EC%A4%80%EB%B9%84-%EA%B3%BC%EC%A0%951</guid>
            <pubDate>Tue, 21 May 2024 04:55:36 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/100-heon/post/26fe4801-889d-4e72-ae37-5d1cdfeba347/image.png" alt=""></p>
<p>아마존에서 주최한 LLM을 활용하여 여러 task를 푸는 대회에 참가하였습니다..</p>
<p>track이 총 5개가 있습니다.
<img src="https://velog.velcdn.com/images/100-heon/post/a6127b30-5840-4f44-8433-439197a8dcf8/image.png" alt=""></p>
<p>그 중 제가 참가한 대회는 track2:Shopping Knowledge Reasoning  입니다..!</p>
<p><a href="https://www.aicrowd.com/challenges/amazon-kdd-cup-2024-multi-task-online-shopping-challenge-for-llms/problems/amazon-kdd-cup-24-shopping-knowledge-reasoning">https://www.aicrowd.com/challenges/amazon-kdd-cup-2024-multi-task-online-shopping-challenge-for-llms/problems/amazon-kdd-cup-24-shopping-knowledge-reasoning</a></p>
<p>자세한 내용은 위 링크 참고해주세요!</p>
<p>이런 문제를 풀어야한다고 합니다.
<img src="https://velog.velcdn.com/images/100-heon/post/6593913e-8048-461a-83df-dad7927d9709/image.png" alt=""></p>
<p><strong>이 문제의 요구사항</strong>
<img src="https://velog.velcdn.com/images/100-heon/post/e19ae6c7-2e3f-493b-8760-938b8bbb7b39/image.png" alt=""></p>
<p>요구사항을 요약하면
<strong>1. 수학을 잘해라
2. 상식을 챙겨라
3. 생각을 하라</strong></p>
<p>이제 않을까 싶습니다..ㅎ</p>
<h2 id="학습-전-해야-할-것들">학습 전 해야 할 것들</h2>
<ol>
<li>LM 모델 선정하기</li>
<li>학습 방향 설정하기</li>
<li>학습 데이터 정하기</li>
</ol>
<p>정도가 있겠습니다.</p>
<h2 id="1-lm-모델-선정하기">1. LM 모델 선정하기</h2>
<p>대회가 주최된 시점의 전후로 모델이 쏟아져 나오기 시작했습니다...
gemma, llama3, openELM 등등</p>
<p>다들 자기가 최고라고 논문을 내니 그냥 써보는 수밖에 없었습니다.ㅠㅠㅠ</p>
<p>저희 서버 사양은 <img src="https://velog.velcdn.com/images/100-heon/post/910c727a-c1e0-4323-8ed5-008cb0c117fe/image.png" alt=""></p>
<p>4090 24기가 gpu 6개를 갖고 있습니다. 사양은 충분하니 gemma 7B 모델 부터 학습을 하려 합니다. 학습을 연습하기 위해 gemma의 colab내용을 가져와서 서버에서 돌려보았습니다. </p>
<p><strong>그런데..... OOM.......</strong></p>
<p>cuda out of memory가 떠서 보니 6개 gpu가 잘 사용되고 있으나 첫번째 gpu가 oom이 발생하여 트레이닝이 멈췄습니다... 병렬처리를 하려고 해도 gemma는 방법이 따로 있는건지 수많은 에러 때문에 포기하였습니다...</p>
<blockquote>
<p>ps. 시간이 지나고보니 추론보다 학습에서 메모리 로드율이 3~5배까지 필요하다고 합니다. 144GB 라면 70B 모델의 추론은 가능하지만 학습은 불가능 </p>
</blockquote>
<p>그래서 2B모델로 낮춰서 진행하였습니다.
학습 코드를 이해하는 것도 일이기에.... 1주일정도 소모한듯 합니다. 
(사실 그냥 인자만 대충 바꿔서 하면 되긴 하지만 그러기엔 뭔가 아쉬워서)</p>
<h4 id="학습을-진행하는데-또-oom이-발생하였습니다">학습을 진행하는데 또 OOM이 발생하였습니다...</h4>
<p>진짜 OOM........
이번엔 이 모델까지 안되면 대회를 포기하자고 했으나 또 며칠은 파라미터를 수정하면서 학습하는데 시간을 할애하였습니다.
결국 batch_size와 gradient를 최소로 잡고 학습하였더니 진행이 되긴했습니다. 
하지만 학습결과가 너무 좋지않았습니다.....ㅠ 엉뚱한 말을 하기도하고 답을뱉어도 틀리기만 합니다.. 말이라고 보기도 어려운 요상한 문자들....</p>
<p>정말 수백번 에러에 뚜드러 맞고보니 2주가 남았습니다..  거의 2주동안 미친듯이 코드 공부하고 이제 어떤모델도 학습을 할 수 있게 되었는데 결과가 너무 안좋아서 제출도 하지 않았습니다...
unsloth 에서 제작(?)한 llama3_8b_bnb_4bit 모델을 발견하였습니다. 
<img src="https://velog.velcdn.com/images/100-heon/post/69ae826c-7a14-43e8-9f0e-8e879c2fa49e/image.png" alt="">
학습하는데 메모리를 70%를 줄여준다..?! 
-&gt; 바로 사용해보자
사용 결과 GPU 1개로 10GB만 사용해서 학습이 가능했습니다..!
unsloth 최고... 
학습이 잘되는 것이 확인 됐으니 이제 박차를 가할 수 있게 되었습니다.!!</p>
<p><del><strong>LLM 모델 선정하기</strong></del></p>
<p>모델이 선정되었습니다....!
unsloth/llama3-8b-bnb-4bit</p>
<p>13b 정도 모델이 있으면 좋겠지만 없었네요...</p>
<p>이 과정이 약 3~4주 정도 진행 한 것 같습니다... 
data science lab에서 공부를 하는 거라 LLM이 전공은 아니지만
data 는 결국 LLM과도 연관되어 있다고 봐도 무방하기에 LLM에 도전해보았습니다.</p>
<p>다음 편은 대회에서 요구하는 출력이 무엇인지 확인해 보고 학습 방향을 설정했던 과정을 풀어보겠습니다..!</p>
]]></description>
        </item>
    </channel>
</rss>