Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problème de finetuned avec mon fichier datas.jsonl #28

Open
Symfomany opened this issue Aug 16, 2023 · 5 comments
Open

Problème de finetuned avec mon fichier datas.jsonl #28

Symfomany opened this issue Aug 16, 2023 · 5 comments

Comments

@Symfomany
Copy link

Hello la Team !

J'essaye de finetiner le model vigogne-13b pour y injecter des données juridique avec mon fichiers datas.json

Voici un bout de datas.jsonl:

{"instruction":"Introduction sur la fixation et révision du fermage viticole","input":"Quel est le cadre de révision sur le fermage agricole ?","output":"L’encadrement des modalités de fixation du loyer dans le bail à ferme constitue l’une des clés de voûte du Statut du fermage.","id":"75b82146-9190-4889-9438-3391585572e8"}
{"instruction":"Disposition de fixation et révision du fermage viticole","input":"Quel sont les dispositions de révision sur le fermage agricole ?","output":"Les dispositions qui fixent ces modalités (articles L. 411-1 et suivants du code rural et de la pêche maritime (CRPM)) sont d’ailleurs d’ordre public, caractère affirmé aux termes de l’article L. 411- 14 de ce code:  « Les dispositions des articles L. 411-11 à L. 411-13 sont d'ordre public ; celles du deuxième alinéa de l'article L. 411-13 ont un caractère interprétatif. »","id":"c7b65f15-2616-4ffc-a809-c99e34cc1588"}
...

et voici CLI:


`python vigogne/train/train_sft.py    --model_name_or_path "bofenghuang/vigogne-13b-instruct"      --train_file "data/instruct/datas.jsonl"      --output_dir "outputs/llama-7b-ft-instruct-llmint8"     --run_name "llama-7b-ft-instruct-llmint8"     
 --overwrite_output_dir     
 --mode "instruct"     
 --model_max_length "512"    
 --preprocessing_num_workers "1"    
  --dataloader_num_workers "1"     
  --load_in_8bit    
   --lora_r "8"     
   --lora_alpha "16"     
   --lora_dropout "0.05"     
   --target_modules "q_proj" "v_proj" "k_proj" "o_proj" "gate_proj" "down_proj" "up_proj"     
   --per_device_train_batch_size "16"     
   --per_device_eval_batch_size "8"    
   --gradient_accumulation_steps "8"     
   --num_train_epochs "3"     
   --learning_rate "3e-4"     
   --warmup_ratio "0.05"     
   --weight_decay "0.01"     
   --gradient_checkpointing     
   --logging_steps "10"     
   --logging_first_step true     
   --save_strategy "steps"     
   --save_steps "10"     
   --save_total_limit "2"     
   --evaluation_strategy "steps"    
    --eval_steps "10"     
    --load_best_model_at_end     
    --do_train`

J'ai cette erreur sur un GPU Nvidia P100 Cœurs 10 RAM 42 Go 16Go VRAM:

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 50.00 MiB (GPU 0; 15.89 GiB total capacity; 2.14 GiB already allocated; 10.12 MiB free; 2.14 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

Pourtant j'ai suivis qqs variables d'env pour 1 seul GPU:

export WANDB_PROJECT=llm-sft-chat-fr export OMP_NUM_THREADS=1 export TOKENIZERS_PARALLELISM="false" export CUDA_VISIBLE_DEVICES=0

@bofenghuang
Copy link
Owner

Salut ! Selon le message d'erreur, la mémoire disponible n'est pas suffisante pour le setup actuel. Vous pouvez soit réduire per_device_train_batch_size (en ajustant éventuellement gradient_accumulation_steps pour garder un même batch size effectif), quantifier davantage le modèle à 4-bit (voir ce blog), ou bien essayer un checkpoint plus petit comme le 7B

@LeMoussel
Copy link

LeMoussel commented Aug 18, 2023

"quantifier davantage le modèle à 4-bit" ⇒ il faut positionner le paramètre --load_in_4bit en lieu et place de --load_in_8bit.
Voir cet examples/train/train_sft_chat_lora_int4.sh

@Symfomany
Copy link
Author

Est au lieu d'un seul GPU A100 si je le faisais avec 2 ou 4 GPU en parallèle cela passerais? il faudrait une configuration pour paralleliser le finetuning?

@Symfomany
Copy link
Author

Alors cela avance mais j'ai encore cetet erreur:
TypeError: expected str, bytes or os.PathLike object, not NoneType

je sais pas si cele vient de moi

image

@Symfomany
Copy link
Author

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants