본문 바로가기



AI와 IT 이야기

Mistral-Finetune

프랑스의 AI 스타트업인 미스트랄이 현지 시간으로 6월 5일, 개발자와 기업이 특정 사용 사례에 맞추어 AI 모델을 미세조정할 수 있도록 하는 "맞춤형 모델 제작 서비스"를 출시했다고 합니다.

 

https://www.aitimes.com/news/articleView.html?idxno=160377

 

미스트랄, 모델 미세조정 지원하는 SDK·API 출시 - AI타임스

프랑스 인공지능(AI) 스타트업 미스트랄이 개발자와 기업이 특정 사용 사례에 맞춰 AI 모델을 미세조정할 수 있도록 하는 \'맞춤형 모델 제작 서비스\'를 출시했다. 미국 본격 진출에 맞춰 온프레

www.aitimes.com

 

제 입장에서는 해당 서비스보다 SDK, API에 더 눈길이 가는군요.

아무래도 LLM이라는 기술이 보편화되면서 스타트업을 포함하여 많은 기업들이 LLM을 이용한 새로운 서비스를 개발, 출시하고 있으니 나도 관련 기술을 익혀야 할 것 같은데... 솔직히 시스템적인 부분이나 비용적인 측면때문에 쉽게 접근하기 어려운 것이 사실입니다.

OpenAI의 API를 활용할 경우 호출 횟수, 호출 시 사용된 토큰 수 등에 따라 과금이 이루어지는데.. 상용 서비스를 통해 수익을 내는 상황이 아니라면 해당 비용도 무시하긴 어렵거든요.

그래서 오픈소스 진영에서 무료, 또는 저렴한 비용으로 사용할 수 있는 API 등이 나오지 않을까.. 기다리고 있었는데 이번에 공개한 Mistral-Finetune은 일단 무료로 사용할 수 있다고 하네요.

언제 어떻게 정책이 바뀔지는 모르겠지만 현재 시점에서는 Apache 2.0 라이센스를 따른다고 하니 당분간은 큰 무리없이 사용할 수 있을 것 같습니다.

 

Mistral-Finetune은 다음의 깃허브를 통해서 무료로 사용할 수 있습니다.

 

https://github.com/mistralai/mistral-finetune

 

해당 깃허브에서는 Mistral의 모델을 미세 조정(Finetune)하기 위한 코드베이스인 mistral-finetune에 대해 설명하고 있으며, 모델 훈련, 데이터 준비, 훈련 구성 및 추론 테스트에 대한 지침을 제공하고 있습니다.

 

먼저 주요 사항을 살펴보면 Mistral-Finetune은

  • LoRA(Low-Rank Adaptation) 기반: 대부분의 가중치를 고정시키고, 낮은 순위의 행렬 변형을 통해 추가적인 1-2%의 가중치만을 훈련시키는 LoRA 훈련 패러다임을 기반으로
  • GPU 요구사항: A100 또는 H100 GPU 사용을 권장하며, 다중 GPU 단일 노드 훈련 설정에 최적화되어 있음. 그러나 7B 모델과 같은 소형 모델의 경우 단일 GPU로도 충분
  • 데이터 형식: 훈련 데이터는 반드시 json 형식의 파일로 저장되어야 함
  • 훈련 검증: validate_data 스크립트를 사용하여 데이터셋이 올바르게 형식화되었는지 확인하고 훈련 시간을 추정할 수 있음

과 같은 기준을 따르고 있습니다.

 

Mistral-Finetune을 사용하여 모델을 미세 조정하기 위해서는 다음의 순서를 따라 진행할 수 있습니다.
(상세한 내용은 깃허브에서 직접 확인하실 수 있습니다.)

  1. 저장소 복제 ( $ git clone https://github.com/mistralai/mistral-finetune.git )
  2. 필요한 모든 종속성 설치 ( $ pip install -r requirements.txt )
  3. 모델 다운로드
    다운로드 가능 모델: 7B Base V3, 7B Instruct V3, 8x7B Base V1, 8x7B Instruct V1, 8x22 Instruct V3, 8x22B Base V3
    ○ 필요 시( 8x7B Base V1, 8x7B Instruct V1 ) 토크나이저 확장(어휘 크기를 32,768로 확장) 
    ○ 7B Base V3을 다운로드 하는 경우: ( $ wget https://models.mistralcdn.com/mistral-7b-v0-3/mistral-7B-v0.3.tar )
  4. 데이터셋 준비
    ○ 모든 데이터 파일은 jsonl 형식으로 저장되어야 함
    ○ “text” 키에 일반 텍스트 데이터가 포함되어 있어야 함
  5. 데이터셋 검증
    ○ validate_data 스크립트를 사용하여 데이터셋이 올바르게 포맷되었는지 확인하고 훈련 시간을 추정함
  6. 훈련 실행
     example/7B.yaml 파일을 수정하여 훈련 및 평가 데이터셋의 절대 경로를 포함시키고, 훈련을 시작함
     이때 torchrun 유틸리티에 --nproc-per-node 옵션으로 사용가능한 GPU를 설정한후 훈련을 시작함
       ( $ torchrun --nproc-per-node 8 --master_port $RANDOM -m train example/7B.yaml )
  7. 추론 실행
    ○ mistral_inference 설치 ( $ pip install mistral_inference )
    ○ 모델 경로 설정
        예시) lora.safetensors 파일이 $HOME/ultra_chat_test/checkpoints/checkpoint_000300/consolidated
                  /lora.safetensors에 저장되어 있다고 가정
    ○ 추론 실행 : 다음 명령으로 모델과 상호작용하며, 채팅을 생성함
        ( $ mistral-chat /mnt/slow/runs/patrick/mistral-finetune/7B/ --max_tokens 256 --temperature 1.0 --instruct --
              lora_path $HOME/ultra_chat_test/checkpoints/checkpoint_000300/consolidated/lora.safetensors )

대략적으로 위와 같은 과정을 통해 모델을 다운로드하고 미세 조정하여 추론까지 진행해 볼 수 있습니다.

그림: MS Designer Image Creator로 직접 그림

 

현실적으로 시간이 언제 날지 모르지만 저 정도의 시스템 요구사항이라면 충분히 시도해 볼만하다고 생각되네요.

반응형