Comments (16)
v1.1 12.8b는
A100 80G 기준 최소 4대,
A100 40G 기준 최소 8대 필요합니다 🥲
from koalpaca.
lora config를 이런 json으로 쓰시면 되어요.
{
"base_model_name_or_path": "beomi/polyglot-ko-12.8b",
"bias": "none",
"enable_lora": [true, false, true],
"fan_in_fan_out": true,
"inference_mode": true,
"lora_alpha": 16,
"lora_dropout": 0.05,
"merge_weights": false,
"modules_to_save": null,
"peft_type": "LORA",
"r": 8,
"target_modules": [
"query_key_value"
],
"task_type": "CAUSAL_LM"
}
from koalpaca.
저는 lora 튜닝 쪽으로 해결방안을 찾고 있습니다.
from koalpaca.
가능합니다! 모델을 LlamaModel, LlamaTokenizer 를 AutoModel, AutoTokenizer로 바꿔주시고,
lora weight 부분을 https://junbuml.ee/lora-ckpt-size-mismatch 글 부분 처럼 레이어 이름 바꾸고 설정도 바꿔주시면 됩니다.
from koalpaca.
@noonowl LoRA 모델을 init하는 과정에서 어댑터만 학습 가능하게 두고 나머지 파라미터를 freeze하는 함수 mark_only_lora_as_trainable
에서 오류가 발생한 것 같은데요,
get_peft_model
에 사용한 peft_config
의 내용물에 문제가 있는 것 같습니다.
사용한 LoraConfig의 bias
가 문자열 형식으로 된 "none"
, "all"
, "lora_only"
중 하나 인지 확인해보셔야 할 것 같아요!
저도 실수로 같은 오류를 겪어서 공유드립니다.
# had to adapt it for `lora_only` to work
def mark_only_lora_as_trainable(model: nn.Module, bias: str = "none") -> None:
for n, p in model.named_parameters():
if "lora_" not in n:
p.requires_grad = False
if bias == "none":
return
elif bias == "all":
for n, p in model.named_parameters():
if "bias" in n:
p.requires_grad = True
elif bias == "lora_only":
for m in model.modules():
if isinstance(m, LoraLayer) and hasattr(m, "bias") and m.bias is not None:
m.bias.requires_grad = True
else:
raise NotImplementedError # 여기서 에러 발생
(참고 line 362: https://github.com/huggingface/peft/blob/main/src/peft/tuners/lora.py)
from koalpaca.
Polyglot의 경우는 현 레포에 학습 코드가 올라가있지 않습니다만,
간단히 말씀드리면...
- 모델도 fp16으로 올리고 시작
- fp16=True
- batch size 1
- adafactor optimizer 사용
- seq len 2048
위처럼 설정하시면 아슬아슬하게 돌아갑니다 :)
from koalpaca.
알려주신대로 수정을 해서 돌려봤는데 정말 아슬아슬하게 안돌아가네요..ㅎㅎ
제가 수정한 부분은 아래와 같습니다.
- 모델 레16으로 올리기 ( 인터넷에서 찾아서 했는데 이걸 말씀하신 건지..? )
with torch.cuda.amp.autocast(enabled=True):
trainer.train()
- 스크립트 수정
torchrun --nproc_per_node=4 train.py \
--model_name_or_path "EleutherAI/polyglot-ko-5.8b" \
--data_path ./data/ko_alpaca_data.json \
--output_dir ./models \
--num_train_epochs 1 \
--per_device_train_batch_size 1 \
--per_device_eval_batch_size 1 \
--gradient_accumulation_steps 4 \
--evaluation_strategy "no" \
--save_strategy "steps" \
--save_steps 2000 \
--save_total_limit 1 \
--learning_rate 2e-5 \
--weight_decay 0. \
--warmup_ratio 0.03 \
--lr_scheduler_type "cosine" \
--logging_steps 1 \
--fp16 True
- adafactor optimizer로 수정
optim: str = field(default="adamw_torch") -> optim: str = field(default="adafactor")
- max_length 수정 : 2048, 1024 로 각각 수정하여 돌려보았으나, OOM 에러 발생
from koalpaca.
@daje0601 KoAlpaca-Polyglot의 경우에는 https://github.com/Beomi/easy-lm-trainer 코드로 학습을 진행했습니다 👀
아래 코드로 실제 학습을 진행했구요.
python main.py \
--model_name='EleutherAI/polyglot-ko-5.8b' \
--train_file_path='./data/ko_alpaca_data_sep.csv' \
--num_train_epochs=3 \
--data_text_column='text' \
--block_size=1024 \
--batch_size=2 \
--gradient_accumulation_steps=64 \
--learning_rate=0.00002 \
--fp16=True \
현재 레포에서도 거의 학습 자체는 동일해서 안될 이유는 없는데.. 이상하네요.
from koalpaca.
@daje0601
저도 똑같은 상황인데 (A100 80G 4장 -> CUDA OOM 에러)
해결 하셨나요?
from koalpaca.
안녕하세요,
https://github.com/Beomi/easy-lm-trainer <- Full finetune 코드 기준으로,
Trainer fp16활성화 기준 batch size 1, seq len(block_size) 2048로 학습이 A100 80GB에서 약 79GB vram 소모로 학습이 가능합니다.
from koalpaca.
이슈에 내용을 남기기에 조금 늦은감이 있지만 @daje0601 님이 갖추신 환경에서 이런 학습이 가능하지 않을까 싶어 공유드립니다.
torchrun --nproc_per_node=4 train.py
--model_name_or_path kakaobrain/kogpt
--revision KoGPT6B-ryan1.5b-float16
--data_path ./ko_alpaca_data.json
--bf16 True
--output_dir ./koalpaca_kogpt_6b_128
--num_train_epochs 3
--per_device_train_batch_size 4
--per_device_eval_batch_size 4
--gradient_accumulation_steps 8
--evaluation_strategy no
--save_strategy steps
--save_steps 2000
--save_total_limit 1
--learning_rate 2e-5
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type cosine
--logging_steps 1
--fsdp_transformer_layer_cls_to_wrap GPTJBlock
--fsdp "full_shard auto_wrap"
--tf32 True
참고만 해주세요. :)
from koalpaca.
이번에 올려주신 v1.1 을 beomi/KoAlpaca-Polyglot-12.8B 를 베이스로 두고 train 실행하니 CUDA OUT_OF_MEMORY 가 발생했는데 당연한 거였네요 ㅠㅠ 모델이랑 토크나이저 로딩되니 12G 정도 소모하고 순식간에 80G 채우고 에러나더라구요.
from koalpaca.
이 스레드가 적절한지 모르겠지만 혹시 최근에 올려주신 v1.1 Polyglot-12.8B 를 기반으로 Lora finetune도 가능한걸까요? Llama 기반의 finetune은 tloen/alpaca-lora 의 finetune 을 참고하면 되는데 polyglot 방식의 모델에도 Lora finetune이 가능한 것인지 궁금합니다.
from koalpaca.
자꾸 문의드려 죄송합니다만 또 에러가 나는데요. LoraConfig 의 옵션이 문제일까요?
get_peft_model 을 하면 에러나는 부분은 NotImplementedError 가 버전의 차이일지 모르겠네요. peft 는 0.3.0.dev0 이고 transformers 는 4.27.0.dev0 입니다.
>>> model = get_peft_model(model, config)
/home/user/.local/lib/python3.8/site-packages/peft/tuners/lora.py:175: UserWarning: fan_in_fan_out is set to True but the target module is not a Conv1D. Setting fan_in_fan_out to False.
warnings.warn(
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/user/.local/lib/python3.8/site-packages/peft/mapping.py", line 142, in get_peft_model
return PeftModel(model, peft_config)
File "/home/user/.local/lib/python3.8/site-packages/peft/peft_model.py", line 79, in __init__
self.base_model = LoraModel(peft_config, model)
File "/home/user/.local/lib/python3.8/site-packages/peft/tuners/lora.py", line 119, in __init__
mark_only_lora_as_trainable(self.model, self.peft_config.bias)
File "/home/user/.local/lib/python3.8/site-packages/peft/tuners/lora.py", line 263, in mark_only_lora_as_trainable
raise NotImplementedError
NotImplementedError
from koalpaca.
python main.py \ --model_name='EleutherAI/polyglot-ko-5.8b' \ --train_file_path='./data/ko_alpaca_data_sep.csv' \ --num_train_epochs=3 \ --data_text_column='text' \ --block_size=1024 \ --batch_size=2 \ --gradient_accumulation_steps=64 \ --learning_rate=0.00002 \ --fp16=True \
이 코드 활용해서 A100 80G 1장으로 활용하면 코드가 안돌아가고,
https://github.com/Beomi/easy-lm-trainer 이 레포 참고해서 deepspeed zero를 활용하면 학습이 돌아가는데,,
위의 코드로 같은 A100 80G 1장으로 파인튜닝 시킨게 맞는거죠..? 아무리 해도 CUDA에러가 나서 다시 여쭤봅니다!
from koalpaca.
안녕하세요,
이 레포에 SingleGPU로 학습하는 코드를 추가해두었습니다.
아래 폴더의 README 부분을 참고해주세요.
from koalpaca.
Related Issues (20)
- LLaMa 30B, 65B token은 7B token 그대로 써도 되는건가요?? HOT 1
- 허깅 페이스의 TGI 이미지로 KoAlpaca-Polyglot-12.8B docker 컨테이너 생성하려고 하는데 오류가 발생됩니다. HOT 1
- chat-ui description 수정 HOT 1
- PEFT로LoRA로드 중에 에러
- decapoda-research/llama-13b-hf 모델이 사라졌습니다. HOT 1
- 학습한 LLM 모델이 말을 끝내지 않고 계속 생성합니다. HOT 5
- KoAlpaca polyglot 12.8b Fine-tuning 시 에러문의 드립니다. HOT 2
- KoAlpaca 모델 실행 예시코드 실행 중 용량 초과로 취소된 문제에 대해 문의드려요.
- ko-alpaca 1.0 데이터셋 관련 문의 HOT 1
- Could not find model: decapoda-research/llama-65b-hf
- index.json 파일 문의 드립니다 HOT 1
- beomi/KoAlpaca-Polyglot-12.8B 로 inference를 진행하기 위해서는 48GB의 VRAM이 필요한가요? HOT 3
- prompt 관련 ko_alpaca_data.json 형식 문의 드립니다. HOT 1
- 학습 결과 inference시 질문좀 드리겠습니다.! HOT 3
- 모델 저장 및 허깅페이스에 올리는법..이것때문에 문제가 생기네요 ㅠㅠ HOT 1
- 원하는 형태의 답변으로 고정시킬 수 있는 방법이 있을까요? HOT 4
- NSMC 결과 reproducing HOT 1
- 상업적 이용 가능 여부 관련 HOT 2
- 데모에 성능에 대해 질문있습니다. HOT 1
- Citation 관련 문의드립니다
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from koalpaca.