파인튜닝해보려고하는데

#1
by jaehy12 - opened

감사합니다 준범님 모델 잘 사용하고 있습니다! 혹시

llama3 기존의 chat_template 공홈에 나와있는대로 데이터를 만들어서 해야할까요?
messages = [
{"role": "system", "content": "친절한 챗봇으로서 상대방의 요청에 최대한 자세하고 친절하게 답하자. 모든 대답은 한국어(Korean)으로 대답해줘."},
{"role": "user", "content": "피보나치 수열이 뭐야? 그리고 피보나치 수열에 대해 파이썬 코드를 짜줘볼래?"},
]

위형태로 해야하나요?

TRL의 SFT Trainer를 사용하신다면 학습 Trainer에 messages 형식으로 넣어주면 알아서 tokenizer.apply_chat_template를 적용해서 학습을 진행합니다.

만약 HF의 LlamaForCausalLM을 직업 사용해 학습하신다면 tokenizer.apply_chat_template(messages)를 통해 해당 메시지를 Llama-3-Inst 템플릿에 맞춘 뒤 학습을 진행해주시면 됩니다.

beomi changed discussion status to closed

안녕하세요. 늘 모델 공유해주시는것에 감사합니다. 파인튜닝 과정에서 학습에 문제가 생겨서 문의드립니다....!

기존 라마2 파인튜닝 하던 코드에 라마3 포맷 맞춰서 학습시키려하니 train 학습에서

ValueError: You can't train a model that has been loaded in 8-bit precision on a different device than the one you're training on. Make sure you loaded the model on the correct device using for example device_map={'':torch.cuda.current_device()}you're training on. Make sure you loaded the model on the correct device using for example device_map={'':torch.cuda.current_device() or device_map={'':torch.xpu.current_device()}
이와 같은 오류가 떴습니다. 우선 오류가 말하는데로 했으나 단일 gpu로는 하기어려운 환경이라... 이전에는 auto 값 주면 적절하게 분배되서 됬는데 지금은 멀티 gpu 에서 불균형?하게 분배되네요. 물론 저에러가 뜨면서 안되지만... 환경은 윈도우10에 gpu 2080 4대인데 방법이 없을까요? bitandbytes 는 0.41.2를 쓰고있는데 (윈도우 지원하는게 이버전까지같습니다...)

혹시 폐가안된다면 준범님 조언을 부탁드려봅니다. 감사합니다.

@oosij 사용하시는 라이브러리 버전들을 한번 체크해주시겠어요? pytorch/transformers/accelerate

@oosij https://github.com/huggingface/accelerate/pull/2714 해당 PR이 기존에 BNB쓸 때 생기는 이슈같은데요.

현재 PyPi에 올라온 Accelerate버전에서는 해당 PR이 merge되지 않은 상태입니다.

최신 Accelerate(main branch)설치하시고(pip install -U git+https://github.com/huggingface/accelerate) 다시 실행해보시겠어요?

오오... pip install 로 최신 (0.29) 깔았을댄 안되서 다른문제가 아닌가 싶었는데 잘됩니다. 감사합니다 !

안녕하세요 우선 좋은 모델을 공유해주셔서 정말 감사합니다!
다름이 아니라 해당 모델을 Fine-tuning 하는 과정에서 질문드리고 싶은 점이 생겨 이렇게 글을 남깁니다.

  1. 이번에 새로나온 llama3 tokenizer.json을 확인해보았는데, 기존 llama2 tokenizer와 다르게 한국어 단어가 없는 것을 확있했습니다. tokenizer에 한국어 단어가 없는데 혹시 pre-train을 어떻게 수행하셨는지 알고 싶습니다.

  2. Chat vector를 적용하셨다고 하여 해당 논문을 읽었습니다. 해당 논문에서는 학습의 순서를 pre-train -> fine-tuning -> applying chat vector로 설정하였는데 instruction tuning을 수행하고자 한다면 해당 순서를 적절하게 따르는 것이 좋을까요? 만약 chat vector를 따로 적용한다면 혹시 어떻게 수행해야 하는지에 대해 참고할 만한 자료가 있을지 추천해주시면 감사하겠습니다!

항상 좋은 모델 공유해주셔서 다시 한 번 감사드립니다.

@minsuhan

  1. Llama3는 BBPE를 쓰고, 약 1k개 수준의 한국어 토큰이 들어있습니다. 그래서 char-level 수준으로 토크나이징 되어서 약 30% 내외의 효율 향상이라, 성능 대비 고려해서 토큰 확장은 아직 진행하지 않은 상태입니다 :)
  2. Pretrain(Llama3) -> CP(Llama-3-Ko) -> Chat Vector apply(Llama-3-Ko-Instruct-preview) -> SFT 순으로 진행하시면 될 것 같습니다.

Sign up or log in to comment