خطوة بخطوة باستخدام Colab لتدريب LLM Legal ، استنادًا إلى Microsoft/PHI-1_5 ، ChatGlm3-6b. من خلال هذا المشروع ، يمكنك فهم تكاليف LLM 0 الدقيقة. إذا كنت ترغب في فهم تنفيذ التعليمات البرمجية المحددة لـ LLM ، فيمكنك الرجوع إلى مشروع My_Finetune ؟
| اسم | كولاب | مجموعات البيانات |
|---|---|---|
| الإدراك الذاتي لورا-سدة النقل الدقيق | self_cognition.json | |
| سلالة أسئلة وأجوبة قانونية لورا ست | القرص | |
| سؤال وجواب قانوني معلمات كاملة-صقل دقيق* | القرص | |
| ChatGlm3-6b الإدراكية الذاتية لورا-ست صقل* | self_cognition.json |
*إذا كنت مستخدمًا لأعضاء Colab Pro ، فيمكنك تجربة المعلمات الكاملة - صقل SFT ، واستخدام RAM+ T4 ، وسيستغرق 1000 قطعة من البيانات حوالي 20+ ساعة.
*إذا كنت مستخدمًا لأعضاء Colab Pro ، فإن THACHGLM3-6B الإدراكية الذاتية لورا-SFT ، باستخدام RAM+T4 عالية ، يستغرق الأمر بضع دقائق فقط ، والتأثير أفضل
استخدم بطاقة رسومات T4 Free Colab لإكمال نموذج الإشراف على أسئلة وأجوبة قانونية (SFT) Microsoft/PHI-1_5 نموذج
مصدر بيانات الإدراك الذاتي: self_cognition.json
80 قطعة من البيانات ، استخدم T4 Lora لضبط PHI-1_5 ، ويمكنك ضبطها في غضون دقائق قليلة.
معلمات الضبط الدقيقة ، يرجى الرجوع إلى كولاب للحصول على التفاصيل.
python src/train_bash.py
--stage sft
--model_name_or_path microsoft/phi-1_5
--do_train True
--finetuning_type lora
--template vanilla
--flash_attn False
--shift_attn False
--dataset_dir data
--dataset self_cognition
--cutoff_len 1024
--learning_rate 2e-04
--num_train_epochs 20.0
--max_samples 1000
--per_device_train_batch_size 6
--per_device_eval_batch_size 6
--gradient_accumulation_steps 1
--lr_scheduler_type cosine
--max_grad_norm 1.0
--logging_steps 5
--save_steps 100
--warmup_steps 0
--neft_alpha 0
--train_on_prompt False
--upcast_layernorm False
--lora_rank 8
--lora_dropout 0.1
--lora_target Wqkv
--resume_lora_training True
--output_dir saves/Phi1.5-1.3B/lora/my
--fp16 True
--plot_loss True
تأثير
مصدر بيانات الأسئلة والأجوبة القانونية: Disc-Lawllm
من أجل تقليل ذاكرة الفيديو ، استخدم DeepSpeed Stage2 ، يمكن أن يصل Cutoff_Len إلى ما يصل إلى 1792 ، وسيتم انفجار ذاكرة الفيديو إذا كان هناك المزيد من ذاكرة الفيديو.
تكوين السرعة العميقة
{
"train_batch_size": "auto",
"train_micro_batch_size_per_gpu": "auto",
"gradient_accumulation_steps": "auto",
"gradient_clipping": "auto",
"zero_allow_untested_optimizer": true,
"fp16": {
"enabled": "auto",
"loss_scale": 0,
"initial_scale_power": 16,
"loss_scale_window": 1000,
"hysteresis": 2,
"min_loss_scale": 1
},
"zero_optimization": {
"stage": 2,
"offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
"allgather_partitions": true,
"allgather_bucket_size": 2e8,
"reduce_scatter": true,
"reduce_bucket_size": 2e8,
"overlap_comm": false,
"contiguous_gradients": true
}
}
المعلمات ضبط الدقة
1000 قطعة من البيانات ، T4 يستغرق حوالي 60 دقيقة
deepspeed --num_gpus 1 --master_port=9901 src/train_bash.py
--deepspeed ds_config.json
--stage sft
--model_name_or_path microsoft/phi-1_5
--do_train True
--finetuning_type lora
--template vanilla
--flash_attn False
--shift_attn False
--dataset_dir data
--dataset self_cognition,law_sft_triplet
--cutoff_len 1792
--learning_rate 2e-04
--num_train_epochs 5.0
--max_samples 1000
--per_device_train_batch_size 1
--per_device_eval_batch_size 1
--gradient_accumulation_steps 1
--lr_scheduler_type cosine
--max_grad_norm 1.0
--logging_steps 5
--save_steps 1000
--warmup_steps 0
--neft_alpha 0
--train_on_prompt False
--upcast_layernorm False
--lora_rank 8
--lora_dropout 0.1
--lora_target Wqkv
--resume_lora_training True
--output_dir saves/Phi1.5-1.3B/lora/law
--fp16 True
--plot_loss True
يمكنك عرض الذاكرة المطلوبة لمرحلة DeepEd Zero من خلال Extertated_zero3_model_states_mem_needs_all_live.
from transformers import AutoModel, AutoModelForCausalLM
from deepspeed.runtime.zero.stage3 import estimate_zero3_model_states_mem_needs_all_live
model_name = "microsoft/phi-1_5"
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)
estimate_zero3_model_states_mem_needs_all_live(model, num_gpus_per_node=1, num_nodes=1)
كما هو موضح في الشكل ، يتطلب Offload_optimizer -> Microsoft/PHI -1_5 ذاكرة 32 جم بعد وحدة المعالجة المركزية ، ويمكن أن تلبي ذاكرة كولاب 52G الاحتياجات.
تكوين السرعة العميقة
{
"train_batch_size": "auto",
"train_micro_batch_size_per_gpu": "auto",
"gradient_accumulation_steps": "auto",
"gradient_clipping": "auto",
"zero_allow_untested_optimizer": true,
"fp16": {
"enabled": "auto",
"loss_scale": 0,
"initial_scale_power": 16,
"loss_scale_window": 1000,
"hysteresis": 2,
"min_loss_scale": 1
},
"zero_optimization": {
"stage": 2,
"offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
"allgather_partitions": true,
"allgather_bucket_size": 2e8,
"reduce_scatter": true,
"reduce_bucket_size": 2e8,
"overlap_comm": false,
"contiguous_gradients": true
}
}
deepspeed --num_gpus 1 --master_port=9901 src/train_bash.py
--deepspeed ds_config.json
--stage sft
--model_name_or_path microsoft/phi-1_5
--do_train True
--finetuning_type full
--template vanilla
--flash_attn False
--shift_attn False
--dataset_dir data
--dataset self_cognition,law_sft_triplet
--cutoff_len 1024
--learning_rate 2e-04
--num_train_epochs 10.0
--max_samples 1000
--per_device_train_batch_size 1
--per_device_eval_batch_size 1
--gradient_accumulation_steps 1
--lr_scheduler_type cosine
--max_grad_norm 1.0
--logging_steps 5
--save_steps 1000
--warmup_steps 0
--neft_alpha 0
--train_on_prompt False
--upcast_layernorm False
--lora_rank 8
--lora_dropout 0.1
--lora_target Wqkv
--resume_lora_training True
--output_dir saves/Phi1.5-1.3B/lora/law_full
--fp16 True
--plot_loss True
يمكنك أيضًا التفكير في استخدام Kaggle ، والتي يمكن استخدامها لمدة 30 ساعة في الأسبوع ، يمكنك اختيار 2 T4s ، واستخدام المرحلة 3 من الصفر لضبط المعلمات الكاملة.
تكوين السرعة العميقة
{
"train_batch_size": "auto",
"train_micro_batch_size_per_gpu": "auto",
"gradient_accumulation_steps": "auto",
"gradient_clipping": "auto",
"zero_allow_untested_optimizer": true,
"fp16": {
"enabled": "auto",
"loss_scale": 0,
"initial_scale_power": 16,
"loss_scale_window": 1000,
"hysteresis": 2,
"min_loss_scale": 1
},
"zero_optimization": {
"stage": 3,
"overlap_comm": false,
"contiguous_gradients": true,
"sub_group_size": 5e7,
"reduce_bucket_size": "auto",
"stage3_prefetch_bucket_size": "auto",
"stage3_param_persistence_threshold": "auto",
"stage3_max_live_parameters": 5e7,
"stage3_max_reuse_distance": 5e7,
"stage3_gather_16bit_weights_on_model_save": true
}
}