ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [따라해보는 LLM 파인 튜닝] 1. 서버 환경 설정 - Runpod, WandB, Axolotl
    공부/LLM 2024. 5. 7. 23:41

    1. Axolotl

    • 깃허브
    • LLM 모델을 학습시킬 때 가장 흔히 사용되는 툴인 것 같다.
    • config 파일인 yaml 파일만 잘 만들고, 데이터와 모델, 환경 설정만 잘 해주면 알아서 적절하게 학습을 시켜준다.
    • 비슷한 기능을 하는 툴로 unsloth, Llama-Factory, 아니면 허깅페이스의 trl을 쓸 수도 있다.
      아직 자세한 차이는 모르겠다.
      • Pytorch와 transformers 라이브러리로 직접 학습 코드를 짜도 되지만,
        멀티 GPU나 로깅, 메모리 최적화 정도의 차이가 있는 듯.

    2. Runpod로 클라우드 GPU를 할당받기

    • Runpod 홈페이지에서 회원가입 하고, 돈을 충전한다(생략)
    • Axolotl 깃허브에서 Runpod용 템플릿을 제공하고 있다.
      •  
        https://github.com/OpenAccess-AI-Collective/axolotl
    • Runpod에서 적절한 GPU 종류와 갯수를 선택한다.
      • 멀티 GPU 학습이 돌아가는 모습을 보고 싶어서, 2개 이상의 GPU를 할당 받으려고 했다.
      • A100이 좋긴 할텐데, 일단 어떤 에러가 발생해서 쌩돈(?)이 나갈 지 모르니 상대적으로 저렴한 A6000을 선택했다.
      • Runpod에서 제공하는 GPU 목록(아래에 더 많이 있음)
      • 상단에 server 종류가 Secure Cloud면 10%정도 더 비싸다! 모델이나 데이터가 보안에 민감한 게 아니라면, Community Cloud를 체크하자. 자세한 차이는 여기로.
        • Pods are available in two different types: Secure Cloud and Community Cloud. The Secure Cloud runs in T3/T4 data centers providing high reliability and security, while the Community Cloud connects individual compute providers to consumers through a vetted, secure peer-to-peer system.
    • Pod Name 설정하고, axolotl-runpod 템플릿이 맞는지 확인하고, Deploy On-Demand로 시작한다.
      • 스샷에는 GPU Count가 1로 되어있는데, 실제로는 2개로 진행하였다
    • Pods 탭을 누르면 초기화 작업이 진행 중인 pod이 뜬다. 아래와 같은 모습으로 바뀌면 초기화 완료.
      • 저 Pod은 지금 학습이 진행 중이라 GPU와 메모리를 쓰고 있다.
    • Connect - Web Terminal을 통해 터미널에 접속할 수 있다.

    3. (옵션) 로그 확인을 위해 WandB 세팅하기

    • WandB는 MLOps 툴로, 데이터와 모델, 프로젝트를 관리할 수 있다.
    • 기본 버전은 무료다(중요).
    • Axolotl에서 WandB를 이용한 로깅을 지원한다(중요).
    • WandB 세팅을 해놓으면 GPU 서버에 접속하지 않고도 wandb에서 학습 진행 상황 로그를 확인할 수 있다.

    Axolotl에서 기본적으로 learning rate, loss, global step, 그 외에도 시간당 step 수 등의 로그를 생성시켜준다.

    3.1. wandb 프로젝트 생성

    • Eunbin Park님의 WandB-가입-및-사용방법을 보고, 설치 까지 따라 진행했습니다.
    • 회원가입 하고, 프로젝트를 생성한다.
    • 이후 생성되는 API 키를 받아놓는다.

    3.2. wandb 초기화

    • axolotl 템플릿에는 wandb가 깔려 있기 때문에, 바로 wandb login을 입력하여 초기 설정을 할 수 있다.
    • 앞서 받아놓은 API 키를 입력한다.
    • 설정 끝! 나머지는 Axolotl이 알아서 해준다.

    4. Axolotl 설치

    apt update
    
    curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash  
    apt install git-lfs  
    git lfs install
    
    git clone https://github.com/OpenAccess-AI-Collective/axolotl
    cd axolotl
    
    pip3 install packaging ninja  
    pip3 install -e '.[flash-attn,deepspeed]'
    • 이제 Axolotl의 yaml 파일만 작성하면 모델을 학습시킬 수 있다.
Designed by Tistory.