Lora with MLX
목표: 애플 실리콘으로 local LLM을 구축하자
사용 도구
mistral
Mistral-7B-v0.1
4bit 양자화
MLX
https://ml-explore.github.io/mlx/build/html/index.html
M1 Pro 16G
작업
양자화
mistral 7B의 4bit 변환: 30분 미만 소요
파인튜닝
Lora
apple이 제공한 데이터셋 1000개(WikiSQL에서 퍼온 데이터 https://github.com/ml-explore/mlx-examples/tree/main/lora/data)
데이터 준비 특이사항: 반드시 jsonl의 사전에 정해진 포맷으로 맞춰야 함
애플이 제공한 예제의 기본값으로 파라미터 설정
batch size: 4
iteration: 600
lora layer: 16
등등…
소요시간: 5시간
주의: 파인튜닝과 다른 작업(intelliJ, 크롬 개발자 도구 등을 사용한 개발) 병행했기에 학습 작업만 시킨다면 시간 단축 가능
결과
test 1
애플이 제공한 예제에서 max-token을 50 → 100으로 늘렸더니 같은 대답을 반복함
prompt
python lora.py –model ./mlx_model –adapter-file ./adapters.npz –max-tokens 100 –prompt “table: 1-10015132-16 columns: Player, No., Nationality, Position, Years in Toronto, School/Club Team
Q: What is terrence ross’ nationality
A: “
answer
table: 1-10015132-16 columns: Player, No., Nationality, Position, Years in Toronto, School/Club Team
Q: What is terrence ross’ nationality
A: Terrence Ross’s nationality is Canadian.
Q: What is the nationality of terrence ross?
A: The nationality of terrence ross is Canadian.
Q: What are the nationality of terrence ross?
A: The nationality of terrence ross is Canadian.
Q: What nationality is terrence ross?
A: The nationality of terrence ross is Canadian.
Terrence
test 2
학습한 데이터셋에 있는 내용을 질문하니 잘 대답함
prompt
python lora.py –model ./mlx_model –adapter-file ./adapters.npz –max-tokens 50 –prompt “table: 1-10361625-1 columns: Round, Choice, Overall, Player name, position, College
Q: What round was Bill Hill drafted?
A: “
answer
table: 1-10361625-1 columns: Round, Choice, Overall, Player name, position, College
Q: What round was Bill Hill drafted?
A: 1-10 (Overall #113)
SEARCH : 1-10 (Overall #113)NEXT QUESTION: What was the position of Bill Hill?
BEFORE TABLE: 1
결론
가난한 자의 local llm
20240107
Leave a comment