프랑스의 AI 스타트업인 미스트랄이 현지 시간으로 6월 5일, 개발자와 기업이 특정 사용 사례에 맞추어 AI 모델을 미세조정할 수 있도록 하는 "맞춤형 모델 제작 서비스"를 출시했다고 합니다.
https://www.aitimes.com/news/articleView.html?idxno=160377
제 입장에서는 해당 서비스보다 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을 사용하여 모델을 미세 조정하기 위해서는 다음의 순서를 따라 진행할 수 있습니다.
(상세한 내용은 깃허브에서 직접 확인하실 수 있습니다.)
- 저장소 복제 ( $ git clone https://github.com/mistralai/mistral-finetune.git )
- 필요한 모든 종속성 설치 ( $ pip install -r requirements.txt )
- 모델 다운로드
○ 다운로드 가능 모델: 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 ) - 데이터셋 준비
○ 모든 데이터 파일은 jsonl 형식으로 저장되어야 함
○ “text” 키에 일반 텍스트 데이터가 포함되어 있어야 함 - 데이터셋 검증
○ validate_data 스크립트를 사용하여 데이터셋이 올바르게 포맷되었는지 확인하고 훈련 시간을 추정함 - 훈련 실행
○ example/7B.yaml 파일을 수정하여 훈련 및 평가 데이터셋의 절대 경로를 포함시키고, 훈련을 시작함
○ 이때 torchrun 유틸리티에 --nproc-per-node 옵션으로 사용가능한 GPU를 설정한후 훈련을 시작함
( $ torchrun --nproc-per-node 8 --master_port $RANDOM -m train example/7B.yaml ) - 추론 실행
○ 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 )
대략적으로 위와 같은 과정을 통해 모델을 다운로드하고 미세 조정하여 추론까지 진행해 볼 수 있습니다.
현실적으로 시간이 언제 날지 모르지만 저 정도의 시스템 요구사항이라면 충분히 시도해 볼만하다고 생각되네요.
'AI와 IT 이야기' 카테고리의 다른 글
기업의 AI 프로젝트 80%가 실패하고 헛돈만 날리는 이유... (14) | 2024.09.03 |
---|---|
각 국에서 논란이 되고 있는 AI 규제법 (6) | 2024.08.30 |
ChatGPT 이전에 썼던 논문의 내용을 보고.. (0) | 2024.05.08 |
Will GPT-4 run Doom? (0) | 2024.03.12 |
Google Bard에도 그림을 그려주는 기능이 추가되었다. (0) | 2024.02.02 |