4월 18일에 발매된 Meta Llama3
[MetaLlama3 주요 특징]: 새로운 아키텍처 없음.
학습 데이터 2T -> 15T 확장
토크나이저 크기 32k -> 128k 확장
종류: 8B(~2023.03), 70B(~2023.12), 400+B 모델 3가지
Llama 3 엑세스 및 사용: 올라마, docker, LM스튜디오 3 곳에서 Mac, Linux, Windows 사용자 접근 가능
LLM 파인튜닝 도구 여부: XTuner에서 Llama-3 기반의 LLaVA 모델 공개.
<<라마2와 차이점>>
라마 2는 한국어 튜닝시, 토크나이저에 한국어 토큰을 추가하는 복잡한 과정 필요
라마 3은 그냥 한국어 데이터만 추가로 학습시키면 라마 3 한국어 특화 모델 생성 가능
주의사항: 업무 활용시 llama3- 라고 꼭 앞에 붙여서 배포.
월간 활성 사용자가 7억명 이상의 상업적 서비스 이용 시 메타 문의 필요
*temperature 온도: 높으면 창의적 답변, 낮으면 일반적 답변
ORPO (Odds Ratio Preference Optimization)?
○ 기존 fine-tuning과 preference alignment stage를 하나의 프로세스로 결합한 fine-tuning 라이브러리
-> 사용되는 컴퓨터 자원과 훈련 시간 감소
○ 결론: 컴퓨터 자원 사용량과 시간에 대한 효율성을 높이기 위해서 ORPO를 사용
Llama3 + ORPO 과정에서의 문제점 및 해결과정
○ trl 라이브러리에서 ORPOConfig, ORPOTrainer import 불가 오류
- trl 라이브러리 설치 문제인가? -> update, __init__.py 파일 확인 결과 이상 없음
- python 버전 호환성 문제인가? -> 3.9가 아닌 3.10 환경에서 실행해야 정상 작동
○ 예제 코드에 따르면 ORPO를 적용하기위한 데이터 형식이 prompt, chosen, rejected로 정해짐
- 해당 데이터 형식을 지키지 않으면 문제가 되는가? -> ORPOConfig, ORPOTrainer에서 오류 발생
- 데이터 형식을 지키는 방법은?
-> Context를 prompt로, Resposne를 chosen으로, rejected는 ‘ ‘로 더미 데이터 생성
○ CUDA Out of Memory 문제
- batch size를 줄이는 등 각종 파라미터 조절 -> 이것만으로 문제 해결 안됨
- 불필요한 프로세스 kill, 및 memory flush 시도 -> 이것만으로 문제 해결 안됨
- 널럴한 GPU로 옮겨서 실행? -> 훈련시, 선택된 GPU 공간이 넉넉해야 실행 가능하므로 옮겨도 결과 동일
- 실행 전에 양자화를 해야했던 것은 아닐까?, Flash Attention을 도입하고 실행해보면 안될까?
-> 기존의 99% GPU사용량이 약 60~70%로 감소
○ ValueError: Calculated loss must be on the original device: cuda:0 but device in use is cuda:3
- cuda3에 위치한 모델을 model = model.to(device)을 통해 0으로 바꾸기
-> You shouldn't move a model that is dispatched using accelerate hooks.
ValueError: `.to` is not supported for `4-bit` or `8-bit` bitsandbytes models. Please use the model as it is, since the model has already been set to the correct devices and casted to the correct `dtype`.
-> GPU 번호가 바뀌는 순간이 언제인지를 torch.cuda.current_device()을 통해 코드별 하나하나 체크
-> 원인: AutoModelForCausalLM.from_pretrained에서 device_map설정을 “auto”로 한 것
-> device_map=torch.device("cuda:0") 로 변경
-> 모델 생성 후 torch.cuda.current_device() 수행 시 0으로 출력(해결)
○ 테스트 chatbot 오류: 언어를 제대로 못말함
- chatbot test 코드가 잘못되었는가? -> 기존에 잘 작동된 코드에 모델만 바꾸었으나 현상 동일
- 모델 훈련이 잘못되었는가?
-> 모델 저장 과정에서 기존 모델과 합치는 과정이 없이 저장한 것이 원인이 아닐까?
-> 또는 모델 로드 방식이 잘못된 것은 아닐까?
사실 데이터 형식을 엄격하게 지켰다면 이런 문제는 발생하지 않았음
'TechStudy > LLM' 카테고리의 다른 글
고급(?) 파인튜닝 기술 Reranker (0) | 2024.06.12 |
---|---|
LoRA? 신 기술 MoRA를 사용해보자! (0) | 2024.06.11 |
Unsloth 환경을 도입하고 ORPO 파인튜닝(fine-tuning)하기 (0) | 2024.06.07 |
Fine-tuned model 독립 및 견고성(robust) 검증 (0) | 2024.06.05 |
Llama3 and ORPO (리딩용) (0) | 2024.05.13 |