From 449e2aa38e3a6cf301a43c12c121ac24ebf12027 Mon Sep 17 00:00:00 2001 From: zhangzc <2608882093@qq.com> Date: Wed, 27 Mar 2024 14:22:50 +0800 Subject: [PATCH 001/169] Supports custom data set sampling quantity --- data/README.md | 5 +++-- data/README_zh.md | 3 ++- src/llmtuner/data/loader.py | 13 +++++++++++++ src/llmtuner/data/parser.py | 4 +++- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/data/README.md b/data/README.md index fa2c9ee0..c4a1b298 100644 --- a/data/README.md +++ b/data/README.md @@ -27,8 +27,9 @@ If you are using a custom dataset, please provide your dataset definition in the "assistant_tag": "the value of the role_tag represents the assistant. (default: gpt)", "observation_tag": "the value of the role_tag represents the tool results. (default: observation)", "function_tag": "the value of the role_tag represents the function call. (default: function_call)", - "system_tag": "the value of the role_tag represents the system prompt. (default: system, can override system column)" - } + "system_tag": "the value of the role_tag represents the system prompt. (default: system, can override system column)", + }, + "sample_num": "the number of samples from this dataset can be greater than the total amount of the dataset. (default: None)" } ``` diff --git a/data/README_zh.md b/data/README_zh.md index e0004f4a..6396688a 100644 --- a/data/README_zh.md +++ b/data/README_zh.md @@ -28,7 +28,8 @@ "observation_tag": "消息中代表工具返回结果的 role_tag(默认:observation)", "function_tag": "消息中代表工具调用的 role_tag(默认:function_call)", "system_tag": "消息中代表系统提示的 role_tag(默认:system,会覆盖 system 列)" - } + }, + "sample_num": "从该数据集采样的数量,可大于该数据集总量(默认:None)" } ``` diff --git a/src/llmtuner/data/loader.py b/src/llmtuner/data/loader.py index 935695ad..bebe5718 100644 --- a/src/llmtuner/data/loader.py +++ b/src/llmtuner/data/loader.py @@ -1,5 +1,7 @@ import inspect import os +import numpy as np +from numpy.random import RandomState from typing import TYPE_CHECKING, Literal, Union from datasets import load_dataset, load_from_disk @@ -108,6 +110,17 @@ def load_single_dataset( num_samples = min(data_args.max_samples, len(dataset)) dataset = dataset.select(range(num_samples)) + if dataset_attr.sample_num: + dataset_sample_num = dataset_attr.sample_num + logger.info(f"从 {dataset_attr.dataset_name} 采样 {dataset_sample_num} 条训练样本") + random_state = RandomState(42) + idx = random_state.permutation(len(dataset))[:dataset_sample_num] + dataset_sample_num -= len(idx) + if dataset_sample_num > 0: + idx2 = random_state.choice(len(dataset), dataset_sample_num) + idx = np.concatenate([idx, idx2], axis=0) + dataset = dataset.select(idx) + return align_dataset(dataset, dataset_attr, data_args) diff --git a/src/llmtuner/data/parser.py b/src/llmtuner/data/parser.py index 861396a0..9746b5b2 100644 --- a/src/llmtuner/data/parser.py +++ b/src/llmtuner/data/parser.py @@ -44,6 +44,7 @@ class DatasetAttr: observation_tag: Optional[str] = "observation" function_tag: Optional[str] = "function_call" system_tag: Optional[str] = "system" + sample_num: Optional[int] = None def __repr__(self) -> str: return self.dataset_name @@ -90,7 +91,8 @@ def get_dataset_list(data_args: "DataArguments") -> List["DatasetAttr"]: dataset_attr.set_attr("folder", dataset_info[name]) dataset_attr.set_attr("ranking", dataset_info[name], default=False) dataset_attr.set_attr("formatting", dataset_info[name], default="alpaca") - + dataset_attr.set_attr("sample_num", dataset_info[name]) + if "columns" in dataset_info[name]: column_names = ["system"] if dataset_attr.formatting == "alpaca": From 29a6d5bdb8610be8f796eed65eede9ba7b503527 Mon Sep 17 00:00:00 2001 From: BUAADreamer <1428195643@qq.com> Date: Tue, 21 May 2024 08:57:14 +0800 Subject: [PATCH 002/169] support pretraining of llava --- data/dataset_info.json | 14 ++++ data/mllm_pt_demo.json | 92 ++++++++++++++++++++++++++ src/llamafactory/hparams/model_args.py | 4 ++ src/llamafactory/model/loader.py | 5 ++ 4 files changed, 115 insertions(+) create mode 100644 data/mllm_pt_demo.json diff --git a/data/dataset_info.json b/data/dataset_info.json index b985582e..5a90e077 100644 --- a/data/dataset_info.json +++ b/data/dataset_info.json @@ -38,6 +38,20 @@ "assistant_tag": "assistant" } }, + "mllm_pt_demo": { + "file_name": "mllm_pt_demo.json", + "formatting": "sharegpt", + "columns": { + "messages": "messages", + "images": "images" + }, + "tags": { + "role_tag": "role", + "content_tag": "content", + "user_tag": "user", + "assistant_tag": "assistant" + } + }, "alpaca_en": { "hf_hub_url": "llamafactory/alpaca_en", "ms_hub_url": "llamafactory/alpaca_en" diff --git a/data/mllm_pt_demo.json b/data/mllm_pt_demo.json new file mode 100644 index 00000000..2ee01ce6 --- /dev/null +++ b/data/mllm_pt_demo.json @@ -0,0 +1,92 @@ +[ + { + "messages": [ + { + "content": "Render a clear and concise summary of the photo.", + "role": "user" + }, + { + "content": "There are two soccer players on the field.", + "role": "assistant" + } + ], + "images": [ + "mllm_demo_data/1.jpg" + ] + }, + { + "messages": [ + { + "content": "Write a terse but informative summary of the picture.", + "role": "user" + }, + { + "content": "A soccer player is sliding on his knees to celebrate", + "role": "assistant" + } + ], + "images": [ + "mllm_demo_data/2.jpg" + ] + }, + { + "messages": [ + { + "content": "What is this?", + "role": "user" + }, + { + "content": "A man is giving a speech.", + "role": "assistant" + } + ], + "images": [ + "mllm_demo_data/3.jpg" + ] + }, + { + "messages": [ + { + "content": "对照片进行简明扼要的概括。", + "role": "user" + }, + { + "content": "两个足球运动员在场上", + "role": "assistant" + } + ], + "images": [ + "mllm_demo_data/1.jpg" + ] + }, + { + "messages": [ + { + "content": "为图片写一个简短但内容丰富的摘要。", + "role": "user" + }, + { + "content": "一个足球运动员在跪地滑行庆祝", + "role": "assistant" + } + ], + "images": [ + "mllm_demo_data/2.jpg" + ] + }, + { + "messages": [ + { + "content": "这是什么?", + "role": "user" + }, + { + "content": "一个男人在演讲", + "role": "assistant" + } + ], + "images": [ + "mllm_demo_data/3.jpg" + ] + } +] \ No newline at end of file diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 5885bb09..255051dc 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -85,6 +85,10 @@ class ModelArguments: default=False, metadata={"help": "Whethor or not to use multimodal LLM that accepts visual inputs."}, ) + tune_mm_proj: bool = field( + default=False, + metadata={"help": "Whethor or not only finetune mm_projector for MLLM."}, + ) moe_aux_loss_coef: Optional[float] = field( default=None, metadata={"help": "Coefficient of the auxiliary router loss in mixture-of-experts model."}, diff --git a/src/llamafactory/model/loader.py b/src/llamafactory/model/loader.py index 49b347d5..d9784593 100644 --- a/src/llamafactory/model/loader.py +++ b/src/llamafactory/model/loader.py @@ -163,6 +163,11 @@ def load_model( else: model.train() + if model_args.visual_inputs and model_args.tune_mm_proj: + lm_params = [param for name, param in model.named_parameters() if "language_model" in name] + for param in lm_params: + param.requires_grad_(False) + trainable_params, all_param = count_parameters(model) if is_trainable: param_stats = "trainable params: {:d} || all params: {:d} || trainable%: {:.4f}".format( From 57eb13b75d8597d748e84d3549a0b08876b669db Mon Sep 17 00:00:00 2001 From: BUAADreamer <1428195643@qq.com> Date: Mon, 27 May 2024 18:59:00 +0800 Subject: [PATCH 003/169] add regex of only tune lm and mm_proj --- sites/paligemma-pt.yaml | 49 ++++++++++++++++++++++++++ sites/paligemma.yaml | 49 ++++++++++++++++++++++++++ sites/paligemma_lora.yaml | 40 +++++++++++++++++++++ src/llamafactory/model/adapter.py | 7 ++++ src/llamafactory/model/loader.py | 5 --- src/llamafactory/model/utils/visual.py | 7 +++- 6 files changed, 151 insertions(+), 6 deletions(-) create mode 100644 sites/paligemma-pt.yaml create mode 100644 sites/paligemma.yaml create mode 100644 sites/paligemma_lora.yaml diff --git a/sites/paligemma-pt.yaml b/sites/paligemma-pt.yaml new file mode 100644 index 00000000..4305cf5f --- /dev/null +++ b/sites/paligemma-pt.yaml @@ -0,0 +1,49 @@ +# model +model_name_or_path: google/paligemma-3b-mix-448 +visual_inputs: true +tune_mm_proj: true +#print_param_status: true + +# method +stage: sft +do_train: true +finetuning_type: full + +# ddp +ddp_timeout: 180000000 +deepspeed: examples/deepspeed/ds_z2_offload_config.json + +# dataset +dataset: mllm_pt_demo +dataset_dir: data +template: gemma +cutoff_len: 2048 +max_samples: 3 +#val_size: 0.0001 +overwrite_cache: true +preprocessing_num_workers: 16 + +# output +output_dir: saves/paligemma/full/sft_llava_pt_test +logging_steps: 1 +save_steps: 50 +plot_loss: true +overwrite_output_dir: true +#save_strategy: epoch +#save_total_limit: 2 + +# train +per_device_train_batch_size: 1 +gradient_accumulation_steps: 16 +learning_rate: 0.00001 +num_train_epochs: 100 +lr_scheduler_type: cosine +warmup_steps: 0.1 +#bf16: true +pure_bf16: true + +# eval +do_eval: false +#per_device_eval_batch_size: 1 +#evaluation_strategy: steps +#eval_steps: 500 diff --git a/sites/paligemma.yaml b/sites/paligemma.yaml new file mode 100644 index 00000000..f3257cfc --- /dev/null +++ b/sites/paligemma.yaml @@ -0,0 +1,49 @@ +# model +model_name_or_path: google/paligemma-3b-mix-448 +visual_inputs: true +#print_param_status: true +use_fast_tokenizer: false + +# method +stage: sft +do_train: true +finetuning_type: full + +# ddp +ddp_timeout: 180000000 +deepspeed: examples/deepspeed/ds_z2_offload_config.json + +# dataset +dataset: mllm_demo +dataset_dir: data +template: gemma +cutoff_len: 2048 +max_samples: 3 +#val_size: 0.0001 +overwrite_cache: true +preprocessing_num_workers: 16 + +# output +output_dir: saves/paligemma/full/sft_llava_1k +logging_steps: 1 +save_steps: 50 +plot_loss: true +overwrite_output_dir: true +#save_strategy: epoch +#save_total_limit: 2 + +# train +per_device_train_batch_size: 1 +gradient_accumulation_steps: 16 +learning_rate: 0.00001 +num_train_epochs: 100 +lr_scheduler_type: cosine +warmup_steps: 0.1 +#bf16: true +pure_bf16: true + +# eval +do_eval: false +#per_device_eval_batch_size: 1 +#evaluation_strategy: steps +#eval_steps: 500 diff --git a/sites/paligemma_lora.yaml b/sites/paligemma_lora.yaml new file mode 100644 index 00000000..0693a6ae --- /dev/null +++ b/sites/paligemma_lora.yaml @@ -0,0 +1,40 @@ +### model +model_name_or_path: google/paligemma-3b-mix-448 +visual_inputs: true +use_fast_tokenizer: false + +### method +stage: sft +do_train: true +finetuning_type: lora +lora_target: q_proj,v_proj + +### dataset +dataset: mllm_demo +template: gemma +cutoff_len: 1024 +max_samples: 1000 +overwrite_cache: true +preprocessing_num_workers: 16 + +### output +output_dir: saves/paligemma/lora/sft_mllm +logging_steps: 10 +save_steps: 500 +plot_loss: true +overwrite_output_dir: true + +### train +per_device_train_batch_size: 1 +gradient_accumulation_steps: 8 +learning_rate: 0.0001 +num_train_epochs: 3.0 +lr_scheduler_type: cosine +warmup_steps: 0.1 +fp16: true + +### eval +val_size: 0.1 +per_device_eval_batch_size: 1 +evaluation_strategy: steps +eval_steps: 500 diff --git a/src/llamafactory/model/adapter.py b/src/llamafactory/model/adapter.py index f37f3bbb..015db8a0 100644 --- a/src/llamafactory/model/adapter.py +++ b/src/llamafactory/model/adapter.py @@ -10,6 +10,7 @@ from ..extras.logging import get_logger from .utils.misc import find_all_linear_modules, find_expanded_modules from .utils.quantization import QuantizationMethod from .utils.unsloth import get_unsloth_peft_model, load_unsloth_peft_model +from .utils.visual import filter_vision_tower_linear if TYPE_CHECKING: @@ -58,6 +59,9 @@ def init_adapter( if model_args.visual_inputs and hasattr(model, "vision_tower"): # freeze vision model model.vision_tower.requires_grad_(False) + if model_args.visual_inputs and hasattr(model, "language_model") and model_args.tune_mm_proj: # freeze language model if only tune mm_proj + model.language_model.requires_grad_(False) + if finetuning_args.finetuning_type == "freeze" and is_trainable: logger.info("Fine-tuning method: Freeze") num_layers = ( @@ -180,6 +184,9 @@ def init_adapter( if finetuning_args.use_llama_pro: target_modules = find_expanded_modules(model, target_modules, finetuning_args.num_layer_trainable) + if model_args.visual_inputs: + target_modules = filter_vision_tower_linear(target_modules) + if ( finetuning_args.use_dora and getattr(model, "quantization_method", None) is not None diff --git a/src/llamafactory/model/loader.py b/src/llamafactory/model/loader.py index d9784593..49b347d5 100644 --- a/src/llamafactory/model/loader.py +++ b/src/llamafactory/model/loader.py @@ -163,11 +163,6 @@ def load_model( else: model.train() - if model_args.visual_inputs and model_args.tune_mm_proj: - lm_params = [param for name, param in model.named_parameters() if "language_model" in name] - for param in lm_params: - param.requires_grad_(False) - trainable_params, all_param = count_parameters(model) if is_trainable: param_stats = "trainable params: {:d} || all params: {:d} || trainable%: {:.4f}".format( diff --git a/src/llamafactory/model/utils/visual.py b/src/llamafactory/model/utils/visual.py index c8260b7f..a91777ba 100644 --- a/src/llamafactory/model/utils/visual.py +++ b/src/llamafactory/model/utils/visual.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Tuple +from typing import TYPE_CHECKING, Tuple, List import torch import transformers.models @@ -82,3 +82,8 @@ def configure_visual_model(config: "PretrainedConfig") -> None: if getattr(config, "is_yi_vl_derived_model", None): logger.info("Detected Yi-VL model, applying projector patch.") transformers.models.llava.modeling_llava.LlavaMultiModalProjector = LlavaMultiModalProjectorForYiVL + + +def filter_vision_tower_linear(target_modules: List[str]) -> str: + target_modules = f"^(?!.*vision_tower).*(?:{'|'.join(target_modules)}).*" + return target_modules From 7ae9a4726cb99abb4c80f6b4b37590dc04ea6660 Mon Sep 17 00:00:00 2001 From: BUAADreamer <1428195643@qq.com> Date: Mon, 27 May 2024 19:00:15 +0800 Subject: [PATCH 004/169] add only tune lm and mm_proj --- sites/paligemma-pt.yaml | 49 --------------------------------------- sites/paligemma.yaml | 49 --------------------------------------- sites/paligemma_lora.yaml | 40 -------------------------------- 3 files changed, 138 deletions(-) delete mode 100644 sites/paligemma-pt.yaml delete mode 100644 sites/paligemma.yaml delete mode 100644 sites/paligemma_lora.yaml diff --git a/sites/paligemma-pt.yaml b/sites/paligemma-pt.yaml deleted file mode 100644 index 4305cf5f..00000000 --- a/sites/paligemma-pt.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# model -model_name_or_path: google/paligemma-3b-mix-448 -visual_inputs: true -tune_mm_proj: true -#print_param_status: true - -# method -stage: sft -do_train: true -finetuning_type: full - -# ddp -ddp_timeout: 180000000 -deepspeed: examples/deepspeed/ds_z2_offload_config.json - -# dataset -dataset: mllm_pt_demo -dataset_dir: data -template: gemma -cutoff_len: 2048 -max_samples: 3 -#val_size: 0.0001 -overwrite_cache: true -preprocessing_num_workers: 16 - -# output -output_dir: saves/paligemma/full/sft_llava_pt_test -logging_steps: 1 -save_steps: 50 -plot_loss: true -overwrite_output_dir: true -#save_strategy: epoch -#save_total_limit: 2 - -# train -per_device_train_batch_size: 1 -gradient_accumulation_steps: 16 -learning_rate: 0.00001 -num_train_epochs: 100 -lr_scheduler_type: cosine -warmup_steps: 0.1 -#bf16: true -pure_bf16: true - -# eval -do_eval: false -#per_device_eval_batch_size: 1 -#evaluation_strategy: steps -#eval_steps: 500 diff --git a/sites/paligemma.yaml b/sites/paligemma.yaml deleted file mode 100644 index f3257cfc..00000000 --- a/sites/paligemma.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# model -model_name_or_path: google/paligemma-3b-mix-448 -visual_inputs: true -#print_param_status: true -use_fast_tokenizer: false - -# method -stage: sft -do_train: true -finetuning_type: full - -# ddp -ddp_timeout: 180000000 -deepspeed: examples/deepspeed/ds_z2_offload_config.json - -# dataset -dataset: mllm_demo -dataset_dir: data -template: gemma -cutoff_len: 2048 -max_samples: 3 -#val_size: 0.0001 -overwrite_cache: true -preprocessing_num_workers: 16 - -# output -output_dir: saves/paligemma/full/sft_llava_1k -logging_steps: 1 -save_steps: 50 -plot_loss: true -overwrite_output_dir: true -#save_strategy: epoch -#save_total_limit: 2 - -# train -per_device_train_batch_size: 1 -gradient_accumulation_steps: 16 -learning_rate: 0.00001 -num_train_epochs: 100 -lr_scheduler_type: cosine -warmup_steps: 0.1 -#bf16: true -pure_bf16: true - -# eval -do_eval: false -#per_device_eval_batch_size: 1 -#evaluation_strategy: steps -#eval_steps: 500 diff --git a/sites/paligemma_lora.yaml b/sites/paligemma_lora.yaml deleted file mode 100644 index 0693a6ae..00000000 --- a/sites/paligemma_lora.yaml +++ /dev/null @@ -1,40 +0,0 @@ -### model -model_name_or_path: google/paligemma-3b-mix-448 -visual_inputs: true -use_fast_tokenizer: false - -### method -stage: sft -do_train: true -finetuning_type: lora -lora_target: q_proj,v_proj - -### dataset -dataset: mllm_demo -template: gemma -cutoff_len: 1024 -max_samples: 1000 -overwrite_cache: true -preprocessing_num_workers: 16 - -### output -output_dir: saves/paligemma/lora/sft_mllm -logging_steps: 10 -save_steps: 500 -plot_loss: true -overwrite_output_dir: true - -### train -per_device_train_batch_size: 1 -gradient_accumulation_steps: 8 -learning_rate: 0.0001 -num_train_epochs: 3.0 -lr_scheduler_type: cosine -warmup_steps: 0.1 -fp16: true - -### eval -val_size: 0.1 -per_device_eval_batch_size: 1 -evaluation_strategy: steps -eval_steps: 500 From f665342a2752ffb5d715f134603d84e5228f55dc Mon Sep 17 00:00:00 2001 From: BUAADreamer <1428195643@qq.com> Date: Mon, 27 May 2024 20:10:31 +0800 Subject: [PATCH 005/169] remove mllm_pt_demo.json --- data/dataset_info.json | 2 +- data/mllm_pt_demo.json | 92 ------------------------------------------ 2 files changed, 1 insertion(+), 93 deletions(-) delete mode 100644 data/mllm_pt_demo.json diff --git a/data/dataset_info.json b/data/dataset_info.json index 5a90e077..1deb3d6d 100644 --- a/data/dataset_info.json +++ b/data/dataset_info.json @@ -39,7 +39,7 @@ } }, "mllm_pt_demo": { - "file_name": "mllm_pt_demo.json", + "hf_hub_url": "BUAADreamer/mllm_pt_demo", "formatting": "sharegpt", "columns": { "messages": "messages", diff --git a/data/mllm_pt_demo.json b/data/mllm_pt_demo.json deleted file mode 100644 index 2ee01ce6..00000000 --- a/data/mllm_pt_demo.json +++ /dev/null @@ -1,92 +0,0 @@ -[ - { - "messages": [ - { - "content": "Render a clear and concise summary of the photo.", - "role": "user" - }, - { - "content": "There are two soccer players on the field.", - "role": "assistant" - } - ], - "images": [ - "mllm_demo_data/1.jpg" - ] - }, - { - "messages": [ - { - "content": "Write a terse but informative summary of the picture.", - "role": "user" - }, - { - "content": "A soccer player is sliding on his knees to celebrate", - "role": "assistant" - } - ], - "images": [ - "mllm_demo_data/2.jpg" - ] - }, - { - "messages": [ - { - "content": "What is this?", - "role": "user" - }, - { - "content": "A man is giving a speech.", - "role": "assistant" - } - ], - "images": [ - "mllm_demo_data/3.jpg" - ] - }, - { - "messages": [ - { - "content": "对照片进行简明扼要的概括。", - "role": "user" - }, - { - "content": "两个足球运动员在场上", - "role": "assistant" - } - ], - "images": [ - "mllm_demo_data/1.jpg" - ] - }, - { - "messages": [ - { - "content": "为图片写一个简短但内容丰富的摘要。", - "role": "user" - }, - { - "content": "一个足球运动员在跪地滑行庆祝", - "role": "assistant" - } - ], - "images": [ - "mllm_demo_data/2.jpg" - ] - }, - { - "messages": [ - { - "content": "这是什么?", - "role": "user" - }, - { - "content": "一个男人在演讲", - "role": "assistant" - } - ], - "images": [ - "mllm_demo_data/3.jpg" - ] - } -] \ No newline at end of file From e626e264460d12b282099bfbb8e6679c31e85fc0 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 27 May 2024 20:23:24 +0800 Subject: [PATCH 006/169] support Aya23 --- src/llamafactory/extras/constants.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index 087612fc..32ca5387 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -86,6 +86,19 @@ def register_model_group( VISION_MODELS.add(prefix) +register_model_group( + models={ + "Aya-23-8B-Chat": { + DownloadSource.DEFAULT: "CohereForAI/aya-23-8B", + }, + "Aya-23-35B-Chat": { + DownloadSource.DEFAULT: "CohereForAI/aya-23-35B", + }, + }, + template="cohere", +) + + register_model_group( models={ "Baichuan-7B-Base": { From 08564838bd02651668845ed74e2e60561e5b6d8c Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 27 May 2024 20:37:57 +0800 Subject: [PATCH 007/169] fix full/freeze tuning for mllm --- data/dataset_info.json | 28 +++++------ src/llamafactory/hparams/finetuning_args.py | 16 ++++++- src/llamafactory/hparams/model_args.py | 4 -- src/llamafactory/model/adapter.py | 50 +++++++++++++------- src/llamafactory/model/utils/misc.py | 30 +++++------- src/llamafactory/model/utils/quantization.py | 2 + src/llamafactory/model/utils/visual.py | 7 +-- 7 files changed, 76 insertions(+), 61 deletions(-) diff --git a/data/dataset_info.json b/data/dataset_info.json index 0a148431..2d9b0c83 100644 --- a/data/dataset_info.json +++ b/data/dataset_info.json @@ -38,20 +38,6 @@ "assistant_tag": "assistant" } }, - "mllm_pt_demo": { - "hf_hub_url": "BUAADreamer/mllm_pt_demo", - "formatting": "sharegpt", - "columns": { - "messages": "messages", - "images": "images" - }, - "tags": { - "role_tag": "role", - "content_tag": "content", - "user_tag": "user", - "assistant_tag": "assistant" - } - }, "alpaca_en": { "hf_hub_url": "llamafactory/alpaca_en", "ms_hub_url": "llamafactory/alpaca_en" @@ -322,6 +308,20 @@ "assistant_tag": "assistant" } }, + "mllm_pt_demo": { + "hf_hub_url": "BUAADreamer/mllm_pt_demo", + "formatting": "sharegpt", + "columns": { + "messages": "messages", + "images": "images" + }, + "tags": { + "role_tag": "role", + "content_tag": "content", + "user_tag": "user", + "assistant_tag": "assistant" + } + }, "oasst_de": { "hf_hub_url": "mayflowergmbh/oasst_de" }, diff --git a/src/llamafactory/hparams/finetuning_args.py b/src/llamafactory/hparams/finetuning_args.py index 05b246ae..b9322f18 100644 --- a/src/llamafactory/hparams/finetuning_args.py +++ b/src/llamafactory/hparams/finetuning_args.py @@ -311,6 +311,14 @@ class FinetuningArguments(FreezeArguments, LoraArguments, RLHFArguments, GaloreA default=False, metadata={"help": "Whether or not to make only the parameters in the expanded blocks trainable."}, ) + freeze_vision_tower: bool = field( + default=True, + metadata={"help": "Whether ot not to freeze vision tower in MLLM training."}, + ) + train_mm_proj_only: bool = field( + default=False, + metadata={"help": "Whether or not to train the multimodal projector for MLLM only."}, + ) plot_loss: bool = field( default=False, metadata={"help": "Whether or not to save the training loss curves."}, @@ -328,6 +336,7 @@ class FinetuningArguments(FreezeArguments, LoraArguments, RLHFArguments, GaloreA self.lora_target = split_arg(self.lora_target) self.additional_target = split_arg(self.additional_target) self.galore_target = split_arg(self.galore_target) + self.freeze_vision_tower = self.freeze_vision_tower or self.train_mm_proj_only assert self.finetuning_type in ["lora", "freeze", "full"], "Invalid fine-tuning method." assert self.ref_model_quantization_bit in [None, 8, 4], "We only accept 4-bit or 8-bit quantization." @@ -345,7 +354,7 @@ class FinetuningArguments(FreezeArguments, LoraArguments, RLHFArguments, GaloreA raise ValueError("`dpo_label_smoothing` is only valid for sigmoid loss function.") if self.use_llama_pro and self.finetuning_type == "full": - raise ValueError("`use_llama_pro` is only valid for the Freeze or LoRA training.") + raise ValueError("`use_llama_pro` is only valid for Freeze or LoRA training.") if self.finetuning_type == "lora" and (self.use_galore or self.use_badam): raise ValueError("Cannot use LoRA with GaLore or BAdam together.") @@ -354,4 +363,7 @@ class FinetuningArguments(FreezeArguments, LoraArguments, RLHFArguments, GaloreA raise ValueError("Cannot use GaLore with BAdam together.") if self.loraplus_lr_ratio is not None and self.finetuning_type != "lora": - raise ValueError("`loraplus_lr_ratio` is only valid for the LoRA training.") + raise ValueError("`loraplus_lr_ratio` is only valid for LoRA training.") + + if self.train_mm_proj_only and self.finetuning_type != "full": + raise ValueError("`train_mm_proj_only` is only valid for full training.") diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 781c7e99..650d1c22 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -85,10 +85,6 @@ class ModelArguments: default=False, metadata={"help": "Whethor or not to use multimodal LLM that accepts visual inputs."}, ) - tune_mm_proj: bool = field( - default=False, - metadata={"help": "Whethor or not only finetune mm_projector for MLLM."}, - ) moe_aux_loss_coef: Optional[float] = field( default=None, metadata={"help": "Coefficient of the auxiliary router loss in mixture-of-experts model."}, diff --git a/src/llamafactory/model/adapter.py b/src/llamafactory/model/adapter.py index 015db8a0..a9204ef0 100644 --- a/src/llamafactory/model/adapter.py +++ b/src/llamafactory/model/adapter.py @@ -10,7 +10,6 @@ from ..extras.logging import get_logger from .utils.misc import find_all_linear_modules, find_expanded_modules from .utils.quantization import QuantizationMethod from .utils.unsloth import get_unsloth_peft_model, load_unsloth_peft_model -from .utils.visual import filter_vision_tower_linear if TYPE_CHECKING: @@ -53,21 +52,33 @@ def init_adapter( if finetuning_args.finetuning_type == "full" and is_trainable: logger.info("Fine-tuning method: Full") - if cast_trainable_params_to_fp32: - model = model.float() - if model_args.visual_inputs and hasattr(model, "vision_tower"): # freeze vision model - model.vision_tower.requires_grad_(False) + forbidden_modules = set() + if model_args.visual_inputs and finetuning_args.freeze_vision_tower: + forbidden_modules.add("vision_tower") - if model_args.visual_inputs and hasattr(model, "language_model") and model_args.tune_mm_proj: # freeze language model if only tune mm_proj - model.language_model.requires_grad_(False) + if model_args.visual_inputs and finetuning_args.train_mm_proj_only: + forbidden_modules.add("language_model") + + for name, param in model.named_parameters(): + if not any(forbidden_module in name for forbidden_module in forbidden_modules): + if cast_trainable_params_to_fp32: + param.data = param.data.to(torch.float32) + else: + param.requires_grad_(False) if finetuning_args.finetuning_type == "freeze" and is_trainable: logger.info("Fine-tuning method: Freeze") + + if model_args.visual_inputs: + config = model.config.text_config + else: + config = model.config + num_layers = ( - getattr(model.config, "num_hidden_layers", None) - or getattr(model.config, "num_layers", None) - or getattr(model.config, "n_layer", None) + getattr(config, "num_hidden_layers", None) + or getattr(config, "num_layers", None) + or getattr(config, "n_layer", None) ) if not num_layers: raise ValueError("Current model does not support freeze tuning.") @@ -119,16 +130,19 @@ def init_adapter( trainable_layers.append(module_name) + forbidden_modules = set() + if model_args.visual_inputs and finetuning_args.freeze_vision_tower: + forbidden_modules.add("vision_tower") + for name, param in model.named_parameters(): - if any(trainable_layer in name for trainable_layer in trainable_layers): + if any(trainable_layer in name for trainable_layer in trainable_layers) and not any( + forbidden_module in name for forbidden_module in forbidden_modules + ): if cast_trainable_params_to_fp32: param.data = param.data.to(torch.float32) else: param.requires_grad_(False) - if model_args.visual_inputs and hasattr(model, "vision_tower"): # freeze vision model - model.vision_tower.requires_grad_(False) - logger.info("Set trainable layers: {}".format(",".join(map(str, trainable_layer_ids)))) if finetuning_args.finetuning_type == "lora": @@ -177,15 +191,15 @@ def init_adapter( if is_trainable and adapter_to_resume is None: # create new lora weights while training if len(finetuning_args.lora_target) == 1 and finetuning_args.lora_target[0] == "all": - target_modules = find_all_linear_modules(model) + target_modules = find_all_linear_modules(model, finetuning_args.freeze_vision_tower) else: target_modules = finetuning_args.lora_target if finetuning_args.use_llama_pro: - target_modules = find_expanded_modules(model, target_modules, finetuning_args.num_layer_trainable) + target_modules = find_expanded_modules(model, target_modules, finetuning_args.freeze_trainable_layers) - if model_args.visual_inputs: - target_modules = filter_vision_tower_linear(target_modules) + if model_args.visual_inputs and finetuning_args.freeze_vision_tower: + target_modules = "^(?!.*vision_tower).*(?:{}).*".format("|".join(target_modules)) if ( finetuning_args.use_dora diff --git a/src/llamafactory/model/utils/misc.py b/src/llamafactory/model/utils/misc.py index eca68866..4851bd29 100644 --- a/src/llamafactory/model/utils/misc.py +++ b/src/llamafactory/model/utils/misc.py @@ -1,9 +1,6 @@ from typing import TYPE_CHECKING, List -import torch - from ...extras.logging import get_logger -from .quantization import QuantizationMethod if TYPE_CHECKING: @@ -13,29 +10,28 @@ if TYPE_CHECKING: logger = get_logger(__name__) -def find_all_linear_modules(model: "PreTrainedModel") -> List[str]: +def find_all_linear_modules(model: "PreTrainedModel", freeze_vision_tower: bool) -> List[str]: r""" Finds all available modules to apply lora or galore. """ - quantization_method = getattr(model, "quantization_method", None) - if quantization_method is None: - linear_cls = torch.nn.Linear - elif quantization_method == QuantizationMethod.BITS_AND_BYTES: - import bitsandbytes as bnb + forbidden_modules = {"lm_head"} - linear_cls = bnb.nn.Linear4bit if getattr(model, "is_loaded_in_4bit", False) else bnb.nn.Linear8bitLt - else: - raise ValueError("Finding linear modules for {} models is not supported.".format(quantization_method)) - - output_layer_names = ["lm_head"] if model.config.model_type == "chatglm": - output_layer_names.append("output_layer") + forbidden_modules.add("output_layer") elif model.config.model_type == "internlm2": - output_layer_names.append("output") + forbidden_modules.add("output") + elif model.config.model_type in ["llava", "paligemma"]: + forbidden_modules.add("multi_modal_projector") + + if freeze_vision_tower: + forbidden_modules.add("vision_tower") module_names = set() for name, module in model.named_modules(): - if isinstance(module, linear_cls) and not any(output_layer in name for output_layer in output_layer_names): + if any(forbidden_module in name for forbidden_module in forbidden_modules): + continue + + if "Linear" in module.__class__.__name__ and "Embedding" not in module.__class__.__name__: module_names.add(name.split(".")[-1]) logger.info("Found linear modules: {}".format(",".join(module_names))) diff --git a/src/llamafactory/model/utils/quantization.py b/src/llamafactory/model/utils/quantization.py index 161ad5aa..02a54f07 100644 --- a/src/llamafactory/model/utils/quantization.py +++ b/src/llamafactory/model/utils/quantization.py @@ -35,6 +35,8 @@ class QuantizationMethod(str, Enum): AWQ = "awq" AQLM = "aqlm" QUANTO = "quanto" + EETQ = "eetq" + HQQ = "hqq" def _get_quantization_dataset(tokenizer: "PreTrainedTokenizer", model_args: "ModelArguments") -> List[str]: diff --git a/src/llamafactory/model/utils/visual.py b/src/llamafactory/model/utils/visual.py index a91777ba..c8260b7f 100644 --- a/src/llamafactory/model/utils/visual.py +++ b/src/llamafactory/model/utils/visual.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Tuple, List +from typing import TYPE_CHECKING, Tuple import torch import transformers.models @@ -82,8 +82,3 @@ def configure_visual_model(config: "PretrainedConfig") -> None: if getattr(config, "is_yi_vl_derived_model", None): logger.info("Detected Yi-VL model, applying projector patch.") transformers.models.llava.modeling_llava.LlavaMultiModalProjector = LlavaMultiModalProjectorForYiVL - - -def filter_vision_tower_linear(target_modules: List[str]) -> str: - target_modules = f"^(?!.*vision_tower).*(?:{'|'.join(target_modules)}).*" - return target_modules From cff815391fd15f30647e8694e08c47a514fd6eb2 Mon Sep 17 00:00:00 2001 From: Jianbai Ye Date: Mon, 27 May 2024 20:42:08 +0800 Subject: [PATCH 008/169] add openchat-3.6-8B support --- src/llamafactory/data/template.py | 17 +++++++++++++++++ src/llamafactory/extras/constants.py | 9 +++++++++ 2 files changed, 26 insertions(+) diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index 979390ce..eba23271 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -756,6 +756,23 @@ _register_template( force_system=True, ) +_register_template( + name="openchat-3.6", + format_user=StringFormatter( + slots=[ + ( + "<|start_header_id|>GPT4 Correct User<|end_header_id|>\n\n{{content}}<|eot_id|>" + "<|start_header_id|>GPT4 Correct Assistant<|end_header_id|>\n\n" + ) + ] + ), + format_system=StringFormatter( + slots=[{"bos_token"}, "<|start_header_id|>System<|end_header_id|>\n\n{{content}}<|eot_id|>"] + ), + stop_words=["<|eot_id|>"], + replace_eos=True, +) + _register_template( name="orion", diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index 087612fc..503df641 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -706,6 +706,15 @@ register_model_group( template="openchat", ) +register_model_group( + models={ + "OpenChat3.6-8B-Chat": { + DownloadSource.DEFAULT: "openchat/openchat-3.6-8b-20240522", + } + }, + template="openchat-3.6", +) + register_model_group( models={ From 122213a7a7e114b0c390158cac0ae9faeceb2efc Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Mon, 27 May 2024 20:51:26 +0800 Subject: [PATCH 009/169] Update template.py --- src/llamafactory/data/template.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index eba23271..3d719e5b 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -761,16 +761,15 @@ _register_template( format_user=StringFormatter( slots=[ ( - "<|start_header_id|>GPT4 Correct User<|end_header_id|>\n\n{{content}}<|eot_id|>" + "<|start_header_id|>GPT4 Correct User<|end_header_id|>\n\n{{content}}<|eot_id|>", "<|start_header_id|>GPT4 Correct Assistant<|end_header_id|>\n\n" ) ] ), - format_system=StringFormatter( - slots=[{"bos_token"}, "<|start_header_id|>System<|end_header_id|>\n\n{{content}}<|eot_id|>"] - ), + format_system=StringFormatter(slots=[{"bos_token"}, "{{content}}"]), stop_words=["<|eot_id|>"], replace_eos=True, + force_system=True, ) From f1002b9f930758bb27794ab88a2adbe24417b076 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Mon, 27 May 2024 20:51:56 +0800 Subject: [PATCH 010/169] Update template.py --- src/llamafactory/data/template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index 3d719e5b..5a12524d 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -761,7 +761,7 @@ _register_template( format_user=StringFormatter( slots=[ ( - "<|start_header_id|>GPT4 Correct User<|end_header_id|>\n\n{{content}}<|eot_id|>", + "<|start_header_id|>GPT4 Correct User<|end_header_id|>\n\n{{content}}<|eot_id|>" "<|start_header_id|>GPT4 Correct Assistant<|end_header_id|>\n\n" ) ] From c1fdf81df6ade5da7be4eb66b715f0efd171d5aa Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 27 May 2024 20:54:26 +0800 Subject: [PATCH 011/169] tiny fix --- src/llamafactory/data/template.py | 3 +-- src/llamafactory/extras/constants.py | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index 5a12524d..8332b0cb 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -742,7 +742,6 @@ _register_template( _register_template( name="olmo", format_user=StringFormatter(slots=["<|user|>\n{{content}}<|assistant|>\n"]), - format_assistant=StringFormatter(slots=["{{content}}", {"eos_token"}]), format_system=StringFormatter(slots=[{"eos_token"}, "{{content}}"]), force_system=True, ) @@ -751,11 +750,11 @@ _register_template( _register_template( name="openchat", format_user=StringFormatter(slots=["GPT4 Correct User: {{content}}", {"eos_token"}, "GPT4 Correct Assistant:"]), - format_assistant=StringFormatter(slots=["{{content}}", {"eos_token"}]), format_system=StringFormatter(slots=[{"bos_token"}, "{{content}}"]), force_system=True, ) + _register_template( name="openchat-3.6", format_user=StringFormatter( diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index 3cb221bf..d1fcd4f6 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -719,6 +719,7 @@ register_model_group( template="openchat", ) + register_model_group( models={ "OpenChat3.6-8B-Chat": { From dc07413e7d0b138c89eacaef17596e83ef226540 Mon Sep 17 00:00:00 2001 From: Yimi81 <1548222878@qq.com> Date: Mon, 27 May 2024 13:11:25 +0000 Subject: [PATCH 012/169] fix yi template --- src/llamafactory/data/template.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index 8332b0cb..f13b303b 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -872,6 +872,7 @@ _register_template( _register_template( name="yi", format_user=StringFormatter(slots=["<|im_start|>user\n{{content}}<|im_end|>\n<|im_start|>assistant\n"]), + format_system=StringFormatter(slots=["<|im_start|>system\n{{content}}<|im_end|>\n"]), format_separator=EmptyFormatter(slots=["\n"]), stop_words=["<|im_end|>"], replace_eos=True, From cd67d6eeb55ca2a096e344ba43fc20d8b739f3f7 Mon Sep 17 00:00:00 2001 From: MengqingCao Date: Tue, 28 May 2024 01:33:54 +0000 Subject: [PATCH 013/169] add Ascend npu doc and dependency --- README.md | 20 +++++++++++++++++++- README_zh.md | 20 +++++++++++++++++++- setup.py | 1 + 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fcc96882..ca70110f 100644 --- a/README.md +++ b/README.md @@ -347,7 +347,25 @@ To enable FlashAttention-2 on the Windows platform, you need to install the prec Join [NPU user group](assets/wechat_npu.jpg). -To utilize Ascend NPU devices for (distributed) training and inference, you need to install the **[torch-npu](https://gitee.com/ascend/pytorch)** library and the **[Ascend CANN Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**. +Use `pip install -e .[torch_npu]` to install LLaMA-Factory with **[torch-npu](https://gitee.com/ascend/pytorch)** library. + +To utilize Ascend NPU devices for (distributed) training and inference, you need to install the **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**. You can follow chapter **[install CANN](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC2alpha002/quickstart/quickstart/quickstart_18_0004.html)** in the installation tutorial to install CANN Toolkit and the kernels, or use the fast installation as following: + +```bash +# replace the url according to your choice +# install CANN Toolkit +wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run +chmod +x Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run +./Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install + +# install CANN Kernels +wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C18B800TP015/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run +chmod +x Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run +./Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install + +# set env variables +source /usr/local/Ascend/ascend-toolkit/set_env.sh +``` | Requirement | Minimum | Recommend | | ------------ | ------- | --------- | diff --git a/README_zh.md b/README_zh.md index 2e0b4f34..4f659588 100644 --- a/README_zh.md +++ b/README_zh.md @@ -347,7 +347,25 @@ pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/downl 加入 [NPU 用户群](assets/wechat_npu.jpg)。 -如果使用昇腾 NPU 设备进行(分布式)训练或推理,需要安装 **[torch-npu](https://gitee.com/ascend/pytorch)** 库和 **[Ascend CANN Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**。 +使用 `pip install -e .[torch_npu]` 来安装带有 **[torch-npu](https://gitee.com/ascend/pytorch)** 的 LLaMA-Factory。 + +如果使用昇腾 NPU 设备进行(分布式)训练或推理,需要安装 **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**。可以参考安装教程中的**[安装 CANN](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC2alpha002/quickstart/quickstart/quickstart_18_0004.html)**章节来进行安装,或使用以下快速安装指令: + +```bash +# 请替换 URL 为你需要的 CANN 版本对应的 URL +# 安装 CANN Toolkit +wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run +chmod +x Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run +./Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install + +# 安装 CANN Kernels +wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C18B800TP015/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run +chmod +x Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run +./Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install + +# 设置环境变量 +source /usr/local/Ascend/ascend-toolkit/set_env.sh +``` | 依赖项 | 至少 | 推荐 | | ------------ | ------- | --------- | diff --git a/setup.py b/setup.py index 4d948450..87620c37 100644 --- a/setup.py +++ b/setup.py @@ -33,6 +33,7 @@ extra_require = { "qwen": ["tiktoken", "transformers_stream_generator"], "modelscope": ["modelscope"], "quality": ["ruff"], + "torch_npu": ["torch==2.2.0", "torch_npu==2.2.0", "decorator"] } From 5d45adf47dc9942ec0aff1e35913d027cca607a0 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 28 May 2024 13:44:22 +0800 Subject: [PATCH 014/169] fix #3931 --- .dockerignore | 2 ++ README.md | 2 +- README_zh.md | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.dockerignore b/.dockerignore index ce67d58a..2ac0e11d 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,6 +4,8 @@ .venv cache data +hf_cache +output examples .dockerignore .gitattributes diff --git a/README.md b/README.md index 78312e07..974b30d0 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ Choose your path: ## Features - **Various models**: LLaMA, LLaVA, Mistral, Mixtral-MoE, Qwen, Yi, Gemma, Baichuan, ChatGLM, Phi, etc. -- **Integrated methods**: (Continuous) pre-training, (multimodal) supervised fine-tuning, reward modeling, PPO, DPO, KTO and ORPO. +- **Integrated methods**: (Continuous) pre-training, (multimodal) supervised fine-tuning, reward modeling, PPO, DPO, KTO, ORPO, etc. - **Scalable resources**: 32-bit full-tuning, 16-bit freeze-tuning, 16-bit LoRA and 2/4/8-bit QLoRA via AQLM/AWQ/GPTQ/LLM.int8. - **Advanced algorithms**: GaLore, BAdam, DoRA, LongLoRA, LLaMA Pro, Mixture-of-Depths, LoRA+, LoftQ and Agent tuning. - **Practical tricks**: FlashAttention-2, Unsloth, RoPE scaling, NEFTune and rsLoRA. diff --git a/README_zh.md b/README_zh.md index 5acf3dd1..7106bbab 100644 --- a/README_zh.md +++ b/README_zh.md @@ -45,7 +45,7 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd ## 项目特色 - **多种模型**:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。 -- **集成方法**:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练和 ORPO 训练。 +- **集成方法**:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。 - **多种精度**:32 比特全参数微调、16 比特冻结微调、16 比特 LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8 的 2/4/8 比特 QLoRA 微调。 - **先进算法**:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 Agent 微调。 - **实用技巧**:FlashAttention-2、Unsloth、RoPE scaling、NEFTune 和 rsLoRA。 From 99ee0dadd914e13a63a49944680195d30226843a Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 28 May 2024 16:19:56 +0800 Subject: [PATCH 015/169] update readme --- README.md | 15 ++++++++++++--- README_zh.md | 15 ++++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 974b30d0..9a4bd934 100644 --- a/README.md +++ b/README.md @@ -174,9 +174,9 @@ Compared to ChatGLM's [P-Tuning](https://github.com/THUDM/ChatGLM2-6B/tree/main/ | [Yuan](https://huggingface.co/IEITYuan) | 2B/51B/102B | q_proj,v_proj | yuan | > [!NOTE] -> **Default module** is used for the `--lora_target` argument, you can use `--lora_target all` to specify all the available modules for better convergence. +> **Default module** is used for the `lora_target` argument, you can use `lora_target: all` to specify all the available modules for better convergence. > -> For the "base" models, the `--template` argument can be chosen from `default`, `alpaca`, `vicuna` etc. But make sure to use the **corresponding template** for the "instruct/chat" models. +> For the "base" models, the `template` argument can be chosen from `default`, `alpaca`, `vicuna` etc. But make sure to use the **corresponding template** for the "instruct/chat" models. > > Remember to use the **SAME** template in training and inference. @@ -448,7 +448,16 @@ If you have trouble with downloading models and datasets from Hugging Face, you export USE_MODELSCOPE_HUB=1 # `set USE_MODELSCOPE_HUB=1` for Windows ``` -Train the model by specifying a model ID of the ModelScope Hub as the `--model_name_or_path`. You can find a full list of model IDs at [ModelScope Hub](https://modelscope.cn/models), e.g., `LLM-Research/Meta-Llama-3-8B-Instruct`. +Train the model by specifying a model ID of the ModelScope Hub as the `model_name_or_path`. You can find a full list of model IDs at [ModelScope Hub](https://modelscope.cn/models), e.g., `LLM-Research/Meta-Llama-3-8B-Instruct`. + +### Use W&B Logging + +To use [Weights & Biases](https://wandb.ai) for logging experimental results, you need to add the following arguments. + +```yaml +report_to: wandb +run_name: test_run # optional +``` ## Projects using LLaMA Factory diff --git a/README_zh.md b/README_zh.md index 7106bbab..73426a7f 100644 --- a/README_zh.md +++ b/README_zh.md @@ -174,9 +174,9 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd | [Yuan](https://huggingface.co/IEITYuan) | 2B/51B/102B | q_proj,v_proj | yuan | > [!NOTE] -> **默认模块**应作为 `--lora_target` 参数的默认值,可使用 `--lora_target all` 参数指定全部模块以取得更好的效果。 +> **默认模块**应作为 `lora_target` 参数的默认值,可使用 `lora_target: all` 参数指定全部模块以取得更好的效果。 > -> 对于所有“基座”(Base)模型,`--template` 参数可以是 `default`, `alpaca`, `vicuna` 等任意值。但“对话”(Instruct/Chat)模型请务必使用**对应的模板**。 +> 对于所有“基座”(Base)模型,`template` 参数可以是 `default`, `alpaca`, `vicuna` 等任意值。但“对话”(Instruct/Chat)模型请务必使用**对应的模板**。 > > 请务必在训练和推理时使用**完全一致**的模板。 @@ -446,7 +446,16 @@ CUDA_VISIBLE_DEVICES=0,1 API_PORT=8000 llamafactory-cli api examples/inference/l export USE_MODELSCOPE_HUB=1 # Windows 使用 `set USE_MODELSCOPE_HUB=1` ``` -将 `--model_name_or_path` 设置为模型 ID 来加载对应的模型。在[魔搭社区](https://modelscope.cn/models)查看所有可用的模型,例如 `LLM-Research/Meta-Llama-3-8B-Instruct`。 +将 `model_name_or_path` 设置为模型 ID 来加载对应的模型。在[魔搭社区](https://modelscope.cn/models)查看所有可用的模型,例如 `LLM-Research/Meta-Llama-3-8B-Instruct`。 + +### 使用 W&B 面板 + +若要使用 [Weights & Biases](https://wandb.ai) 记录实验数据,请添加下面的参数。 + +```yaml +report_to: wandb +run_name: test_run # 可选 +``` ## 使用了 LLaMA Factory 的项目 From c8765349bae1bf659cf358469ff61f2b12b7536c Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 28 May 2024 16:41:34 +0800 Subject: [PATCH 016/169] update readme --- README.md | 3 ++- README_zh.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9a4bd934..b9225a94 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,10 @@ [![GitHub pull request](https://img.shields.io/badge/PRs-welcome-blue)](https://github.com/hiyouga/LLaMA-Factory/pulls) [![Discord](https://dcbadge.vercel.app/api/server/rKfvV9r9FK?compact=true&style=flat)](https://discord.gg/rKfvV9r9FK) [![Twitter](https://img.shields.io/twitter/follow/llamafactory_ai)](https://twitter.com/llamafactory_ai) +[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1eRTPn37ltBbYsISy9Aw2NuI2Aq5CQrD9?usp=sharing) +[![Open in DSW](https://gallery.pai-ml.com/assets/open-in-dsw.svg)](https://gallery.pai-ml.com/#/preview/deepLearning/nlp/llama_factory) [![Spaces](https://img.shields.io/badge/🤗-Open%20in%20Spaces-blue)](https://huggingface.co/spaces/hiyouga/LLaMA-Board) [![Studios](https://img.shields.io/badge/ModelScope-Open%20in%20Studios-blue)](https://modelscope.cn/studios/hiyouga/LLaMA-Board) -[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1eRTPn37ltBbYsISy9Aw2NuI2Aq5CQrD9?usp=sharing) [![GitHub Tread](https://trendshift.io/api/badge/repositories/4535)](https://trendshift.io/repositories/4535) diff --git a/README_zh.md b/README_zh.md index 73426a7f..0f47b88e 100644 --- a/README_zh.md +++ b/README_zh.md @@ -8,9 +8,10 @@ [![GitHub pull request](https://img.shields.io/badge/PRs-welcome-blue)](https://github.com/hiyouga/LLaMA-Factory/pulls) [![Discord](https://dcbadge.vercel.app/api/server/rKfvV9r9FK?compact=true&style=flat)](https://discord.gg/rKfvV9r9FK) [![Twitter](https://img.shields.io/twitter/follow/llamafactory_ai)](https://twitter.com/llamafactory_ai) +[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1d5KQtbemerlSDSxZIfAaWXhKr30QypiK?usp=sharing) +[![Open in DSW](https://gallery.pai-ml.com/assets/open-in-dsw.svg)](https://gallery.pai-ml.com/#/preview/deepLearning/nlp/llama_factory) [![Spaces](https://img.shields.io/badge/🤗-Open%20in%20Spaces-blue)](https://huggingface.co/spaces/hiyouga/LLaMA-Board) [![Studios](https://img.shields.io/badge/ModelScope-Open%20in%20Studios-blue)](https://modelscope.cn/studios/hiyouga/LLaMA-Board) -[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1d5KQtbemerlSDSxZIfAaWXhKr30QypiK?usp=sharing) [![GitHub Tread](https://trendshift.io/api/badge/repositories/4535)](https://trendshift.io/repositories/4535) From 7c016b22aa9208ec14f00a9bdb51f69aebb02af5 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 28 May 2024 19:24:22 +0800 Subject: [PATCH 017/169] support DDP in webui --- examples/README.md | 16 +++++++----- examples/README_zh.md | 16 +++++++----- examples/accelerate/master_config.yaml | 18 ------------- examples/accelerate/single_config.yaml | 16 ------------ examples/accelerate/slave_config.yaml | 18 ------------- examples/full_multi_gpu/multi_node.sh | 15 ----------- examples/full_multi_gpu/predict.sh | 5 ---- examples/full_multi_gpu/single_node.sh | 15 ----------- examples/lora_multi_gpu/ds_zero3.sh | 15 ----------- examples/lora_multi_gpu/multi_node.sh | 6 ----- examples/lora_multi_gpu/single_node.sh | 5 ---- examples/lora_multi_npu/ds_zero0.sh | 15 ----------- src/llamafactory/cli.py | 36 +++++++++++++++++++++++++- src/llamafactory/extras/misc.py | 17 +++++++++--- src/llamafactory/hparams/parser.py | 5 ---- src/llamafactory/launcher.py | 9 +++++++ src/llamafactory/webui/locales.py | 5 ---- src/llamafactory/webui/runner.py | 9 ++----- src/llamafactory/webui/utils.py | 3 +-- 19 files changed, 78 insertions(+), 166 deletions(-) delete mode 100644 examples/accelerate/master_config.yaml delete mode 100644 examples/accelerate/single_config.yaml delete mode 100644 examples/accelerate/slave_config.yaml delete mode 100644 examples/full_multi_gpu/multi_node.sh delete mode 100644 examples/full_multi_gpu/predict.sh delete mode 100644 examples/full_multi_gpu/single_node.sh delete mode 100644 examples/lora_multi_gpu/ds_zero3.sh delete mode 100644 examples/lora_multi_gpu/multi_node.sh delete mode 100644 examples/lora_multi_gpu/single_node.sh delete mode 100644 examples/lora_multi_npu/ds_zero0.sh create mode 100644 src/llamafactory/launcher.py diff --git a/examples/README.md b/examples/README.md index 9c6d5fb0..727b27c8 100644 --- a/examples/README.md +++ b/examples/README.md @@ -110,19 +110,20 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_l #### Supervised Fine-Tuning with Accelerate on Single Node ```bash -bash examples/lora_multi_gpu/single_node.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml ``` #### Supervised Fine-Tuning with Accelerate on Multiple Nodes ```bash -bash examples/lora_multi_gpu/multi_node.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml +CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml ``` #### Supervised Fine-Tuning with DeepSpeed ZeRO-3 (Weight Sharding) ```bash -bash examples/lora_multi_gpu/ds_zero3.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft_ds.yaml ``` ### LoRA Fine-Tuning on Multiple NPUs @@ -130,7 +131,7 @@ bash examples/lora_multi_gpu/ds_zero3.sh #### Supervised Fine-Tuning with DeepSpeed ZeRO-0 ```bash -bash examples/lora_multi_npu/ds_zero0.sh +ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_npu/llama3_lora_sft_ds.yaml ``` ### Full-Parameter Fine-Tuning on Multiple GPUs @@ -138,19 +139,20 @@ bash examples/lora_multi_npu/ds_zero0.sh #### Supervised Fine-Tuning with Accelerate on Single Node ```bash -bash examples/full_multi_gpu/single_node.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml ``` #### Supervised Fine-Tuning with Accelerate on Multiple Nodes ```bash -bash examples/full_multi_gpu/multi_node.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml +CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml ``` #### Batch Predicting and Computing BLEU and ROUGE Scores ```bash -bash examples/full_multi_gpu/predict.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llama3_full_predict.yaml ``` ### Merging LoRA Adapters and Quantization diff --git a/examples/README_zh.md b/examples/README_zh.md index 0ff33398..6974faa9 100644 --- a/examples/README_zh.md +++ b/examples/README_zh.md @@ -110,19 +110,20 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_l #### 使用 Accelerate 进行单节点训练 ```bash -bash examples/lora_multi_gpu/single_node.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml ``` #### 使用 Accelerate 进行多节点训练 ```bash -bash examples/lora_multi_gpu/multi_node.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml +CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml ``` #### 使用 DeepSpeed ZeRO-3 平均分配显存 ```bash -bash examples/lora_multi_gpu/ds_zero3.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft_ds.yaml ``` ### 多 NPU LoRA 微调 @@ -130,7 +131,7 @@ bash examples/lora_multi_gpu/ds_zero3.sh #### 使用 DeepSpeed ZeRO-0 训练 ```bash -bash examples/lora_multi_npu/ds_zero0.sh +ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_npu/llama3_lora_sft_ds.yaml ``` ### 多 GPU 全参数微调 @@ -138,19 +139,20 @@ bash examples/lora_multi_npu/ds_zero0.sh #### 使用 DeepSpeed 进行单节点训练 ```bash -bash examples/full_multi_gpu/single_node.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml ``` #### 使用 DeepSpeed 进行多节点训练 ```bash -bash examples/full_multi_gpu/multi_node.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml +CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml ``` #### 批量预测并计算 BLEU 和 ROUGE 分数 ```bash -bash examples/full_multi_gpu/predict.sh +CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llama3_full_predict.yaml ``` ### 合并 LoRA 适配器与模型量化 diff --git a/examples/accelerate/master_config.yaml b/examples/accelerate/master_config.yaml deleted file mode 100644 index a1018313..00000000 --- a/examples/accelerate/master_config.yaml +++ /dev/null @@ -1,18 +0,0 @@ -compute_environment: LOCAL_MACHINE -debug: false -distributed_type: MULTI_GPU -downcast_bf16: 'no' -gpu_ids: all -machine_rank: 0 -main_process_ip: 192.168.0.1 -main_process_port: 29555 -main_training_function: main -mixed_precision: fp16 -num_machines: 2 # the number of nodes -num_processes: 8 # the number of GPUs in all nodes -rdzv_backend: static -same_network: true -tpu_env: [] -tpu_use_cluster: false -tpu_use_sudo: false -use_cpu: false diff --git a/examples/accelerate/single_config.yaml b/examples/accelerate/single_config.yaml deleted file mode 100644 index 97f8c633..00000000 --- a/examples/accelerate/single_config.yaml +++ /dev/null @@ -1,16 +0,0 @@ -compute_environment: LOCAL_MACHINE -debug: false -distributed_type: MULTI_GPU -downcast_bf16: 'no' -gpu_ids: all -machine_rank: 0 -main_training_function: main -mixed_precision: fp16 -num_machines: 1 # the number of nodes -num_processes: 4 # the number of GPUs in all nodes -rdzv_backend: static -same_network: true -tpu_env: [] -tpu_use_cluster: false -tpu_use_sudo: false -use_cpu: false diff --git a/examples/accelerate/slave_config.yaml b/examples/accelerate/slave_config.yaml deleted file mode 100644 index e610fd0e..00000000 --- a/examples/accelerate/slave_config.yaml +++ /dev/null @@ -1,18 +0,0 @@ -compute_environment: LOCAL_MACHINE -debug: false -distributed_type: MULTI_GPU -downcast_bf16: 'no' -gpu_ids: all -machine_rank: 1 -main_process_ip: 192.168.0.1 -main_process_port: 29555 -main_training_function: main -mixed_precision: fp16 -num_machines: 2 # the number of nodes -num_processes: 8 # the number of GPUs in all nodes -rdzv_backend: static -same_network: true -tpu_env: [] -tpu_use_cluster: false -tpu_use_sudo: false -use_cpu: false diff --git a/examples/full_multi_gpu/multi_node.sh b/examples/full_multi_gpu/multi_node.sh deleted file mode 100644 index 34c038d4..00000000 --- a/examples/full_multi_gpu/multi_node.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -NPROC_PER_NODE=4 -NNODES=2 -RANK=0 -MASTER_ADDR=192.168.0.1 -MASTER_PORT=29500 - -CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun \ - --nproc_per_node $NPROC_PER_NODE \ - --nnodes $NNODES \ - --node_rank $RANK \ - --master_addr $MASTER_ADDR \ - --master_port $MASTER_PORT \ - src/train.py examples/full_multi_gpu/llama3_full_sft.yaml diff --git a/examples/full_multi_gpu/predict.sh b/examples/full_multi_gpu/predict.sh deleted file mode 100644 index 2445f444..00000000 --- a/examples/full_multi_gpu/predict.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -CUDA_VISIBLE_DEVICES=0,1,2,3 accelerate launch \ - --config_file examples/accelerate/single_config.yaml \ - src/train.py examples/full_multi_gpu/llama3_full_predict.yaml diff --git a/examples/full_multi_gpu/single_node.sh b/examples/full_multi_gpu/single_node.sh deleted file mode 100644 index ac29c097..00000000 --- a/examples/full_multi_gpu/single_node.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -NPROC_PER_NODE=4 -NNODES=1 -RANK=0 -MASTER_ADDR=127.0.0.1 -MASTER_PORT=29500 - -CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun \ - --nproc_per_node $NPROC_PER_NODE \ - --nnodes $NNODES \ - --node_rank $RANK \ - --master_addr $MASTER_ADDR \ - --master_port $MASTER_PORT \ - src/train.py examples/full_multi_gpu/llama3_full_sft.yaml diff --git a/examples/lora_multi_gpu/ds_zero3.sh b/examples/lora_multi_gpu/ds_zero3.sh deleted file mode 100644 index 90ea00dd..00000000 --- a/examples/lora_multi_gpu/ds_zero3.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -NPROC_PER_NODE=4 -NNODES=1 -RANK=0 -MASTER_ADDR=127.0.0.1 -MASTER_PORT=29500 - -CUDA_VISIBLE_DEVICES=0,1,2,3 torchrun \ - --nproc_per_node $NPROC_PER_NODE \ - --nnodes $NNODES \ - --node_rank $RANK \ - --master_addr $MASTER_ADDR \ - --master_port $MASTER_PORT \ - src/train.py examples/lora_multi_gpu/llama3_lora_sft_ds.yaml diff --git a/examples/lora_multi_gpu/multi_node.sh b/examples/lora_multi_gpu/multi_node.sh deleted file mode 100644 index 401fac5f..00000000 --- a/examples/lora_multi_gpu/multi_node.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -# also launch it on slave machine using slave_config.yaml - -CUDA_VISIBLE_DEVICES=0,1,2,3 accelerate launch \ - --config_file examples/accelerate/master_config.yaml \ - src/train.py examples/lora_multi_gpu/llama3_lora_sft.yaml diff --git a/examples/lora_multi_gpu/single_node.sh b/examples/lora_multi_gpu/single_node.sh deleted file mode 100644 index 885a0e8c..00000000 --- a/examples/lora_multi_gpu/single_node.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -CUDA_VISIBLE_DEVICES=0,1,2,3 accelerate launch \ - --config_file examples/accelerate/single_config.yaml \ - src/train.py examples/lora_multi_gpu/llama3_lora_sft.yaml diff --git a/examples/lora_multi_npu/ds_zero0.sh b/examples/lora_multi_npu/ds_zero0.sh deleted file mode 100644 index 4ffaa1b0..00000000 --- a/examples/lora_multi_npu/ds_zero0.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -NPROC_PER_NODE=4 -NNODES=1 -RANK=0 -MASTER_ADDR=127.0.0.1 -MASTER_PORT=29500 - -ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 torchrun \ - --nproc_per_node $NPROC_PER_NODE \ - --nnodes $NNODES \ - --node_rank $RANK \ - --master_addr $MASTER_ADDR \ - --master_port $MASTER_PORT \ - src/train.py examples/lora_multi_npu/llama3_lora_sft_ds.yaml diff --git a/src/llamafactory/cli.py b/src/llamafactory/cli.py index f9b63ded..26975f3c 100644 --- a/src/llamafactory/cli.py +++ b/src/llamafactory/cli.py @@ -1,9 +1,16 @@ +import os +import random +import subprocess import sys from enum import Enum, unique +from llamafactory import launcher + from .api.app import run_api from .chat.chat_model import run_chat from .eval.evaluator import run_eval +from .extras.logging import get_logger +from .extras.misc import get_device_count from .train.tuner import export_model, run_exp from .webui.interface import run_web_demo, run_web_ui @@ -37,6 +44,8 @@ WELCOME = ( + "-" * 58 ) +logger = get_logger(__name__) + @unique class Command(str, Enum): @@ -62,7 +71,32 @@ def main(): elif command == Command.EXPORT: export_model() elif command == Command.TRAIN: - run_exp() + if get_device_count() > 1: + nnodes = os.environ.get("NNODES", "1") + node_rank = os.environ.get("RANK", "0") + nproc_per_node = os.environ.get("NPROC_PER_NODE", str(get_device_count())) + master_addr = os.environ.get("MASTER_ADDR", "127.0.0.1") + master_port = os.environ.get("MASTER_PORT", str(random.randint(20001, 29999))) + logger.info("Initializing distributed tasks at: {}:{}".format(master_addr, master_port)) + subprocess.run( + [ + "torchrun", + "--nnodes", + nnodes, + "--node_rank", + node_rank, + "--nproc_per_node", + nproc_per_node, + "--master_addr", + master_addr, + "--master_port", + master_port, + launcher.__file__, + *sys.argv[1:], + ] + ) + else: + run_exp() elif command == Command.WEBDEMO: run_web_demo() elif command == Command.WEBUI: diff --git a/src/llamafactory/extras/misc.py b/src/llamafactory/extras/misc.py index 0dc07d28..2c7f170c 100644 --- a/src/llamafactory/extras/misc.py +++ b/src/llamafactory/extras/misc.py @@ -165,13 +165,15 @@ def get_current_device() -> torch.device: def get_device_count() -> int: r""" - Gets the number of available GPU devices. + Gets the number of available GPU or NPU devices. """ - if not torch.cuda.is_available(): + if is_torch_npu_available(): + return torch.npu.device_count() + elif is_torch_cuda_available(): + return torch.cuda.device_count() + else: return 0 - return torch.cuda.device_count() - def get_logits_processor() -> "LogitsProcessorList": r""" @@ -194,6 +196,13 @@ def infer_optim_dtype(model_dtype: torch.dtype) -> torch.dtype: return torch.float32 +def is_gpu_or_npu_available() -> bool: + r""" + Checks if the GPU or NPU is available. + """ + return is_torch_npu_available() or is_torch_cuda_available() + + def has_tokenized_data(path: os.PathLike) -> bool: r""" Checks if the path has a tokenized dataset. diff --git a/src/llamafactory/hparams/parser.py b/src/llamafactory/hparams/parser.py index 6311297e..c6869e4c 100644 --- a/src/llamafactory/hparams/parser.py +++ b/src/llamafactory/hparams/parser.py @@ -10,7 +10,6 @@ from transformers.trainer_utils import get_last_checkpoint from transformers.utils import is_torch_bf16_gpu_available from transformers.utils.versions import require_version -from ..extras.constants import TRAINER_CONFIG from ..extras.logging import get_logger from ..extras.misc import check_dependencies, get_current_device from .data_args import DataArguments @@ -252,10 +251,6 @@ def get_train_args(args: Optional[Dict[str, Any]] = None) -> _TRAIN_CLS: and can_resume_from_checkpoint ): last_checkpoint = get_last_checkpoint(training_args.output_dir) - files = os.listdir(training_args.output_dir) - if last_checkpoint is None and len(files) > 0 and (len(files) != 1 or files[0] != TRAINER_CONFIG): - raise ValueError("Output directory already exists and is not empty. Please set `overwrite_output_dir`.") - if last_checkpoint is not None: training_args.resume_from_checkpoint = last_checkpoint logger.info( diff --git a/src/llamafactory/launcher.py b/src/llamafactory/launcher.py new file mode 100644 index 00000000..de154db9 --- /dev/null +++ b/src/llamafactory/launcher.py @@ -0,0 +1,9 @@ +from llamafactory.train.tuner import run_exp + + +def launch(): + run_exp() + + +if __name__ == "__main__": + launch() diff --git a/src/llamafactory/webui/locales.py b/src/llamafactory/webui/locales.py index bd4a4205..570a8b42 100644 --- a/src/llamafactory/webui/locales.py +++ b/src/llamafactory/webui/locales.py @@ -1469,11 +1469,6 @@ ALERTS = { "ru": "Обучение недоступно в демонстрационном режиме, сначала скопируйте пространство в частное.", "zh": "展示模式不支持训练,请先复制到私人空间。", }, - "err_device_count": { - "en": "Multiple GPUs are not supported yet.", - "ru": "Пока не поддерживается множественные GPU.", - "zh": "尚不支持多 GPU 训练。", - }, "err_tool_name": { "en": "Tool name not found.", "ru": "Имя инструмента не найдено.", diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index 57595a08..1310b999 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -6,10 +6,9 @@ from typing import TYPE_CHECKING, Any, Dict, Generator, Optional import psutil from transformers.trainer import TRAINING_ARGS_NAME -from transformers.utils import is_torch_cuda_available from ..extras.constants import TRAINING_STAGES -from ..extras.misc import get_device_count, torch_gc +from ..extras.misc import is_gpu_or_npu_available, torch_gc from ..extras.packages import is_gradio_available from .common import get_module, get_save_dir, load_args, load_config, save_args from .locales import ALERTS @@ -64,16 +63,13 @@ class Runner: if not from_preview and self.demo_mode: return ALERTS["err_demo"][lang] - if not from_preview and get_device_count() > 1: - return ALERTS["err_device_count"][lang] - if do_train: stage = TRAINING_STAGES[get("train.training_stage")] reward_model = get("train.reward_model") if stage == "ppo" and not reward_model: return ALERTS["err_no_reward_model"][lang] - if not from_preview and not is_torch_cuda_available(): + if not from_preview and not is_gpu_or_npu_available(): gr.Warning(ALERTS["warn_no_cuda"][lang]) return "" @@ -273,7 +269,6 @@ class Runner: self.do_train, self.running_data = do_train, data args = self._parse_train_args(data) if do_train else self._parse_eval_args(data) env = deepcopy(os.environ) - env["CUDA_VISIBLE_DEVICES"] = os.environ.get("CUDA_VISIBLE_DEVICES", "0") env["LLAMABOARD_ENABLED"] = "1" self.trainer = Popen("llamafactory-cli train {}".format(save_cmd(args)), env=env, shell=True) yield from self.monitor() diff --git a/src/llamafactory/webui/utils.py b/src/llamafactory/webui/utils.py index 3d34f0d2..ceeb9352 100644 --- a/src/llamafactory/webui/utils.py +++ b/src/llamafactory/webui/utils.py @@ -42,8 +42,7 @@ def clean_cmd(args: Dict[str, Any]) -> Dict[str, Any]: def gen_cmd(args: Dict[str, Any]) -> str: - current_devices = os.environ.get("CUDA_VISIBLE_DEVICES", "0") - cmd_lines = ["CUDA_VISIBLE_DEVICES={} llamafactory-cli train ".format(current_devices)] + cmd_lines = ["llamafactory-cli train "] for k, v in clean_cmd(args).items(): cmd_lines.append(" --{} {} ".format(k, str(v))) From 087b9faa3947bf6d2a53a8dedef487a662d426af Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 28 May 2024 19:35:52 +0800 Subject: [PATCH 018/169] update readme --- README.md | 7 +++---- README_zh.md | 5 ++--- src/llamafactory/cli.py | 3 +-- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index b9225a94..fdc77777 100644 --- a/README.md +++ b/README.md @@ -395,9 +395,6 @@ See [examples/README.md](examples/README.md) for advanced usage (including distr ### Fine-Tuning with LLaMA Board GUI (powered by [Gradio](https://github.com/gradio-app/gradio)) -> [!IMPORTANT] -> LLaMA Board GUI only supports training on a single GPU. - #### Use local environment ```bash @@ -451,7 +448,7 @@ export USE_MODELSCOPE_HUB=1 # `set USE_MODELSCOPE_HUB=1` for Windows Train the model by specifying a model ID of the ModelScope Hub as the `model_name_or_path`. You can find a full list of model IDs at [ModelScope Hub](https://modelscope.cn/models), e.g., `LLM-Research/Meta-Llama-3-8B-Instruct`. -### Use W&B Logging +### Use W&B Logger To use [Weights & Biases](https://wandb.ai) for logging experimental results, you need to add the following arguments. @@ -460,6 +457,8 @@ report_to: wandb run_name: test_run # optional ``` +Set `WANDB_API_KEY` to [your key](https://wandb.ai/authorize) when launching training tasks to log in with your W&B account. + ## Projects using LLaMA Factory If you have a project that should be incorporated, please contact via email or create a pull request. diff --git a/README_zh.md b/README_zh.md index 0f47b88e..65a87705 100644 --- a/README_zh.md +++ b/README_zh.md @@ -395,9 +395,6 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli export examples/merge_lora/llama3_lora_s ### LLaMA Board 可视化微调(由 [Gradio](https://github.com/gradio-app/gradio) 驱动) -> [!IMPORTANT] -> LLaMA Board 可视化界面目前仅支持单 GPU 训练。 - #### 使用本地环境 ```bash @@ -458,6 +455,8 @@ report_to: wandb run_name: test_run # 可选 ``` +在启动训练任务时,将 `WANDB_API_KEY` 设置为[密钥](https://wandb.ai/authorize)来登录 W&B 账户。 + ## 使用了 LLaMA Factory 的项目 如果您有项目希望添加至下述列表,请通过邮件联系或者创建一个 PR。 diff --git a/src/llamafactory/cli.py b/src/llamafactory/cli.py index 26975f3c..a74445a6 100644 --- a/src/llamafactory/cli.py +++ b/src/llamafactory/cli.py @@ -4,8 +4,7 @@ import subprocess import sys from enum import Enum, unique -from llamafactory import launcher - +from . import launcher from .api.app import run_api from .chat.chat_model import run_chat from .eval.evaluator import run_eval From 1e80a3a6385f615bf038806b9c6b1f73f4a3e24f Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 28 May 2024 21:27:27 +0800 Subject: [PATCH 019/169] bump vllm version to 0.4.1 --- setup.py | 2 +- src/llamafactory/hparams/parser.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 4d948450..b44e83ac 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ extra_require = { "metrics": ["nltk", "jieba", "rouge-chinese"], "deepspeed": ["deepspeed>=0.10.0,<=0.14.0"], "bitsandbytes": ["bitsandbytes>=0.39.0"], - "vllm": ["vllm>=0.4.0"], + "vllm": ["vllm>=0.4.1"], "galore": ["galore-torch"], "badam": ["badam"], "gptq": ["optimum>=1.16.0", "auto-gptq>=0.5.0"], diff --git a/src/llamafactory/hparams/parser.py b/src/llamafactory/hparams/parser.py index c6869e4c..adb206f8 100644 --- a/src/llamafactory/hparams/parser.py +++ b/src/llamafactory/hparams/parser.py @@ -6,6 +6,7 @@ from typing import Any, Dict, Optional, Tuple import torch import transformers from transformers import HfArgumentParser, Seq2SeqTrainingArguments +from transformers.integrations import is_deepspeed_zero3_enabled from transformers.trainer_utils import get_last_checkpoint from transformers.utils import is_torch_bf16_gpu_available from transformers.utils.versions import require_version @@ -63,6 +64,9 @@ def _verify_model_args(model_args: "ModelArguments", finetuning_args: "Finetunin if model_args.adapter_name_or_path is not None and finetuning_args.finetuning_type != "lora": raise ValueError("Adapter is only valid for the LoRA method.") + if model_args.use_unsloth and is_deepspeed_zero3_enabled(): + raise ValueError("Unsloth is incompatible with DeepSpeed ZeRO-3.") + if model_args.quantization_bit is not None: if finetuning_args.finetuning_type != "lora": raise ValueError("Quantization is only compatible with the LoRA method.") @@ -89,7 +93,7 @@ def _check_extra_dependencies( require_version("mixture-of-depth>=1.1.6", "To fix: pip install mixture-of-depth>=1.1.6") if model_args.infer_backend == "vllm": - require_version("vllm>=0.4.0", "To fix: pip install vllm>=0.4.0") + require_version("vllm>=0.4.1", "To fix: pip install vllm>=0.4.1") if finetuning_args.use_galore: require_version("galore_torch", "To fix: pip install galore_torch") From 900e1ea622a2ffa45c5e2a359471962563fabca7 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 28 May 2024 21:43:26 +0800 Subject: [PATCH 020/169] clean kto trainer --- src/llamafactory/train/kto/trainer.py | 95 ++++++++++++++------------- 1 file changed, 50 insertions(+), 45 deletions(-) diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index 096fd935..292e61c7 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -1,7 +1,7 @@ from collections import defaultdict from contextlib import nullcontext from types import MethodType -from typing import TYPE_CHECKING, Dict, Optional, Tuple, Union +from typing import TYPE_CHECKING, Dict, Literal, Optional, Tuple, Union import torch from transformers import Trainer @@ -101,42 +101,39 @@ class CustomKTOTrainer(KTOTrainer): return -all_logps def forward( - self, model: "PreTrainedModel", batch: Dict[str, "torch.Tensor"] - ) -> Tuple["torch.Tensor", "torch.Tensor", "torch.Tensor", "torch.Tensor", "torch.Tensor"]: - with torch.no_grad(): - kl_model_inputs = {"input_ids": batch["kl_input_ids"], "attention_mask": batch["kl_attention_mask"]} - if "pixel_values" in batch: - kl_model_inputs["pixel_values"] = batch["pixel_values"] - - if "kl_token_type_ids" in batch: - kl_model_inputs["token_type_ids"] = batch["kl_token_type_ids"] - - kl_logits = model(**kl_model_inputs, return_dict=True, use_cache=False).logits.to(torch.float32) - - model_inputs = {"input_ids": batch["input_ids"], "attention_mask": batch["attention_mask"]} + self, model: "PreTrainedModel", batch: Dict[str, "torch.Tensor"], prefix: Literal["", "kl_"] = "" + ) -> Tuple["torch.Tensor", "torch.Tensor"]: + r""" + Runs forward pass and computes the log probabilities. + """ + batch = {k: v.detach().clone() for k, v in batch.items()} # avoid error + model_inputs = { + "input_ids": batch["{}input_ids".format(prefix)], + "attention_mask": batch["{}attention_mask".format(prefix)], + } if "pixel_values" in batch: model_inputs["pixel_values"] = batch["pixel_values"] - if "token_type_ids" in batch: - model_inputs["token_type_ids"] = batch["token_type_ids"] + if "{}token_type_ids".format(prefix) in batch: + model_inputs["token_type_ids"] = batch["{}token_type_ids".format(prefix)] - target_logits = model(**model_inputs, return_dict=True, use_cache=False).logits.to(torch.float32) + logits = model(**model_inputs, return_dict=True, use_cache=False).logits.to(torch.float32) - target_logps = self.get_batch_logps( - logits=target_logits, - labels=batch["labels"], + logps = self.get_batch_logps( + logits=logits, + labels=batch["{}labels".format(prefix)], average_log_prob=False, is_encoder_decoder=self.is_encoder_decoder, label_pad_token_id=self.label_pad_token_id, ) + return logits, logps - kl_logps = self.get_batch_logps( - logits=kl_logits, - labels=batch["kl_labels"], - average_log_prob=False, - is_encoder_decoder=self.is_encoder_decoder, - label_pad_token_id=self.label_pad_token_id, - ) + def concatenated_forward( + self, model: "PreTrainedModel", batch: Dict[str, "torch.Tensor"] + ) -> Tuple["torch.Tensor", "torch.Tensor", "torch.Tensor", "torch.Tensor", "torch.Tensor"]: + target_logits, target_logps = self.forward(model, batch) + with torch.no_grad(): + _, kl_logps = self.forward(model, batch, prefix="kl_") if len(target_logps) != len(batch["kto_tags"]): raise ValueError("Mismatched shape of inputs and labels.") @@ -152,6 +149,30 @@ class CustomKTOTrainer(KTOTrainer): return chosen_logps, rejected_logps, chosen_logits, rejected_logits, kl_logps + def compute_reference_log_probs( + self, batch: Dict[str, "torch.Tensor"] + ) -> Tuple["torch.Tensor", "torch.Tensor", "torch.Tensor"]: + r""" + Computes log probabilities of the reference model. + """ + if self.ref_model is None: + ref_model = self.model + ref_context = self.accelerator.unwrap_model(self.model).disable_adapter() + else: + ref_model = self.ref_model + ref_context = nullcontext() + + with torch.no_grad(), ref_context: + ( + reference_chosen_logps, + reference_rejected_logps, + _, + _, + reference_kl_logps, + ) = self.concatenated_forward(ref_model, batch) + + return reference_chosen_logps, reference_rejected_logps, reference_kl_logps + def get_batch_loss_metrics( self, model: "PreTrainedModel", @@ -167,25 +188,9 @@ class CustomKTOTrainer(KTOTrainer): policy_chosen_logits, _, policy_kl_logps, - ) = self.forward(model, batch) - - with torch.no_grad(): - if self.ref_model is None: - ref_model = self.model - ref_context = self.accelerator.unwrap_model(self.model).disable_adapter() - else: - ref_model = self.ref_model - ref_context = nullcontext() - - with ref_context: - ( - reference_chosen_logps, - reference_rejected_logps, - _, - _, - reference_kl_logps, - ) = self.forward(ref_model, batch) + ) = self.concatenated_forward(model, batch) + reference_chosen_logps, reference_rejected_logps, reference_kl_logps = self.compute_reference_log_probs(batch) losses, chosen_rewards, rejected_rewards, kl = self.kto_loss( policy_chosen_logps, policy_rejected_logps, From 7c8e01bb74bb2d2da5dba5059a9c262e4730b802 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 29 May 2024 00:14:29 +0800 Subject: [PATCH 021/169] update dpo, kto trainer --- src/llamafactory/train/dpo/trainer.py | 10 +++++----- src/llamafactory/train/kto/trainer.py | 12 +++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/llamafactory/train/dpo/trainer.py b/src/llamafactory/train/dpo/trainer.py index f3c2443c..542335a3 100644 --- a/src/llamafactory/train/dpo/trainer.py +++ b/src/llamafactory/train/dpo/trainer.py @@ -7,7 +7,7 @@ import torch import torch.nn.functional as F from transformers import Trainer from trl import DPOTrainer -from trl.trainer.utils import disable_dropout_in_model +from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX from ..utils import create_custom_optimzer, create_custom_scheduler @@ -179,7 +179,7 @@ class CustomDPOTrainer(DPOTrainer): return chosen_logps, rejected_logps, chosen_logits, rejected_logits def compute_reference_log_probs( - self, batch: Dict[str, "torch.Tensor"] + self, model: "PreTrainedModel", batch: Dict[str, "torch.Tensor"] ) -> Tuple[Optional["torch.Tensor"], Optional["torch.Tensor"]]: r""" Computes log probabilities of the reference model. @@ -188,8 +188,8 @@ class CustomDPOTrainer(DPOTrainer): return None, None if self.ref_model is None: - ref_model = self.model - ref_context = self.accelerator.unwrap_model(self.model).disable_adapter() + ref_model = model + ref_context = self.accelerator.unwrap_model(model).disable_adapter() else: ref_model = self.ref_model ref_context = nullcontext() @@ -221,7 +221,7 @@ class CustomDPOTrainer(DPOTrainer): policy_rejected_logits, ) = self.concatenated_forward(model, batch) - reference_chosen_logps, reference_rejected_logps = self.compute_reference_log_probs(batch) + reference_chosen_logps, reference_rejected_logps = self.compute_reference_log_probs(model, batch) losses, chosen_rewards, rejected_rewards = self.compute_preference_loss( policy_chosen_logps, policy_rejected_logps, diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index 292e61c7..82ae722d 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Dict, Literal, Optional, Tuple, Union import torch from transformers import Trainer from trl import KTOTrainer -from trl.trainer.utils import disable_dropout_in_model +from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX from ..utils import create_custom_optimzer, create_custom_scheduler @@ -150,14 +150,14 @@ class CustomKTOTrainer(KTOTrainer): return chosen_logps, rejected_logps, chosen_logits, rejected_logits, kl_logps def compute_reference_log_probs( - self, batch: Dict[str, "torch.Tensor"] + self, model: "PreTrainedModel", batch: Dict[str, "torch.Tensor"] ) -> Tuple["torch.Tensor", "torch.Tensor", "torch.Tensor"]: r""" Computes log probabilities of the reference model. """ if self.ref_model is None: - ref_model = self.model - ref_context = self.accelerator.unwrap_model(self.model).disable_adapter() + ref_model = model + ref_context = self.accelerator.unwrap_model(model).disable_adapter() else: ref_model = self.ref_model ref_context = nullcontext() @@ -190,7 +190,9 @@ class CustomKTOTrainer(KTOTrainer): policy_kl_logps, ) = self.concatenated_forward(model, batch) - reference_chosen_logps, reference_rejected_logps, reference_kl_logps = self.compute_reference_log_probs(batch) + reference_chosen_logps, reference_rejected_logps, reference_kl_logps = self.compute_reference_log_probs( + model, batch + ) losses, chosen_rewards, rejected_rewards, kl = self.kto_loss( policy_chosen_logps, policy_rejected_logps, From 65cd8bdbdbe1b19250ecd813aeb72c8e00ef2f9c Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 29 May 2024 00:23:23 +0800 Subject: [PATCH 022/169] 10x generate in ppo w/ zero3 https://github.com/huggingface/trl/pull/1483 --- src/llamafactory/train/ppo/trainer.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/llamafactory/train/ppo/trainer.py b/src/llamafactory/train/ppo/trainer.py index 985664b7..27353c72 100644 --- a/src/llamafactory/train/ppo/trainer.py +++ b/src/llamafactory/train/ppo/trainer.py @@ -13,6 +13,7 @@ from transformers.trainer_utils import PREFIX_CHECKPOINT_DIR from transformers.utils import SAFE_WEIGHTS_NAME, WEIGHTS_NAME from trl import PPOConfig, PPOTrainer from trl.core import PPODecorators, logprobs_from_logits +from trl.models.utils import unwrap_model_for_generation from ...extras.callbacks import FixValueHeadModelCallback, LogCallback from ...extras.logging import get_logger @@ -322,10 +323,10 @@ class CustomPPOTrainer(PPOTrainer, Trainer): for k, v in batch.items(): batch[k] = v[:, start_index:] - unwrapped_model: "AutoModelForCausalLMWithValueHead" = self.accelerator.unwrap_model(self.model) - generate_output: torch.Tensor = unwrapped_model.generate( - generation_config=self.generation_config, logits_processor=get_logits_processor(), **batch - ) + with unwrap_model_for_generation(self.model, self.accelerator) as unwrapped_model: + generate_output: torch.Tensor = unwrapped_model.generate( + generation_config=self.generation_config, logits_processor=get_logits_processor(), **batch + ) if self.model_args.upcast_layernorm: restore_layernorm(self.model, layernorm_params) From e4b420c146235b2bce70d66a081efd137aef98af Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 29 May 2024 01:13:17 +0800 Subject: [PATCH 023/169] add ds config to webui --- src/llamafactory/webui/components/train.py | 12 ++++- src/llamafactory/webui/engine.py | 4 +- src/llamafactory/webui/locales.py | 42 +++++++++++++++ src/llamafactory/webui/runner.py | 8 ++- src/llamafactory/webui/utils.py | 61 ++++++++++++++++++++++ 5 files changed, 123 insertions(+), 4 deletions(-) diff --git a/src/llamafactory/webui/components/train.py b/src/llamafactory/webui/components/train.py index d399106f..8db5c2ba 100644 --- a/src/llamafactory/webui/components/train.py +++ b/src/llamafactory/webui/components/train.py @@ -3,6 +3,7 @@ from typing import TYPE_CHECKING, Dict from transformers.trainer_utils import SchedulerType from ...extras.constants import TRAINING_STAGES +from ...extras.misc import get_device_count from ...extras.packages import is_gradio_available from ..common import DEFAULT_DATA_DIR, autoset_packing, list_adapters, list_dataset from ..components.data import create_preview_box @@ -258,6 +259,11 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: output_dir = gr.Textbox() config_path = gr.Textbox() + with gr.Row(): + device_count = gr.Textbox(value=str(get_device_count()), interactive=False) + ds_stage = gr.Dropdown(choices=["none", "2", "3"], value="none") + ds_offload = gr.Checkbox() + with gr.Row(): resume_btn = gr.Checkbox(visible=False, interactive=False) progress_bar = gr.Slider(visible=False, interactive=False) @@ -268,6 +274,7 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: with gr.Column(scale=1): loss_viewer = gr.Plot() + input_elems.update({output_dir, config_path, device_count, ds_stage, ds_offload}) elem_dict.update( dict( cmd_preview_btn=cmd_preview_btn, @@ -277,14 +284,15 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: stop_btn=stop_btn, output_dir=output_dir, config_path=config_path, + device_count=device_count, + ds_stage=ds_stage, + ds_offload=ds_offload, resume_btn=resume_btn, progress_bar=progress_bar, output_box=output_box, loss_viewer=loss_viewer, ) ) - - input_elems.update({output_dir, config_path}) output_elems = [output_box, progress_bar, loss_viewer] cmd_preview_btn.click(engine.runner.preview_train, input_elems, output_elems, concurrency_limit=None) diff --git a/src/llamafactory/webui/engine.py b/src/llamafactory/webui/engine.py index 964d65a2..fb568737 100644 --- a/src/llamafactory/webui/engine.py +++ b/src/llamafactory/webui/engine.py @@ -5,7 +5,7 @@ from .common import get_model_path, list_dataset, load_config from .locales import LOCALES from .manager import Manager from .runner import Runner -from .utils import get_time +from .utils import get_time, save_ds_config if TYPE_CHECKING: @@ -19,6 +19,8 @@ class Engine: self.manager = Manager() self.runner = Runner(self.manager, demo_mode) self.chatter = WebChatModel(self.manager, demo_mode, lazy_init=(not pure_chat)) + if not demo_mode: + save_ds_config() def _update_component(self, input_dict: Dict[str, Dict[str, Any]]) -> Dict["Component", "Component"]: r""" diff --git a/src/llamafactory/webui/locales.py b/src/llamafactory/webui/locales.py index 570a8b42..4657f9a3 100644 --- a/src/llamafactory/webui/locales.py +++ b/src/llamafactory/webui/locales.py @@ -1103,6 +1103,48 @@ LOCALES = { "info": "保存训练参数的配置文件路径。", }, }, + "device_count": { + "en": { + "label": "Device count", + "info": "Number of devices available.", + }, + "ru": { + "label": "Количество устройств", + "info": "Количество доступных устройств.", + }, + "zh": { + "label": "设备数量", + "info": "当前可用的运算设备数。", + }, + }, + "ds_stage": { + "en": { + "label": "DeepSpeed stage", + "info": "DeepSpeed stage for distributed training.", + }, + "ru": { + "label": "Этап DeepSpeed", + "info": "Этап DeepSpeed для распределенного обучения.", + }, + "zh": { + "label": "DeepSpeed stage", + "info": "多卡训练的 DeepSpeed stage。", + }, + }, + "ds_offload": { + "en": { + "label": "Enable offload", + "info": "Enable DeepSpeed offload (slow down training).", + }, + "ru": { + "label": "Включить выгрузку", + "info": "включить выгрузку DeepSpeed (замедлит обучение).", + }, + "zh": { + "label": "使用 offload", + "info": "使用 DeepSpeed offload(会减慢速度)。", + }, + }, "output_box": { "en": { "value": "Ready.", diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index 1310b999..c2e46e97 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -10,7 +10,7 @@ from transformers.trainer import TRAINING_ARGS_NAME from ..extras.constants import TRAINING_STAGES from ..extras.misc import is_gpu_or_npu_available, torch_gc from ..extras.packages import is_gradio_available -from .common import get_module, get_save_dir, load_args, load_config, save_args +from .common import DEFAULT_CACHE_DIR, get_module, get_save_dir, load_args, load_config, save_args from .locales import ALERTS from .utils import gen_cmd, get_eval_results, get_trainer_info, save_cmd @@ -201,6 +201,12 @@ class Runner: args["eval_steps"] = args["save_steps"] args["per_device_eval_batch_size"] = args["per_device_train_batch_size"] + # ds config + if get("train.ds_stage") != "none": + ds_stage = get("train.ds_stage") + ds_offload = "offload_" if get("train.ds_offload") else "" + args["deepspeed"] = os.path.join(DEFAULT_CACHE_DIR, "ds_z{}_{}config.json".format(ds_stage, ds_offload)) + return args def _parse_eval_args(self, data: Dict["Component", Any]) -> Dict[str, Any]: diff --git a/src/llamafactory/webui/utils.py b/src/llamafactory/webui/utils.py index ceeb9352..654d1f8d 100644 --- a/src/llamafactory/webui/utils.py +++ b/src/llamafactory/webui/utils.py @@ -8,6 +8,7 @@ from yaml import safe_dump from ..extras.constants import RUNNING_LOG, TRAINER_CONFIG, TRAINER_LOG from ..extras.packages import is_gradio_available, is_matplotlib_available from ..extras.ploting import gen_loss_plot +from .common import DEFAULT_CACHE_DIR from .locales import ALERTS @@ -103,3 +104,63 @@ def save_cmd(args: Dict[str, Any]) -> str: safe_dump(clean_cmd(args), f) return os.path.join(output_dir, TRAINER_CONFIG) + + +def save_ds_config() -> None: + os.makedirs(DEFAULT_CACHE_DIR, exist_ok=True) + ds_config = { + "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, + "loss_scale_window": 1000, + "initial_scale_power": 16, + "hysteresis": 2, + "min_loss_scale": 1, + }, + "bf16": {"enabled": "auto"}, + } + offload_config = { + "device": "cpu", + "pin_memory": True, + } + ds_config["zero_optimization"] = { + "stage": 2, + "allgather_partitions": True, + "allgather_bucket_size": 5e8, + "overlap_comm": True, + "reduce_scatter": True, + "reduce_bucket_size": 5e8, + "contiguous_gradients": True, + "round_robin_gradients": True, + } + with open(os.path.join(DEFAULT_CACHE_DIR, "ds_z2_config.json"), "w", encoding="utf-8") as f: + json.dump(ds_config, f, indent=2) + + ds_config["zero_optimization"]["offload_optimizer"] = offload_config + with open(os.path.join(DEFAULT_CACHE_DIR, "ds_z2_offload_config.json"), "w", encoding="utf-8") as f: + json.dump(ds_config, f, indent=2) + + ds_config["zero_optimization"] = { + "stage": 3, + "overlap_comm": True, + "contiguous_gradients": True, + "sub_group_size": 1e9, + "reduce_bucket_size": "auto", + "stage3_prefetch_bucket_size": "auto", + "stage3_param_persistence_threshold": "auto", + "stage3_max_live_parameters": 1e9, + "stage3_max_reuse_distance": 1e9, + "stage3_gather_16bit_weights_on_model_save": True, + } + with open(os.path.join(DEFAULT_CACHE_DIR, "ds_z3_config.json"), "w", encoding="utf-8") as f: + json.dump(ds_config, f, indent=2) + + ds_config["zero_optimization"]["offload_optimizer"] = offload_config + ds_config["zero_optimization"]["offload_param"] = offload_config + with open(os.path.join(DEFAULT_CACHE_DIR, "ds_z3_offload_config.json"), "w", encoding="utf-8") as f: + json.dump(ds_config, f, indent=2) From 97346c1d3d87f0bd5ddcd70ff485f6a8273244aa Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 29 May 2024 01:20:07 +0800 Subject: [PATCH 024/169] fix hf chat engine --- src/llamafactory/chat/hf_engine.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/llamafactory/chat/hf_engine.py b/src/llamafactory/chat/hf_engine.py index 2148f8cd..ad0e90fe 100644 --- a/src/llamafactory/chat/hf_engine.py +++ b/src/llamafactory/chat/hf_engine.py @@ -8,6 +8,7 @@ import torch from transformers import GenerationConfig, TextIteratorStreamer from ..data import get_template_and_fix_tokenizer +from ..extras.logging import get_logger from ..extras.misc import get_logits_processor from ..model import load_model, load_tokenizer from .base_engine import BaseEngine, Response @@ -23,6 +24,9 @@ if TYPE_CHECKING: from ..hparams import DataArguments, FinetuningArguments, GeneratingArguments, ModelArguments +logger = get_logger(__name__) + + class HuggingfaceEngine(BaseEngine): def __init__( self, @@ -92,7 +96,7 @@ class HuggingfaceEngine(BaseEngine): stop: Optional[Union[str, List[str]]] = input_kwargs.pop("stop", None) if stop is not None: - raise ValueError("Stop parameter is not supported in Huggingface engine yet.") + logger.warning("Stop parameter is not supported in Huggingface engine yet.") generating_args = generating_args.copy() generating_args.update( From 4728fe62d183603f08c3c1fa94f18a7c67d48b85 Mon Sep 17 00:00:00 2001 From: codemayq Date: Wed, 29 May 2024 11:13:59 +0800 Subject: [PATCH 025/169] update wechat_npu --- assets/wechat_npu.jpg | Bin 149473 -> 128743 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/wechat_npu.jpg b/assets/wechat_npu.jpg index 353e7603986f72458ab8b66799a58ea723ebad3d..f2e7c94cf592811db65a82075d218cc1ee510da3 100644 GIT binary patch literal 128743 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≺@n3|77%2B((a1_G+$R6w&< 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

A;fU;z;3X*#xFJ?XY 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

=puYDE*Q= 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

$*Yv=U=zD~snFk?lKD=l-)f0JcqZQ) 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ⅈmbVURL{ybOfC6XSSe|vb@Zqx~ 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/O%t|7 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 bKYjYY&wnfM-wOP<0{^YR|A!Ue_%r)IMKNOw From b13d03946ed7e39f848988f7b75485a9b69bae09 Mon Sep 17 00:00:00 2001 From: faddddeout <39449491+injet-zhou@users.noreply.github.com> Date: Thu, 30 May 2024 08:39:21 +0000 Subject: [PATCH 041/169] fix cann't interrupt training when using multi GPUs in webui --- src/llamafactory/webui/runner.py | 34 +++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index 7a305d62..2580ded2 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -1,5 +1,6 @@ import os import signal +import random from copy import deepcopy from subprocess import Popen, TimeoutExpired from typing import TYPE_CHECKING, Any, Dict, Generator, Optional @@ -8,12 +9,12 @@ import psutil from transformers.trainer import TRAINING_ARGS_NAME from ..extras.constants import PEFT_METHODS, TRAINING_STAGES -from ..extras.misc import is_gpu_or_npu_available, torch_gc +from ..extras.misc import is_gpu_or_npu_available, torch_gc, get_device_count from ..extras.packages import is_gradio_available from .common import DEFAULT_CACHE_DIR, get_module, get_save_dir, load_config from .locales import ALERTS from .utils import gen_cmd, get_eval_results, get_trainer_info, load_args, save_args, save_cmd - +from .. import launcher if is_gradio_available(): import gradio as gr @@ -41,6 +42,10 @@ class Runner: self.aborted = True if self.trainer is not None: for children in psutil.Process(self.trainer.pid).children(): # abort the child process + grand_children = children.children() + if len(grand_children) > 0: + for grand_child in grand_children: + os.kill(grand_child.pid, signal.SIGABRT) os.kill(children.pid, signal.SIGABRT) def _initialize(self, data: Dict["Component", Any], do_train: bool, from_preview: bool) -> str: @@ -275,7 +280,30 @@ class Runner: args = self._parse_train_args(data) if do_train else self._parse_eval_args(data) env = deepcopy(os.environ) env["LLAMABOARD_ENABLED"] = "1" - self.trainer = Popen("llamafactory-cli train {}".format(save_cmd(args)), env=env, shell=True) + if get_device_count() > 1: + nnodes = os.environ.get("NNODES", "1") + node_rank = os.environ.get("RANK", "0") + nproc_per_node = os.environ.get("NPROC_PER_NODE", str(get_device_count())) + master_addr = os.environ.get("MASTER_ADDR", "127.0.0.1") + master_port = os.environ.get("MASTER_PORT", str(random.randint(20001, 29999))) + + self.trainer = Popen([ + "torchrun", + "--nnodes", + nnodes, + "--node_rank", + node_rank, + "--nproc_per_node", + nproc_per_node, + "--master_addr", + master_addr, + "--master_port", + master_port, + launcher.__file__, + save_cmd(args) + ], env=env, shell=True) + else: + self.trainer = Popen("llamafactory-cli train {}".format(save_cmd(args)), env=env, shell=True) yield from self.monitor() def preview_train(self, data): From c4f50865ad798e1e99044480e1ab05abefc30224 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 30 May 2024 16:40:17 +0800 Subject: [PATCH 042/169] update readme --- README.md | 1 + README_zh.md | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 4ca6d1ec..95c0c345 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/9840a653-7e9c-41c8-ae89 Choose your path: - **Colab**: https://colab.research.google.com/drive/1eRTPn37ltBbYsISy9Aw2NuI2Aq5CQrD9?usp=sharing +- **PAI-DSW**: https://gallery.pai-ml.com/#/preview/deepLearning/nlp/llama_factory - **Local machine**: Please refer to [usage](#getting-started) ## Table of Contents diff --git a/README_zh.md b/README_zh.md index 70938e38..b10db1e5 100644 --- a/README_zh.md +++ b/README_zh.md @@ -26,6 +26,7 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd 选择你的打开方式: - **Colab**:https://colab.research.google.com/drive/1d5KQtbemerlSDSxZIfAaWXhKr30QypiK?usp=sharing +- **PAI-DSW**: https://gallery.pai-ml.com/#/preview/deepLearning/nlp/llama_factory - **本地机器**:请见[如何使用](#如何使用) ## 目录 From 14e97dc1192f6cf94ab99eb3a9b8c64029040384 Mon Sep 17 00:00:00 2001 From: Uminosachi <49424133+Uminosachi@users.noreply.github.com> Date: Fri, 31 May 2024 13:45:39 +0900 Subject: [PATCH 043/169] Set scheduler_specific_kwargs to get_scheduler --- src/llamafactory/train/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/llamafactory/train/utils.py b/src/llamafactory/train/utils.py index 23834f2d..230fdc1e 100644 --- a/src/llamafactory/train/utils.py +++ b/src/llamafactory/train/utils.py @@ -379,6 +379,7 @@ def create_custom_scheduler( optimizer=optimizer_dict[param], num_warmup_steps=training_args.get_warmup_steps(num_training_steps), num_training_steps=num_training_steps, + scheduler_specific_kwargs=training_args.lr_scheduler_kwargs, ) def scheduler_hook(param: "torch.nn.Parameter"): From f78e21f3417c9b561800db71d86f55defd3fa106 Mon Sep 17 00:00:00 2001 From: statelesshz Date: Fri, 31 May 2024 13:18:18 +0800 Subject: [PATCH 044/169] Update bug-report.yml --- .github/ISSUE_TEMPLATE/bug-report.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index ab2851c6..c2182542 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -13,6 +13,18 @@ body: - label: I have read the README and searched the existing issues. required: true + - type: textarea + id: system-info + validations: + required: true + attributes: + label: System Info + description: | + Please share your system info with us. You can run the command **transformers-cli env** and copy-paste its output below. + 请提供您的系统信息。您可以在命令行运行 **transformers-cli env** 并将其输出复制到该文本框中。 + + placeholder: transformers version, platform, python version, ... + - type: textarea id: reproduction validations: @@ -38,18 +50,6 @@ body: Please provide a clear and concise description of what you would expect to happen. 请提供您原本的目的,即这段代码的期望行为。 - - type: textarea - id: system-info - validations: - required: false - attributes: - label: System Info - description: | - Please share your system info with us. You can run the command **transformers-cli env** and copy-paste its output below. - 请提供您的系统信息。您可以在命令行运行 **transformers-cli env** 并将其输出复制到该文本框中。 - - placeholder: transformers version, platform, python version, ... - - type: textarea id: others validations: From dade2f083d398f83581d935f44d20dc45244c924 Mon Sep 17 00:00:00 2001 From: Xu Song Date: Fri, 31 May 2024 14:35:48 +0800 Subject: [PATCH 045/169] Update model_args.py --- src/llamafactory/hparams/model_args.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 650d1c22..995d5f12 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -107,7 +107,7 @@ class ModelArguments: ) vllm_maxlen: int = field( default=2048, - metadata={"help": "Maximum input length of the vLLM engine."}, + metadata={"help": "Maximum sequence length of the vLLM engine (including prompt and output)."}, ) vllm_gpu_util: float = field( default=0.9, From f9db439cb7511b12aa3524d5fdcc45864aebda91 Mon Sep 17 00:00:00 2001 From: ylfeng Date: Fri, 31 May 2024 15:33:54 +0800 Subject: [PATCH 046/169] supervised packing with greedy knapsack algorithm --- .../data/processors/supervised.py | 102 ++++++++++++++++-- 1 file changed, 92 insertions(+), 10 deletions(-) diff --git a/src/llamafactory/data/processors/supervised.py b/src/llamafactory/data/processors/supervised.py index b119aa22..65aa4b4e 100644 --- a/src/llamafactory/data/processors/supervised.py +++ b/src/llamafactory/data/processors/supervised.py @@ -1,3 +1,5 @@ +import itertools +from collections import defaultdict from typing import TYPE_CHECKING, Any, Dict, List, Optional from ...extras.constants import IGNORE_INDEX @@ -16,6 +18,52 @@ if TYPE_CHECKING: logger = get_logger(__name__) +def binary_search_for_fit(numbers, capacity): + """ + Perform binary search to find the largest number that fits into the knapsack with the given capacity. + """ + left, right = 0, len(numbers) - 1 + result = -1 # If no number fits, return -1 + + while left <= right: + mid = (left + right) // 2 + if numbers[mid] <= capacity: + result = mid + left = mid + 1 + else: + right = mid - 1 + + return result + + +def efficient_greedy_knapsack(numbers, capacity): + """ + An efficient greedy algorithm with binary search for the knapsack problem. + """ + numbers.sort() # Sort numbers in ascending order for binary search + knapsacks = [] + + while numbers: + current_knapsack = [] + remaining_capacity = capacity + + while True: + index = binary_search_for_fit(numbers, remaining_capacity) + if index == -1: + break # No more numbers fit in this knapsack + + # Add the found number to the knapsack and update the remaining capacity + current_knapsack.append(numbers[index]) + remaining_capacity -= numbers[index] + + # Remove the number from the list + numbers.pop(index) + + knapsacks.append(current_knapsack) + + return knapsacks + + def preprocess_supervised_dataset( examples: Dict[str, List[Any]], template: "Template", @@ -115,16 +163,50 @@ def preprocess_packed_supervised_dataset( input_ids += [tokenizer.eos_token_id] labels += [tokenizer.eos_token_id] - total_length = len(input_ids) - block_size = data_args.cutoff_len - # we drop the small remainder, and if the total_length < block_size, we exclude this batch - total_length = (total_length // block_size) * block_size - # split by chunks of cutoff_len - for i in range(0, total_length, block_size): - if not all(label == IGNORE_INDEX for label in labels[i : i + block_size]): - model_inputs["input_ids"].append(input_ids[i : i + block_size]) - model_inputs["attention_mask"].append([1] * block_size) - model_inputs["labels"].append(labels[i : i + block_size]) + # prepare for packing + lengths = [] + length2examples_idx = defaultdict(list) + for idx, example in enumerate(input_ids): + length = len(example) + if length > data_args.cutoff_len: + logger.warning("Dropped example with length {} > cutoff_len {}".format(length, data_args.cutoff_len)) + continue + lengths.append(length) + length2examples_idx[length].append(idx) + + knapsacks = efficient_greedy_knapsack(lengths, data_args.cutoff_len) + + for knapsack in knapsacks: + packed_input_ids = [] + packed_labels = [] + + total_length = 0 + for length in knapsack: + total_length += length + idx = length2examples_idx[length].pop() + packed_input_ids.append(input_ids[idx]) + packed_labels.append(labels[idx]) + + # padding to cutoff_len + if total_length < data_args.cutoff_len: + pad_length = data_args.cutoff_len - total_length + packed_input_ids.append([tokenizer.eos_token_id] * pad_length) + packed_labels.append([IGNORE_INDEX] * pad_length) + elif total_length == data_args.cutoff_len: + pad_length = 0 + else: + logger.warning( + "Dropped packed example with total length {} > cutoff_len {}".format( + total_length, data_args.cutoff_len + ) + ) + continue + + # concat all + model_inputs["input_ids"].append(list(itertools.chain(*packed_input_ids))) + + model_inputs["labels"].append(list(itertools.chain(*packed_labels))) + model_inputs["attention_mask"].append([1] * total_length + [0] * pad_length) return model_inputs From 84aee579013f0c095a918a8c61611ccbb1d7fc84 Mon Sep 17 00:00:00 2001 From: ylfeng Date: Fri, 31 May 2024 21:40:41 +0800 Subject: [PATCH 047/169] fix eos --- .../data/processors/supervised.py | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/llamafactory/data/processors/supervised.py b/src/llamafactory/data/processors/supervised.py index 65aa4b4e..f94cebba 100644 --- a/src/llamafactory/data/processors/supervised.py +++ b/src/llamafactory/data/processors/supervised.py @@ -151,17 +151,11 @@ def preprocess_packed_supervised_dataset( ): if data_args.train_on_prompt: source_mask = source_ids - elif len(input_ids) != 0 and template.efficient_eos: - source_mask = [tokenizer.eos_token_id] + [IGNORE_INDEX] * (len(source_ids) - 1) else: source_mask = [IGNORE_INDEX] * len(source_ids) - input_ids += source_ids + target_ids - labels += source_mask + target_ids - - if template.efficient_eos: - input_ids += [tokenizer.eos_token_id] - labels += [tokenizer.eos_token_id] + input_ids.append(source_ids + target_ids) + labels.append(source_mask + target_ids) # prepare for packing lengths = [] @@ -174,7 +168,8 @@ def preprocess_packed_supervised_dataset( lengths.append(length) length2examples_idx[length].append(idx) - knapsacks = efficient_greedy_knapsack(lengths, data_args.cutoff_len) + # cutoff_len - 1 for efficient_eos + knapsacks = efficient_greedy_knapsack(lengths, data_args.cutoff_len - int(template.efficient_eos)) for knapsack in knapsacks: packed_input_ids = [] @@ -190,8 +185,15 @@ def preprocess_packed_supervised_dataset( # padding to cutoff_len if total_length < data_args.cutoff_len: pad_length = data_args.cutoff_len - total_length - packed_input_ids.append([tokenizer.eos_token_id] * pad_length) - packed_labels.append([IGNORE_INDEX] * pad_length) + if template.efficient_eos: + # 确保有 eos + packed_input_ids.append([tokenizer.eos_token_id] * pad_length) + packed_labels.append([tokenizer.eos_token_id] + [IGNORE_INDEX] * (pad_length - 1)) + else: + # 无 eos 的情况下,使用 0 填充? + packed_input_ids.append([0] * pad_length) + packed_labels.append([tokenizer.eos_token_id] + [IGNORE_INDEX] * (pad_length - 1)) + elif total_length == data_args.cutoff_len: pad_length = 0 else: From b47e3174472f458a3a8b84a66b475da8fce6db79 Mon Sep 17 00:00:00 2001 From: ylfeng Date: Fri, 31 May 2024 21:43:08 +0800 Subject: [PATCH 048/169] remove empty line --- src/llamafactory/data/processors/supervised.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/llamafactory/data/processors/supervised.py b/src/llamafactory/data/processors/supervised.py index f94cebba..eaceb5b8 100644 --- a/src/llamafactory/data/processors/supervised.py +++ b/src/llamafactory/data/processors/supervised.py @@ -206,7 +206,6 @@ def preprocess_packed_supervised_dataset( # concat all model_inputs["input_ids"].append(list(itertools.chain(*packed_input_ids))) - model_inputs["labels"].append(list(itertools.chain(*packed_labels))) model_inputs["attention_mask"].append([1] * total_length + [0] * pad_length) From 49b1e88e3da3be0fb78f53e5f924a9be67568a02 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 3 Jun 2024 18:28:27 +0800 Subject: [PATCH 049/169] fix data loader hint --- src/llamafactory/data/loader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/llamafactory/data/loader.py b/src/llamafactory/data/loader.py index d4a19e27..f5929f15 100644 --- a/src/llamafactory/data/loader.py +++ b/src/llamafactory/data/loader.py @@ -62,9 +62,9 @@ def load_single_dataset( raise ValueError("File {} not found.".format(local_path)) if data_path is None: - raise ValueError("File extension must be txt, csv, json or jsonl.") + raise ValueError("Allowed file types: {}.".format(",".join(FILEEXT2TYPE.keys()))) else: - raise NotImplementedError + raise NotImplementedError("Unknown load type: {}.".format(dataset_attr.load_from)) if dataset_attr.load_from == "ms_hub": try: From 876bc92865605be872bc811a56a1d1e05490ec8a Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 3 Jun 2024 18:29:38 +0800 Subject: [PATCH 050/169] bump versions transformers 4.37.2->4.41.2 datasets 2.14.3->2.16.0 accelerate 0.27.2->0.30.1 peft 0.10.0->0.11.1 trl 0.8.1->0.8.6 --- requirements.txt | 10 +++++----- src/llamafactory/extras/misc.py | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/requirements.txt b/requirements.txt index f4a942e6..e17954e3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ -transformers>=4.37.2 -datasets>=2.14.3 -accelerate>=0.27.2 -peft>=0.10.0 -trl>=0.8.1 +transformers>=4.41.2 +datasets>=2.16.0 +accelerate>=0.30.1 +peft>=0.11.1 +trl>=0.8.6 gradio>=4.0.0 scipy einops diff --git a/src/llamafactory/extras/misc.py b/src/llamafactory/extras/misc.py index 2c7f170c..638c24cf 100644 --- a/src/llamafactory/extras/misc.py +++ b/src/llamafactory/extras/misc.py @@ -61,11 +61,11 @@ def check_dependencies() -> None: if os.environ.get("DISABLE_VERSION_CHECK", "0").lower() in ["true", "1"]: logger.warning("Version checking has been disabled, may lead to unexpected behaviors.") else: - require_version("transformers>=4.37.2", "To fix: pip install transformers>=4.37.2") - require_version("datasets>=2.14.3", "To fix: pip install datasets>=2.14.3") - require_version("accelerate>=0.27.2", "To fix: pip install accelerate>=0.27.2") - require_version("peft>=0.10.0", "To fix: pip install peft>=0.10.0") - require_version("trl>=0.8.2", "To fix: pip install trl>=0.8.2") + require_version("transformers>=4.41.2", "To fix: pip install transformers>=4.41.2") + require_version("datasets>=2.16.0", "To fix: pip install datasets>=2.16.0") + require_version("accelerate>=0.30.1", "To fix: pip install accelerate>=0.30.1") + require_version("peft>=0.11.1", "To fix: pip install peft>=0.11.1") + require_version("trl>=0.8.6", "To fix: pip install trl>=0.8.6") def count_parameters(model: torch.nn.Module) -> Tuple[int, int]: From 24e1c0e2ee365812357fb9cf82e2162915299a26 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 3 Jun 2024 18:38:36 +0800 Subject: [PATCH 051/169] fix #4022 --- setup.py | 2 +- src/llamafactory/chat/vllm_engine.py | 4 +--- src/llamafactory/hparams/parser.py | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index 45e73343..23f532e7 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ extra_require = { "metrics": ["nltk", "jieba", "rouge-chinese"], "deepspeed": ["deepspeed>=0.10.0,<=0.14.0"], "bitsandbytes": ["bitsandbytes>=0.39.0"], - "vllm": ["vllm>=0.4.1"], + "vllm": ["vllm>=0.4.3"], "galore": ["galore-torch"], "badam": ["badam"], "gptq": ["optimum>=1.16.0", "auto-gptq>=0.5.0"], diff --git a/src/llamafactory/chat/vllm_engine.py b/src/llamafactory/chat/vllm_engine.py index 3310a864..8a067754 100644 --- a/src/llamafactory/chat/vllm_engine.py +++ b/src/llamafactory/chat/vllm_engine.py @@ -158,12 +158,10 @@ class VllmEngine(BaseEngine): ) result_generator = self.model.generate( - prompt=None, + inputs={"prompt_token_ids": prompt_ids, "multi_modal_data": multi_modal_data}, sampling_params=sampling_params, request_id=request_id, - prompt_token_ids=prompt_ids, lora_request=self.lora_request, - multi_modal_data=multi_modal_data, ) return result_generator diff --git a/src/llamafactory/hparams/parser.py b/src/llamafactory/hparams/parser.py index b3c673be..ff1fbf5d 100644 --- a/src/llamafactory/hparams/parser.py +++ b/src/llamafactory/hparams/parser.py @@ -94,7 +94,7 @@ def _check_extra_dependencies( require_version("mixture-of-depth>=1.1.6", "To fix: pip install mixture-of-depth>=1.1.6") if model_args.infer_backend == "vllm": - require_version("vllm>=0.4.1", "To fix: pip install vllm>=0.4.1") + require_version("vllm>=0.4.3", "To fix: pip install vllm>=0.4.3") if finetuning_args.use_galore: require_version("galore_torch", "To fix: pip install galore_torch") From eed33862bc733361f3c28b3c95dc0eb4ea00884c Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 3 Jun 2024 19:12:29 +0800 Subject: [PATCH 052/169] fix #4005 #4013 --- examples/README.md | 8 ++++---- examples/README_zh.md | 10 +++++----- examples/extras/badam/llama3_lora_sft.yaml | 4 ++-- examples/extras/fsdp_qlora/llama3_lora_sft.yaml | 4 ++-- examples/extras/galore/llama3_full_sft.yaml | 4 ++-- examples/extras/llama_pro/llama3_freeze_sft.yaml | 4 ++-- examples/extras/loraplus/llama3_lora_sft.yaml | 4 ++-- examples/extras/mod/llama3_full_sft.yaml | 4 ++-- examples/full_multi_gpu/llama3_full_sft.yaml | 4 ++-- examples/lora_multi_gpu/llama3_lora_sft.yaml | 4 ++-- examples/lora_multi_gpu/llama3_lora_sft_ds.yaml | 4 ++-- examples/lora_multi_npu/llama3_lora_sft_ds.yaml | 4 ++-- examples/lora_single_gpu/llama3_lora_dpo.yaml | 4 ++-- examples/lora_single_gpu/llama3_lora_kto.yaml | 4 ++-- examples/lora_single_gpu/llama3_lora_ppo.yaml | 4 ++-- examples/lora_single_gpu/llama3_lora_pretrain.yaml | 4 ++-- examples/lora_single_gpu/llama3_lora_reward.yaml | 4 ++-- examples/lora_single_gpu/llama3_lora_sft.yaml | 4 ++-- examples/lora_single_gpu/llava1_5_lora_sft.yaml | 4 ++-- examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml | 4 ++-- examples/qlora_single_gpu/llama3_lora_sft_awq.yaml | 4 ++-- .../qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml | 4 ++-- examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml | 4 ++-- src/llamafactory/hparams/model_args.py | 2 +- 24 files changed, 52 insertions(+), 52 deletions(-) diff --git a/examples/README.md b/examples/README.md index 727b27c8..f985d552 100644 --- a/examples/README.md +++ b/examples/README.md @@ -107,13 +107,13 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_l ### LoRA Fine-Tuning on Multiple GPUs -#### Supervised Fine-Tuning with Accelerate on Single Node +#### Supervised Fine-Tuning on Single Node ```bash CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml ``` -#### Supervised Fine-Tuning with Accelerate on Multiple Nodes +#### Supervised Fine-Tuning on Multiple Nodes ```bash CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml @@ -136,13 +136,13 @@ ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_npu ### Full-Parameter Fine-Tuning on Multiple GPUs -#### Supervised Fine-Tuning with Accelerate on Single Node +#### Supervised Fine-Tuning on Single Node ```bash CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml ``` -#### Supervised Fine-Tuning with Accelerate on Multiple Nodes +#### Supervised Fine-Tuning on Multiple Nodes ```bash CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml diff --git a/examples/README_zh.md b/examples/README_zh.md index 6974faa9..cf5bbf49 100644 --- a/examples/README_zh.md +++ b/examples/README_zh.md @@ -107,13 +107,13 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_l ### 多 GPU LoRA 微调 -#### 使用 Accelerate 进行单节点训练 +#### 在单机上进行指令监督微调 ```bash CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml ``` -#### 使用 Accelerate 进行多节点训练 +#### 在多机上进行指令监督微调 ```bash CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml @@ -128,7 +128,7 @@ CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llam ### 多 NPU LoRA 微调 -#### 使用 DeepSpeed ZeRO-0 训练 +#### 使用 DeepSpeed ZeRO-0 进行指令监督微调 ```bash ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_npu/llama3_lora_sft_ds.yaml @@ -136,13 +136,13 @@ ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_npu ### 多 GPU 全参数微调 -#### 使用 DeepSpeed 进行单节点训练 +#### 在单机上进行指令监督微调 ```bash CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml ``` -#### 使用 DeepSpeed 进行多节点训练 +#### 在多机上进行指令监督微调 ```bash CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml diff --git a/examples/extras/badam/llama3_lora_sft.yaml b/examples/extras/badam/llama3_lora_sft.yaml index 4a482749..242e63ab 100644 --- a/examples/extras/badam/llama3_lora_sft.yaml +++ b/examples/extras/badam/llama3_lora_sft.yaml @@ -28,10 +28,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 pure_bf16: true ### eval diff --git a/examples/extras/fsdp_qlora/llama3_lora_sft.yaml b/examples/extras/fsdp_qlora/llama3_lora_sft.yaml index e9c04fa9..920d8fdb 100644 --- a/examples/extras/fsdp_qlora/llama3_lora_sft.yaml +++ b/examples/extras/fsdp_qlora/llama3_lora_sft.yaml @@ -29,10 +29,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/extras/galore/llama3_full_sft.yaml b/examples/extras/galore/llama3_full_sft.yaml index 87381fcc..3db31fed 100644 --- a/examples/extras/galore/llama3_full_sft.yaml +++ b/examples/extras/galore/llama3_full_sft.yaml @@ -29,10 +29,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 1 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 pure_bf16: true ### eval diff --git a/examples/extras/llama_pro/llama3_freeze_sft.yaml b/examples/extras/llama_pro/llama3_freeze_sft.yaml index 8ace8db8..214f411a 100644 --- a/examples/extras/llama_pro/llama3_freeze_sft.yaml +++ b/examples/extras/llama_pro/llama3_freeze_sft.yaml @@ -27,10 +27,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/extras/loraplus/llama3_lora_sft.yaml b/examples/extras/loraplus/llama3_lora_sft.yaml index 26c2b1d2..9936bcd3 100644 --- a/examples/extras/loraplus/llama3_lora_sft.yaml +++ b/examples/extras/loraplus/llama3_lora_sft.yaml @@ -26,10 +26,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/extras/mod/llama3_full_sft.yaml b/examples/extras/mod/llama3_full_sft.yaml index 6b724ed0..edfec44e 100644 --- a/examples/extras/mod/llama3_full_sft.yaml +++ b/examples/extras/mod/llama3_full_sft.yaml @@ -26,10 +26,10 @@ overwrite_output_dir: true per_device_train_batch_size: 1 gradient_accumulation_steps: 8 optim: paged_adamw_8bit -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 pure_bf16: true ### eval diff --git a/examples/full_multi_gpu/llama3_full_sft.yaml b/examples/full_multi_gpu/llama3_full_sft.yaml index a96f1b8e..b8873e3a 100644 --- a/examples/full_multi_gpu/llama3_full_sft.yaml +++ b/examples/full_multi_gpu/llama3_full_sft.yaml @@ -28,10 +28,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 2 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/lora_multi_gpu/llama3_lora_sft.yaml b/examples/lora_multi_gpu/llama3_lora_sft.yaml index 6389f21b..5e5dd9e6 100644 --- a/examples/lora_multi_gpu/llama3_lora_sft.yaml +++ b/examples/lora_multi_gpu/llama3_lora_sft.yaml @@ -28,10 +28,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 2 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml b/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml index 6011896a..e8dee216 100644 --- a/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml +++ b/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml @@ -29,10 +29,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 2 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/lora_multi_npu/llama3_lora_sft_ds.yaml b/examples/lora_multi_npu/llama3_lora_sft_ds.yaml index 65ab6347..825b8450 100644 --- a/examples/lora_multi_npu/llama3_lora_sft_ds.yaml +++ b/examples/lora_multi_npu/llama3_lora_sft_ds.yaml @@ -29,10 +29,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 2 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/lora_single_gpu/llama3_lora_dpo.yaml b/examples/lora_single_gpu/llama3_lora_dpo.yaml index f68244b7..62752e57 100644 --- a/examples/lora_single_gpu/llama3_lora_dpo.yaml +++ b/examples/lora_single_gpu/llama3_lora_dpo.yaml @@ -27,10 +27,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.000005 +learning_rate: 5.0e-6 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/lora_single_gpu/llama3_lora_kto.yaml b/examples/lora_single_gpu/llama3_lora_kto.yaml index 4405aaec..6f689818 100644 --- a/examples/lora_single_gpu/llama3_lora_kto.yaml +++ b/examples/lora_single_gpu/llama3_lora_kto.yaml @@ -25,10 +25,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.000005 +learning_rate: 5.0e-6 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/lora_single_gpu/llama3_lora_ppo.yaml b/examples/lora_single_gpu/llama3_lora_ppo.yaml index 88ce24f3..19e7ccb3 100644 --- a/examples/lora_single_gpu/llama3_lora_ppo.yaml +++ b/examples/lora_single_gpu/llama3_lora_ppo.yaml @@ -26,10 +26,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.00001 +learning_rate: 1.0e-5 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### generate diff --git a/examples/lora_single_gpu/llama3_lora_pretrain.yaml b/examples/lora_single_gpu/llama3_lora_pretrain.yaml index acb18ebf..54c5d89a 100644 --- a/examples/lora_single_gpu/llama3_lora_pretrain.yaml +++ b/examples/lora_single_gpu/llama3_lora_pretrain.yaml @@ -24,10 +24,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/lora_single_gpu/llama3_lora_reward.yaml b/examples/lora_single_gpu/llama3_lora_reward.yaml index 6bf2ca02..c82f9414 100644 --- a/examples/lora_single_gpu/llama3_lora_reward.yaml +++ b/examples/lora_single_gpu/llama3_lora_reward.yaml @@ -25,10 +25,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.00001 +learning_rate: 1.0e-5 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/lora_single_gpu/llama3_lora_sft.yaml b/examples/lora_single_gpu/llama3_lora_sft.yaml index 5492bc34..429cb6af 100644 --- a/examples/lora_single_gpu/llama3_lora_sft.yaml +++ b/examples/lora_single_gpu/llama3_lora_sft.yaml @@ -25,10 +25,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/lora_single_gpu/llava1_5_lora_sft.yaml b/examples/lora_single_gpu/llava1_5_lora_sft.yaml index 8e4226da..acab4884 100644 --- a/examples/lora_single_gpu/llava1_5_lora_sft.yaml +++ b/examples/lora_single_gpu/llava1_5_lora_sft.yaml @@ -26,10 +26,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml b/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml index d2658051..53cc12e2 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml @@ -25,10 +25,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml b/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml index ba6d8ea5..1a92f822 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml @@ -25,10 +25,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml b/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml index a3db35ff..c7f72c66 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml @@ -26,10 +26,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml b/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml index cc9a454e..45caf17c 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml @@ -25,10 +25,10 @@ overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 -learning_rate: 0.0001 +learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine -warmup_steps: 0.1 +warmup_ratio: 0.1 fp16: true ### eval diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 995d5f12..7003cbee 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -107,7 +107,7 @@ class ModelArguments: ) vllm_maxlen: int = field( default=2048, - metadata={"help": "Maximum sequence length of the vLLM engine (including prompt and output)."}, + metadata={"help": "Maximum sequence (prompt + response) length of the vLLM engine."}, ) vllm_gpu_util: float = field( default=0.9, From 88681d33575574d777b4f800e2e228389a38503d Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 3 Jun 2024 19:24:10 +0800 Subject: [PATCH 053/169] update placeholder in issue template --- .github/ISSUE_TEMPLATE/bug-report.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index c2182542..82620fdb 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -38,7 +38,7 @@ body: 请合理使用 Markdown 标签来格式化您的文本。 placeholder: | - python src/train_bash.py ... + llamafactory-cli train ... - type: textarea id: expected-behavior From 34a2c5087a174a807e5a11cae3748bcaaaf13550 Mon Sep 17 00:00:00 2001 From: "enji.zhou" Date: Mon, 3 Jun 2024 21:32:38 +0800 Subject: [PATCH 054/169] fix KTO Trainer Sampler --- src/llamafactory/train/kto/trainer.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index 82ae722d..3f1220a9 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -4,6 +4,7 @@ from types import MethodType from typing import TYPE_CHECKING, Dict, Literal, Optional, Tuple, Union import torch +from torch.utils.data import RandomSampler from transformers import Trainer from trl import KTOTrainer from trl.trainer import disable_dropout_in_model @@ -173,6 +174,21 @@ class CustomKTOTrainer(KTOTrainer): return reference_chosen_logps, reference_rejected_logps, reference_kl_logps + def has_length(self,dataset): + """ + Checks if the dataset implements __len__() and it doesn't raise an error + """ + try: + return len(dataset) is not None + except TypeError: + # TypeError: len() of unsized object + return False + + def _get_train_sampler(self) -> Optional[torch.utils.data.Sampler]: + if self.train_dataset is None or not self.has_length(self.train_dataset): + return None + return RandomSampler(self.train_dataset) + def get_batch_loss_metrics( self, model: "PreTrainedModel", From 24499f40dc1d9db448a3328d2a75c60eec27feb9 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Mon, 3 Jun 2024 22:08:38 +0800 Subject: [PATCH 055/169] Update trainer.py --- src/llamafactory/train/kto/trainer.py | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index 3f1220a9..7c0343f5 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -4,7 +4,6 @@ from types import MethodType from typing import TYPE_CHECKING, Dict, Literal, Optional, Tuple, Union import torch -from torch.utils.data import RandomSampler from transformers import Trainer from trl import KTOTrainer from trl.trainer import disable_dropout_in_model @@ -14,6 +13,7 @@ from ..utils import create_custom_optimzer, create_custom_scheduler if TYPE_CHECKING: + import torch.utils.data from transformers import PreTrainedModel, ProcessorMixin from ...hparams import FinetuningArguments @@ -85,6 +85,12 @@ class CustomKTOTrainer(KTOTrainer): create_custom_scheduler(self.args, num_training_steps, optimizer) return super().create_scheduler(num_training_steps, optimizer) + def _get_train_sampler(self) -> Optional["torch.utils.data.Sampler"]: + r""" + Replaces the sequential sampler of KTO Trainer created by trl with the random sampler. + """ + return Trainer._get_train_sampler(self) + def _save(self, output_dir: Optional[str] = None, state_dict: Optional[Dict[str, "torch.Tensor"]] = None) -> None: super()._save(output_dir, state_dict) if self.processor is not None: @@ -174,21 +180,6 @@ class CustomKTOTrainer(KTOTrainer): return reference_chosen_logps, reference_rejected_logps, reference_kl_logps - def has_length(self,dataset): - """ - Checks if the dataset implements __len__() and it doesn't raise an error - """ - try: - return len(dataset) is not None - except TypeError: - # TypeError: len() of unsized object - return False - - def _get_train_sampler(self) -> Optional[torch.utils.data.Sampler]: - if self.train_dataset is None or not self.has_length(self.train_dataset): - return None - return RandomSampler(self.train_dataset) - def get_batch_loss_metrics( self, model: "PreTrainedModel", From f9a206509ec8cd3abfad8bd924c9387317a4ead8 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 3 Jun 2024 22:53:54 +0800 Subject: [PATCH 056/169] remove gc warnings in DPO&KTO --- src/llamafactory/train/dpo/trainer.py | 5 +++-- src/llamafactory/train/kto/trainer.py | 5 +++-- src/llamafactory/train/utils.py | 16 ++++++++++++++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/llamafactory/train/dpo/trainer.py b/src/llamafactory/train/dpo/trainer.py index 542335a3..ec1de810 100644 --- a/src/llamafactory/train/dpo/trainer.py +++ b/src/llamafactory/train/dpo/trainer.py @@ -10,7 +10,7 @@ from trl import DPOTrainer from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX -from ..utils import create_custom_optimzer, create_custom_scheduler +from ..utils import create_custom_optimzer, create_custom_scheduler, get_ref_context if TYPE_CHECKING: @@ -69,6 +69,7 @@ class CustomDPOTrainer(DPOTrainer): self.ref_model = self._prepare_deepspeed(self.ref_model) else: self.ref_model = self.accelerator.prepare_model(self.ref_model, evaluation_mode=True) + self.ref_model.eval() if finetuning_args.use_badam: from badam import clip_grad_norm_for_sparse_tensor @@ -189,7 +190,7 @@ class CustomDPOTrainer(DPOTrainer): if self.ref_model is None: ref_model = model - ref_context = self.accelerator.unwrap_model(model).disable_adapter() + ref_context = get_ref_context(self.accelerator, model) else: ref_model = self.ref_model ref_context = nullcontext() diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index 7c0343f5..f29945f5 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -9,7 +9,7 @@ from trl import KTOTrainer from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX -from ..utils import create_custom_optimzer, create_custom_scheduler +from ..utils import create_custom_optimzer, create_custom_scheduler, get_ref_context if TYPE_CHECKING: @@ -68,6 +68,7 @@ class CustomKTOTrainer(KTOTrainer): self.ref_model = self._prepare_deepspeed(self.ref_model) else: self.ref_model = self.accelerator.prepare_model(self.ref_model, evaluation_mode=True) + self.ref_model.eval() if finetuning_args.use_badam: from badam import clip_grad_norm_for_sparse_tensor @@ -164,7 +165,7 @@ class CustomKTOTrainer(KTOTrainer): """ if self.ref_model is None: ref_model = model - ref_context = self.accelerator.unwrap_model(model).disable_adapter() + ref_context = get_ref_context(self.accelerator, model) else: ref_model = self.ref_model ref_context = nullcontext() diff --git a/src/llamafactory/train/utils.py b/src/llamafactory/train/utils.py index 230fdc1e..2b33af1c 100644 --- a/src/llamafactory/train/utils.py +++ b/src/llamafactory/train/utils.py @@ -1,3 +1,4 @@ +from contextlib import contextmanager from typing import TYPE_CHECKING, Callable, Dict, List, Optional, Union import torch @@ -17,8 +18,8 @@ if is_galore_available(): if TYPE_CHECKING: - from transformers import Seq2SeqTrainingArguments - from transformers.modeling_utils import PreTrainedModel + from accelerate import Accelerator + from transformers import PreTrainedModel, Seq2SeqTrainingArguments from trl import AutoModelForCausalLMWithValueHead from ..hparams import DataArguments @@ -156,6 +157,17 @@ def create_reward_model( return reward_model +@contextmanager +def get_ref_context(accelerator: "Accelerator", model: "PreTrainedModel"): + r""" + Gets adapter context for the reference model. + """ + with accelerator.unwrap_model(model).disable_adapter(): + model.eval() + yield + model.train() + + def _get_decay_parameter_names(model: "PreTrainedModel") -> List[str]: r""" Returns a list of names of parameters with weight decay. (weights in non-layernorm layers) From 79784ebeb6cc712b12edadcca8203b20afcf851e Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 3 Jun 2024 23:30:37 +0800 Subject: [PATCH 057/169] fix #4043 --- src/llamafactory/webui/components/eval.py | 2 +- src/llamafactory/webui/components/train.py | 21 ++++++++++++--------- src/llamafactory/webui/locales.py | 5 +++++ src/llamafactory/webui/runner.py | 9 +++++++-- src/llamafactory/webui/utils.py | 2 +- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/llamafactory/webui/components/eval.py b/src/llamafactory/webui/components/eval.py index 99215fc2..0a7a0f44 100644 --- a/src/llamafactory/webui/components/eval.py +++ b/src/llamafactory/webui/components/eval.py @@ -57,7 +57,6 @@ def create_eval_tab(engine: "Engine") -> Dict[str, "Component"]: with gr.Row(): output_box = gr.Markdown() - output_elems = [output_box, progress_bar] elem_dict.update( dict( cmd_preview_btn=cmd_preview_btn, @@ -68,6 +67,7 @@ def create_eval_tab(engine: "Engine") -> Dict[str, "Component"]: output_box=output_box, ) ) + output_elems = [output_box, progress_bar] cmd_preview_btn.click(engine.runner.preview_eval, input_elems, output_elems, concurrency_limit=None) start_btn.click(engine.runner.run_eval, input_elems, output_elems) diff --git a/src/llamafactory/webui/components/train.py b/src/llamafactory/webui/components/train.py index 6f742bb1..93e5dfc1 100644 --- a/src/llamafactory/webui/components/train.py +++ b/src/llamafactory/webui/components/train.py @@ -298,22 +298,25 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: ) output_elems = [output_box, progress_bar, loss_viewer] - lang = engine.manager.get_elem_by_id("top.lang") - model_name = engine.manager.get_elem_by_id("top.model_name") - finetuning_type = engine.manager.get_elem_by_id("top.finetuning_type") - cmd_preview_btn.click(engine.runner.preview_train, input_elems, output_elems, concurrency_limit=None) - arg_save_btn.click(engine.runner.save_args, input_elems, output_elems, concurrency_limit=None) - arg_load_btn.click( - engine.runner.load_args, [lang, config_path], list(input_elems) + [output_box], concurrency_limit=None - ) start_btn.click(engine.runner.run_train, input_elems, output_elems) stop_btn.click(engine.runner.set_abort) resume_btn.change(engine.runner.monitor, outputs=output_elems, concurrency_limit=None) - training_stage.change(change_stage, [training_stage], [dataset, packing], queue=False) + lang = engine.manager.get_elem_by_id("top.lang") + model_name: "gr.Dropdown" = engine.manager.get_elem_by_id("top.model_name") + finetuning_type: "gr.Dropdown" = engine.manager.get_elem_by_id("top.finetuning_type") + + arg_save_btn.click(engine.runner.save_args, input_elems, output_elems, concurrency_limit=None) + arg_load_btn.click( + engine.runner.load_args, [lang, config_path], list(input_elems) + [output_box], concurrency_limit=None + ) + dataset.focus(list_datasets, [dataset_dir, training_stage], [dataset], queue=False) + training_stage.change(change_stage, [training_stage], [dataset, packing], queue=False) reward_model.focus(list_checkpoints, [model_name, finetuning_type], [reward_model], queue=False) + model_name.change(list_output_dirs, [model_name, finetuning_type, initial_dir], [output_dir], queue=False) + finetuning_type.change(list_output_dirs, [model_name, finetuning_type, initial_dir], [output_dir], queue=False) output_dir.change( list_output_dirs, [model_name, finetuning_type, initial_dir], [output_dir], concurrency_limit=None ).then(check_output_dir, inputs=[lang, model_name, finetuning_type, output_dir], concurrency_limit=None) diff --git a/src/llamafactory/webui/locales.py b/src/llamafactory/webui/locales.py index 5b11c853..e30feab2 100644 --- a/src/llamafactory/webui/locales.py +++ b/src/llamafactory/webui/locales.py @@ -1475,6 +1475,11 @@ ALERTS = { "ru": "Пожалуйста, выберите адаптер.", "zh": "请选择适配器。", }, + "err_no_output_dir": { + "en": "Please provide output dir.", + "ru": "Пожалуйста, укажите выходную директорию.", + "zh": "请填写输出目录。", + }, "err_no_reward_model": { "en": "Please select a reward model.", "ru": "Пожалуйста, выберите модель вознаграждения.", diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index 7a305d62..fe213513 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -64,10 +64,15 @@ class Runner: return ALERTS["err_demo"][lang] if do_train: + if not get("train.output_dir"): + return ALERTS["err_no_output_dir"][lang] + stage = TRAINING_STAGES[get("train.training_stage")] - reward_model = get("train.reward_model") - if stage == "ppo" and not reward_model: + if stage == "ppo" and not get("train.reward_model"): return ALERTS["err_no_reward_model"][lang] + else: + if not get("eval.output_dir"): + return ALERTS["err_no_output_dir"][lang] if not from_preview and not is_gpu_or_npu_available(): gr.Warning(ALERTS["warn_no_cuda"][lang]) diff --git a/src/llamafactory/webui/utils.py b/src/llamafactory/webui/utils.py index 09cefa0e..0446cb47 100644 --- a/src/llamafactory/webui/utils.py +++ b/src/llamafactory/webui/utils.py @@ -180,7 +180,7 @@ def check_output_dir(lang: str, model_name: str, finetuning_type: str, output_di r""" Check if output dir exists. """ - if os.path.isdir(get_save_dir(model_name, finetuning_type, output_dir)): + if model_name and output_dir and os.path.isdir(get_save_dir(model_name, finetuning_type, output_dir)): gr.Warning(ALERTS["warn_output_dir_exists"][lang]) From 2187518762844472a96b72fbad4da15d8bc97bbd Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 4 Jun 2024 00:10:24 +0800 Subject: [PATCH 058/169] fix abort in webui DDP mode --- src/llamafactory/cli.py | 31 ++++++++++-------------- src/llamafactory/webui/runner.py | 41 ++++---------------------------- src/llamafactory/webui/utils.py | 14 +++++++++++ 3 files changed, 32 insertions(+), 54 deletions(-) diff --git a/src/llamafactory/cli.py b/src/llamafactory/cli.py index a74445a6..c14ae6ec 100644 --- a/src/llamafactory/cli.py +++ b/src/llamafactory/cli.py @@ -71,28 +71,23 @@ def main(): export_model() elif command == Command.TRAIN: if get_device_count() > 1: - nnodes = os.environ.get("NNODES", "1") - node_rank = os.environ.get("RANK", "0") - nproc_per_node = os.environ.get("NPROC_PER_NODE", str(get_device_count())) master_addr = os.environ.get("MASTER_ADDR", "127.0.0.1") master_port = os.environ.get("MASTER_PORT", str(random.randint(20001, 29999))) logger.info("Initializing distributed tasks at: {}:{}".format(master_addr, master_port)) subprocess.run( - [ - "torchrun", - "--nnodes", - nnodes, - "--node_rank", - node_rank, - "--nproc_per_node", - nproc_per_node, - "--master_addr", - master_addr, - "--master_port", - master_port, - launcher.__file__, - *sys.argv[1:], - ] + ( + "torchrun --nnodes {nnodes} --node_rank {node_rank} --nproc_per_node {nproc_per_node} " + "--master_addr {master_addr} --master_port {master_port} {file_name} {args}" + ).format( + nnodes=os.environ.get("NNODES", "1"), + node_rank=os.environ.get("RANK", "0"), + nproc_per_node=os.environ.get("NPROC_PER_NODE", str(get_device_count())), + master_addr=master_addr, + master_port=master_port, + file_name=launcher.__file__, + args=" ".join(sys.argv[1:]), + ), + shell=True, ) else: run_exp() diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index 36f593ae..6e1facef 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -1,20 +1,17 @@ import os -import signal -import random from copy import deepcopy from subprocess import Popen, TimeoutExpired from typing import TYPE_CHECKING, Any, Dict, Generator, Optional -import psutil from transformers.trainer import TRAINING_ARGS_NAME from ..extras.constants import PEFT_METHODS, TRAINING_STAGES -from ..extras.misc import is_gpu_or_npu_available, torch_gc, get_device_count +from ..extras.misc import is_gpu_or_npu_available, torch_gc from ..extras.packages import is_gradio_available from .common import DEFAULT_CACHE_DIR, get_module, get_save_dir, load_config from .locales import ALERTS -from .utils import gen_cmd, get_eval_results, get_trainer_info, load_args, save_args, save_cmd -from .. import launcher +from .utils import abort_leaf_process, gen_cmd, get_eval_results, get_trainer_info, load_args, save_args, save_cmd + if is_gradio_available(): import gradio as gr @@ -41,12 +38,7 @@ class Runner: def set_abort(self) -> None: self.aborted = True if self.trainer is not None: - for children in psutil.Process(self.trainer.pid).children(): # abort the child process - grand_children = children.children() - if len(grand_children) > 0: - for grand_child in grand_children: - os.kill(grand_child.pid, signal.SIGABRT) - os.kill(children.pid, signal.SIGABRT) + abort_leaf_process(self.trainer.pid) def _initialize(self, data: Dict["Component", Any], do_train: bool, from_preview: bool) -> str: get = lambda elem_id: data[self.manager.get_elem_by_id(elem_id)] @@ -285,30 +277,7 @@ class Runner: args = self._parse_train_args(data) if do_train else self._parse_eval_args(data) env = deepcopy(os.environ) env["LLAMABOARD_ENABLED"] = "1" - if get_device_count() > 1: - nnodes = os.environ.get("NNODES", "1") - node_rank = os.environ.get("RANK", "0") - nproc_per_node = os.environ.get("NPROC_PER_NODE", str(get_device_count())) - master_addr = os.environ.get("MASTER_ADDR", "127.0.0.1") - master_port = os.environ.get("MASTER_PORT", str(random.randint(20001, 29999))) - - self.trainer = Popen([ - "torchrun", - "--nnodes", - nnodes, - "--node_rank", - node_rank, - "--nproc_per_node", - nproc_per_node, - "--master_addr", - master_addr, - "--master_port", - master_port, - launcher.__file__, - save_cmd(args) - ], env=env, shell=True) - else: - self.trainer = Popen("llamafactory-cli train {}".format(save_cmd(args)), env=env, shell=True) + self.trainer = Popen("llamafactory-cli train {}".format(save_cmd(args)), env=env, shell=True) yield from self.monitor() def preview_train(self, data): diff --git a/src/llamafactory/webui/utils.py b/src/llamafactory/webui/utils.py index 0446cb47..fc258806 100644 --- a/src/llamafactory/webui/utils.py +++ b/src/llamafactory/webui/utils.py @@ -1,8 +1,10 @@ import json import os +import signal from datetime import datetime from typing import Any, Dict, List, Optional, Tuple +import psutil from transformers.trainer_utils import get_last_checkpoint from yaml import safe_dump, safe_load @@ -17,6 +19,18 @@ if is_gradio_available(): import gradio as gr +def abort_leaf_process(pid: int) -> None: + r""" + Aborts the leaf processes. + """ + children = psutil.Process(pid).children() + if children: + for child in children: + abort_leaf_process(child.pid) + else: + os.kill(pid, signal.SIGABRT) + + def can_quantize(finetuning_type: str) -> "gr.Dropdown": r""" Judges if the quantization is available in this finetuning type. From a18acf2abe28e37233bf8c8ed2600618ea3b62e9 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 4 Jun 2024 00:17:36 +0800 Subject: [PATCH 059/169] fix #3992 --- src/llamafactory/data/loader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/llamafactory/data/loader.py b/src/llamafactory/data/loader.py index f5929f15..4d0503c3 100644 --- a/src/llamafactory/data/loader.py +++ b/src/llamafactory/data/loader.py @@ -120,8 +120,8 @@ def load_single_dataset( logger.info("Sampled {} examples from dataset {}.".format(dataset_attr.num_samples, dataset_attr)) if data_args.max_samples is not None: # truncate dataset - indexes = np.random.permutation(len(dataset))[: data_args.max_samples] - dataset = dataset.select(indexes) + max_samples = min(data_args.max_samples, len(dataset)) + dataset = dataset.select(range(max_samples)) return align_dataset(dataset, dataset_attr, data_args) From 91611d68c47dada2b74a141a5842dd289e46d356 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 4 Jun 2024 00:21:50 +0800 Subject: [PATCH 060/169] fix #3873 --- src/llamafactory/chat/hf_engine.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/llamafactory/chat/hf_engine.py b/src/llamafactory/chat/hf_engine.py index ad0e90fe..28e6a409 100644 --- a/src/llamafactory/chat/hf_engine.py +++ b/src/llamafactory/chat/hf_engine.py @@ -83,6 +83,7 @@ class HuggingfaceEngine(BaseEngine): prompt_length = len(prompt_ids) inputs = torch.tensor([prompt_ids], device=model.device) + attention_mask = torch.ones_like(inputs, dtype=torch.bool) do_sample: Optional[bool] = input_kwargs.pop("do_sample", None) temperature: Optional[float] = input_kwargs.pop("temperature", None) @@ -136,6 +137,7 @@ class HuggingfaceEngine(BaseEngine): gen_kwargs = dict( inputs=inputs, + attention_mask=attention_mask, generation_config=GenerationConfig(**generating_args), logits_processor=get_logits_processor(), ) From 5a13b3baa63225e7f79e024610722de0f87e0acc Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 4 Jun 2024 00:31:10 +0800 Subject: [PATCH 061/169] tiny fix --- examples/extras/fsdp_qlora/single_node.sh | 4 ---- scripts/llama_pro.py | 8 ++++---- src/llamafactory/data/loader.py | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/examples/extras/fsdp_qlora/single_node.sh b/examples/extras/fsdp_qlora/single_node.sh index 54ec2bd2..fac8cdee 100644 --- a/examples/extras/fsdp_qlora/single_node.sh +++ b/examples/extras/fsdp_qlora/single_node.sh @@ -1,10 +1,6 @@ #!/bin/bash # DO NOT use GPTQ/AWQ model in FSDP+QLoRA -pip install "transformers>=4.39.1" -pip install "accelerate>=0.28.0" -pip install "bitsandbytes>=0.43.0" - CUDA_VISIBLE_DEVICES=0,1 accelerate launch \ --config_file examples/accelerate/fsdp_config.yaml \ src/train.py examples/extras/fsdp_qlora/llama3_lora_sft.yaml diff --git a/scripts/llama_pro.py b/scripts/llama_pro.py index 997b3496..727998ae 100644 --- a/scripts/llama_pro.py +++ b/scripts/llama_pro.py @@ -104,10 +104,10 @@ def block_expansion( print("Model weights saved in {}".format(output_dir)) print("Fine-tune this model with:") - print(" --model_name_or_path {} \\".format(output_dir)) - print(" --finetuning_type freeze \\") - print(" --freeze_trainable_layers {} \\".format(num_expand)) - print(" --use_llama_pro") + print("model_name_or_path: {}".format(output_dir)) + print("finetuning_type: freeze") + print("freeze_trainable_layers: {}".format(num_expand)) + print("use_llama_pro: true") if __name__ == "__main__": diff --git a/src/llamafactory/data/loader.py b/src/llamafactory/data/loader.py index 4d0503c3..7d013d27 100644 --- a/src/llamafactory/data/loader.py +++ b/src/llamafactory/data/loader.py @@ -179,7 +179,7 @@ def get_dataset( if training_args.should_save: dataset.save_to_disk(data_args.tokenized_path) logger.info("Tokenized dataset saved at {}.".format(data_args.tokenized_path)) - logger.info("Please restart the training with `--tokenized_path {}`.".format(data_args.tokenized_path)) + logger.info("Please restart the training with `tokenized_path: {}`.".format(data_args.tokenized_path)) sys.exit(0) From b27c4cfcb367f7ab0b56da3ba238c4d9c29ff4e7 Mon Sep 17 00:00:00 2001 From: hzhaoy Date: Tue, 4 Jun 2024 10:33:43 +0800 Subject: [PATCH 062/169] add: support selecting saved configuration files and loading training parameters --- src/llamafactory/webui/components/train.py | 5 +++-- src/llamafactory/webui/utils.py | 12 ++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/llamafactory/webui/components/train.py b/src/llamafactory/webui/components/train.py index 6f742bb1..fabb91ea 100644 --- a/src/llamafactory/webui/components/train.py +++ b/src/llamafactory/webui/components/train.py @@ -6,7 +6,7 @@ from ...extras.constants import TRAINING_STAGES from ...extras.misc import get_device_count from ...extras.packages import is_gradio_available from ..common import DEFAULT_DATA_DIR, list_checkpoints, list_datasets -from ..utils import change_stage, check_output_dir, list_output_dirs +from ..utils import change_stage, check_output_dir, list_output_dirs, list_config_paths from .data import create_preview_box @@ -259,7 +259,7 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: with gr.Row(): initial_dir = gr.Textbox(visible=False, interactive=False) output_dir = gr.Dropdown(allow_custom_value=True) - config_path = gr.Textbox() + config_path = gr.Dropdown(allow_custom_value=True) with gr.Row(): device_count = gr.Textbox(value=str(get_device_count() or 1), interactive=False) @@ -317,5 +317,6 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: output_dir.change( list_output_dirs, [model_name, finetuning_type, initial_dir], [output_dir], concurrency_limit=None ).then(check_output_dir, inputs=[lang, model_name, finetuning_type, output_dir], concurrency_limit=None) + config_path.change(list_config_paths, outputs=[config_path], concurrency_limit=None) return elem_dict diff --git a/src/llamafactory/webui/utils.py b/src/llamafactory/webui/utils.py index 09cefa0e..37df1b52 100644 --- a/src/llamafactory/webui/utils.py +++ b/src/llamafactory/webui/utils.py @@ -176,6 +176,18 @@ def list_output_dirs(model_name: str, finetuning_type: str, initial_dir: str) -> return gr.Dropdown(choices=output_dirs) +def list_config_paths() -> "gr.Dropdown": + """ + Lists all the saved configuration files that can be loaded. + """ + if os.path.exists(DEFAULT_CONFIG_DIR) and os.path.isdir(DEFAULT_CONFIG_DIR): + config_files = [file_name for file_name in os.listdir(DEFAULT_CONFIG_DIR) if file_name.endswith(".yaml")] + else: + config_files = [] + + return gr.Dropdown(choices=config_files) + + def check_output_dir(lang: str, model_name: str, finetuning_type: str, output_dir: str) -> None: r""" Check if output dir exists. From 82a565362ca031f9b3e7c5c24d2c43d1741bbe19 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 4 Jun 2024 15:52:56 +0800 Subject: [PATCH 063/169] update wechat --- assets/wechat.jpg | Bin 183806 -> 146230 bytes assets/wechat_npu.jpg | Bin 128743 -> 151211 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/wechat.jpg b/assets/wechat.jpg index 6aaad061a7c0c308dfb0132e115f47433303b099..5b906302aa84623d919bd4f6a0cefe8fd606ff0f 100644 GIT binary patch literal 146230 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 z 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

A;fU;z;3X*#xFJ?XY z>hc@ON)c*CuL8wi?6zi{UdKIYAqT&@@nrePV;Tasxn9a^}SdS>lK_265k@#MA z@7p;Bf#L}JR0?UblSpXZ8WC83NsTa2c6PB9oL79+!HL8t2V^#8J6OJqcKLCA%K|#W zNzCcw{I>?HBtUqY(UKgSPb~?14W~K-#if7<-CL9OR=T1h5AHB)nQ-_LaMIgHF>yL1 zq|UXz+6)y77M%{23Km6)hM&cjHcmGTOV?+(Jt9i|NhH2y&lwhY5C{2dkG2QH`V_#A zPQui1ge`ZS=SO)~4=3{N?C;1;?S6hHu%Rl}VlqG&urGdB0zDcUgdb8t-Upeq(|Dr1 zXL7?hdv)yfgem1*C#O;tnm;z0AhsXn2UKxu4W3u^m8nt0zpMjbmJ>dEB0SP!2Y#NOVlgj&{UIUTSx(sOa3*~JpJGwffLePi zADjI%?jOjZSL;8JDHdj|`Ty=y2#%my9>^e4?B&-RcIMvZoLud791=46Xd5KTkOD72WaNz*;yv2Nxt?Q!RO_lca-r3kI3f-SWIqK1Dj75RTTH14Fm_4vz+Ztip*8PLsRwd~*zd%254vwmMR~ znv&?&_OHgiUpMSnQA{g~2Ki!}*^m*Ca_eKf@kz#=@IMF@{Qc_bwMFA~kIW1CU`pg# zgioSP!-bXk(sqMHllw@zSn7`}TSUAapq?ftg;$ceafauDVV;d*ePTTnO$O>C{+jF^ZhZ zuDn*bLO}WDm=4wc>_zH6NFt&Qzo?w2d7sNK*s|}k6JFI_c$7;I++wD$}y?IJgp&E%WsX9 zca4d}Kk9OvXwVJOX7#Vy`h7q}o}3{KvGlOV?cii}6sBOYYB~DYj&d*gHu7R%psp8G zDx_secWh8aPf%}-XDA?l{qbxv8{_A4h9v($*4_YVlRI#8JY}%pbO#w$5IG+1lamv_ zeC_(AyM1$Of0igu9V>*yJUx861Sa+lM~Cl}FWITNU=J2-g}3FM@6|_{=Iww3#e(fI zAhQ!gs8k^ZR3ZQ0%zmfh`441~R1Fvq({21cGi1_ScRRT@E@-)*S;#!@*qP{{Ymybn zCxA}rCgle83NvUX6lopu6u+i{Q7h>U@utu5RW4WR&A#8oRGjEeT!BYPxu_R$Ny9A`}!|!61at=6%Zce zz`zQ3r}kg$wbI8rdX_BzaLv5Uag0c`Pf*DHVjjhwrBwbmEJ-U))8}bY>7Ah$YG-uk zAkrq*L}}H12^~|Zjaim*JAfYC&&iUK%Zw~*TAWjH&ii&aUHX ziJRAQ-VUghxg+*I>glDsHd^YuqaWqut(uFp0XPjd@(d6fh=4}T3+o} zl$|kFAP=d*Xn)44O>Cs2GbR+BIF^W#3wFOQYx=+XO!-#ZYVba?g@;Q)ZEwaaA8950 z=$Gdbcc-QIkFoO*c$9r}^lY&`t(UI9SFJoqiC;gwqB=-jpyFc>WMTHrvPEMhb2SWG zv-|K<$4p1ZmBnJiSK~I`O@;$OdNR%}YE_Qb{Kk3g&C>foF~O!VphVH}(peylS(o!EndNHq3qtzxykyhU1ehpORcSoEKTy!ce2J*zO34N6*6T#T57p_ zYfLXO#_RL@mBFtbl=&%X;w0n)IB`%8mBKZstmm9Vk3u#pxqBxAmcUWpoBL+EbSzu+ zV;-Gf0J7t`CL7F%)t|&lCC6nltk}m=)8d_! z6H{q~T(3q?^F1jNQs+)nWz7>r)!`|rKigP`&I`H= zk4!Bu@6tbIv>DWCVxn{>4No8JxBOd;wwe*C2Nju(2WbDBmgE0G$PKbMvMArWSNby7 zZu#Bm)j1|-+a)}gM)~)^$b(fb__4g~0+YcqXizMChM%9|YWUsgzE(G4*XFT3Chq~F z>TVTAMdD3&BbN>~R8x%9(Y?YHi@ofIZzIdvrVB|1B(D%~I@o%Z*&j1l-}-LZxK3AVx+Etu5roXRofqqpkJ>$CB@aYj#UGFBn#zy`-VZ5p7KMAi{7|kFg zc2Xk{HGrQdiz8e+u$?v7QEmLQvYjOLOP{hThp0LOHDb@DOCDcKYO{Hu!JDM-Kk$H* z09(mfKCjA;csT`dk_i7v^5tzM2Dd=B{GT4?{XdCq_vaBPV$&D;z;n%pMt*w`qZKn1?J#F1#w9Wr;pMrnz zGmQuzHij?*sEOmGYS>CPilN;bJ8Fit%f}vQ;vJD|3{DC>Qf=(*wcOlq%^XIT?)2Wc zs>Z8N*EBxoMh5Lx0}y#Y&jrcfUhm*tcTK};8cj-W666!2`Isf^^mu!xMmHD7OkN~^ zVf@GThba5WI3W{q38aor~q@fz*B?Kbg2p-mWo6`v1 zB;EJZW#2B8cep`J$|mMcxtxtbOOkNNaR$O+PUSfpz-_6vk;=hV0Hbd=#dh_pinilP z`NSLTSgOjhMTdZ0qr;Dv(&k1ap6|bV#(V9>nPRGIi<*?xBoOnhfOmR9m5~Ss)uUq# z{6rD)$=7;wUtM!cX2BTc8@US61#dJxWM1Sel_+a?`gad~x8Ex*wcPG%=o;9nb}edu zi!eZ*8S%L2!#s3dljn@V(i3$<{xc<%!T%=qX*`ABQ3Q8C9(oXk4YGc@gA;chyeNA|WUX6&)&$QYetUh8=Utt%vf}i84ra9~ zq~Dmz*8SJPd7jNZJIRR+Kl2zrx+S78_fg?y8H0>$+t-68(TpLNzqs*`^(f6E(B@gj zS;uko@*DR`B}_fTHlNLw;+F9sO5TO7NCyWg&bHgHF2`mf2lNbfk@N5BUq&dt$WIPy zdLx|sqK+$rTRgb3X9742*0Ymlim~f!lH;5Gv%b=6{C8hYxA?xWP~;W`y=$WQ4jeCh ziSz~5pkL$2KQ@V;SdA@CKkLb&VY-J)w|X5v9(ObX>iF+eML>`HsG8I7m*uRSLCh=< zP#aq6_+sWV6Dlnd=D#@lgZ|BN{6Nj&84Aco9Lj|RsNy-GQRusV-fKX5T{#huHseF4 zg^;_eHVhnlBA$x#--k_O)uH3b!RLl49PT3dLXi)Zob1#rZP*4gE=mUTcEDcR7MiT@dv>Xnaul>@Na1gBMA8dr12O zw7q7_j8x~yDvC+trHhW8q86f;LAHq?E_Ofn<5-~a(b@kHuX*bCYbf(yCVY@6_D11_ z)c1~)+*Pi{iiQv8e1TLZUy54gDL|*;3vpnlXv6ii;0?}Cqr#x)t(2?TH7Usl55M?c z)3p~5>!Z1EPxvrn*p|IaCu?J)W4mvY#T})L`fSnw5Fw*R^_bqn)>kCe6(p3 zq&pb0(elx_6~Rgh1CcK+;nGa(%EGP3mQ7cLb~4xK7aEfF??rt&7aelThAzNsAaL+) z(frR=mm*X#`u4MDjx6R2X!Kys0E5H3hs~?bmXdth9=)E+^*z4F zNSp22Q$NA5FGj|p#AgM>+nDs^HA}iJx0kQXW|T+G!?~7uO9a-MZVyELldqezvmvFssu&FFQN?7d&YhSQ#0wAIyteG2$r~K66RAY(lU}hLQQ=XP>*i`-gcd7?$x- z{43IlF<7Y@K=jM|1*pDkayr@zW)7YhJG9jYS!Zx7in#ZQGE~TVq;5We81KP=)CXD5 zYXFJ6X^GrA9}lwi|MVRsD0uo(nqc%s@{HnV4tpE0L1^C!SM9U{yGa%x=)!gtu&ROd zExW~jFI>>N{yaBibW6-Nud*;M`7KRG-l^!`U{w=n0eXo1m@INkWEc#S2M)0HG~M;t zK4}K>6bgd4yQ+8BTo-xX8TWAUa)XVmibKhk$NAn)pIYj8-YRad;ZM#drPY%_FtJnc zs}Q)bG~&s8sb%qe!|&R#7yBwDA|2Dj;S5w7^izgs0^^$#sLU`mlBfjck^+hU09=v< z@I(=)F*-3D2?AOJfcdPx?(CyuRSs?k2Kd z-5o;$Ydlnac?ljgh&HpZ&~tA*?KrwtQDveo@Y^LeH#XfSWKbLIJ}B7gAndm}?C{GU z$Ud4xNy-d5vxThF?CGHI=FuY!mQ!c*Z+136h*z1C@#hm1wN4kMPX!(9nGTH@$koQe zQZom%_sqKz%eywuoLLP#yuAby#B3gz=FBCrt5K!+K@2nTzW;`WrsQEE-oUqcF$euO z9xQ6|rkUo`Uw`ecdU$Z}g@9~KK!_StA0YHK5dhfo{@uz1QA`qs-}E_+XeruKQb9N1 z-Z|SB-ep8z>TG^%6CzA`X?_IF$+wYhd^ie!kK|E#STPQEBxk(%cc$<$v|q*DbTz)o{me-BD; zIgdOM(pPoEho7$o1H>Hmn5Z~JF1II}p-2nx0wfKYa|?bphzsx4eJaw#x)s3x9^EIo zK%K5ed+ALuwYCUGX52^aUqv$t({C5Cms3~y1=fvby>%ryb($7_z@0d0shIblmbWa1 zbK5AJevQ`HVi_PsMUR&^2tRX=jifvIDSbeN?7*j(!B%_(H5sfQ$hJKn=8Lzm$XCM}7j!yJmV@O`PR88$OwOPYtVE z{jq)@79!56@XdZb0y1z#SzvVJ>mwgEq&~op%6|?081HemE8?}RHkYtxMZ{jH3^zs0 z2dW=5g+V!fzIPiiU6DuQJpHosjx#l;-6Aey!trOM47`GGR`Q5JD&XvXvwh#Frt`n3 z=vF)C3VcX;c*fGHDH+{A#bhGr$aSV)oX@)#rGu^>UdBtEB~4;ydkNC@<2ae3r7_84 zl!VrEHMpDJ9K^orEF>s<3(DWggAaS$IQ>L)JDX^VwOH8>CNSv#JSV3LcYux3wCS~Vy{O5uE)cw9C(eNso9 zz1@UH889uH|GR^)dEfXaipYU_)P`Ei=;PIvDoUAwU69+N)Y6eiRHkun>9#u;oLlVl zBM%(;@vQ3^eTl42jcB`MEM+gcs?c*mu&!pNvMAGN(7mKemyhzZPt~`sG?K!jw#f!w z%m2ucXAE<{0aHD`55onrt=9z0&rnc#o~zyt{XZzL|1a9m|IfdxYW~e{as!}yv6Vkn zFT&X^fU;2L^R77ojOnXJ-q;79cDSQP1ZIqrquiIcLufX|S5zs%yc7Nzz!)c&quGyQ z+efIsH~Um)v1QcCIcM8yxFL$dy}fb9BZX7M_Dn$pwCKwN8u|6a=uSrbb4M5Nbw>7| zL2Qk!UTmz+nQ=E9#Y0lcrfMS;f1ClT@xcCF96Q+N{NB%N4IcKJWVhoxf3zoU)zH!m z&KsBHg77T5iXqD20$laTGG5YqvmaHz{Mv=bpJzt;ocSo<*^zrb9qku-0?ynK6z%+a z#Ev=c({0&R74|dxKI14^b@8i<)y;RF32~PnofA&dECF}{uOTQ~J11t4R~uoownx+J zVOb~Hwv(BCLs#YjJ(Xql~#(T(f90{TNc%R(xO{_cOO+J z1yLnD%UcoqNGS6X4!F>JQx=0!wxeFH=Bt$5d6@6LkFS*9`Yl zU$*8nMZV-{NLcfKrfPk|rai4uSj>*%CVgCp)kRRKi)_nvL;o61aTMTsNe{bv!`e{R zR@7lHb%OmDe7D2@R^r|jOp&=`K~n~qrBYI%f79IAQlmmvnMq4EFIf#*wv2fIoeNua z8<>a=FpdXSSjAd+Sf!Iu5!x0@xzMf@^;)RBw|4Q4VX_HL&r@H`-t3HDZu0=Ey@_$Y zjo(?#3F^beW0nWb-@VgpX*S)5rZgK;o}d&T66ZR&Y#p^~Qt~hxqAv>)AB-`5%RcPI zp63<26qA*yT^2SU5sf0Iez9GJ>wFhBa(}OO)$(r+MDCele9Rp;nv&b$1^rf{S9NYJ zYV9P?r@aNW5t_erTNi*{h0>E};TYXpoVZ+ki#L|W0J}64=B;<h85R9*7tgf*>v zt^8ydk~!|gAx2Yhk0va8l{}8bXmxO|7!RIj9SWG}*F|yiGn2pC6fbO18a#Y??r)_yW~|kbeG62qKZ^y%p=1Iq{%7&;G^k zwS}f*<<5;6&vx6i3oM$CjIZ_y+FX5gS#V$?w5*!f^e|=AJlYWpO_lv9X3zKFz_fML_znB5p1JMQm zcHoh?u1z;Czu_6RSn`s<_QTnxWSEAg8Snw=|K9h7! zUkN(Vxkf8*#1ru`<>$LDo)2q|=%H(a*GdD&a}Cm)ASpEHrKy0l|C=lW7zTU-9HOEAW9l%749Ki;4J?ytY#`{IQ?H`?R#?5|RSq25PAt;3yp7LU*Lg(?T!EdyYYQ<<~eQ zP;-wR>{37QlD^pD0pnR{{X{sKZ*iN`?$qu4&bZ^HuLY?T!q0PYm(c^UC1Teq@+H3z zGKj3Bxa)X(jOL(#5D*noy|xA8YzT2^_07p^r$77p(KR0y31imh*@Mj@RcCHceA3(y z9olI*=u{#CNiRpK%Wh2Dyaj2oG6Vg=wy38xt8jDRIq3Q$5m)iGa>|kA8=S#XE?GRO z$|&$vLBi{}>;PN9Dz5wsasSWY_x~0VAJhqEu{=?U>V&NWB^`jI}>`hK~)$XR3FLHHqE<ZX=CMc8|Q)Xu`LGp!F34iG2lk+u@7AC z$VYJFjf*Y)hT!#6awJ~;P~LHa$F1kGlG$mc`fbx!d_{t9%KthB{OmGl9V%L0H};B( zjo14VFMk;ervTfn^Mm@7Jfad@vN+~1a;P6zb8BY_VMw@x zV8$MY{a&IZb8?0tDvb?tKWZfQH>xK;k59_>?+7yvM)nA_YulFujW(U~N$Gu$u3oz9 z+0LZWolsy?(zCPcK)IiZAH|h`fWih3!=dnPHtX|5!!kd+{f7)@Ai45R&4^_AZn~&8he^TX zX>k#Uxtlbu=LC~2H$h+37!)pL{y@q=n=ic>V3lTP1fZnXMA{YP+_EJe8d&x1Ms!L4 zEV?>M)H}R$rjoDAkxqXO$d=0ri^P{k*j;)<(uPYSdkm_6)RH1pMYY}JlC(yO2hA>D z)ltoNs%qhXYf{SJBisQA0=TxmW+13K`4a*A1L*|PQqSSwlC^;BOidnJt{aTacd)t? zW&+SJrC+NMdh-3&=!3D_A{jb8F(M*}(FnoIvg4!BA3*B<=)BnpawYbg;F-gfvsk7^ z__roz-Z?L>ANx7uhesQypJ}#+i1LX&jHePPMu7D#0h!Qx!&ZP@v3;duV{1f??^#m# zqVBDZuNAQ(k2ShwTa{9{0de!fIeFrT*#l!D3joMX%oX=)_!qnx@<;Oc$C*3PXY|G$ zQBDP`c2*0KO1tbxthiGA-4Z`e^RCt@#E8-U=)(qz%$Y69a~rlIw5;DRCMBndG88l1 z@&P4rfLf0P6xOfcJRN=f2h!%eBP{^H+(hPe>3Pw+cviR4Z64R0yyo_)-w~=WC*gK> zjvMz&l1-~b$NVW-p6MhNyiy04b3^bBpp@j88j^z7M z8?;QO-@x>l)VWETPnfPnr!<4|6#Yk2WpR|uhCuA zXd{79hveLp(X$L8bN|FCpa&wu+b^yX#4V-1{W9y)x)>og`7GSZ(S#w1%{Ds~KBgWN zh3wI87}o)Yun$Rz1E1b`yGyrANbR@JzwMk7Q+9;vwV zg0op#6{?tMijgOg7E8}|R5nFRY@|DKg+Ea@)wUA}h5&wkk?~YYvZ|PKV?WZ#yOx%47Sod>s3{biTI)?*y!MWlZSuknfpw)48JUeu2&yN#$!~vm( zR|GYOP9T9}gHz6Z{9M-gmM=&y}cBT zzWFdr{N2TW5^mGf{1qvZkb39s0qg!**pg|I)#s)xJggTR;(=iLobdAso1&+l#V=C>!uvweNnRr**ZkK(vnZH1w?;Q(awR|t4H63SnJkX$q1 zKp1?$>mmzLyCw4RPFi|7V-fP?5+wcblukxpY<$^fD zWv_QqJHwdd#BX*vxzXa+u1FapBVQWT#~eJM6dB+xJc_%Xpz}`g(=~tS2YF)Eyw##( zQ<5dxKoV$E$4Xr9{l8%Tph)mr{r^bJ|BV~|2R?ig2|=QMu+{jS2H=2b{2u>k=KEbX z)}4UY|0|D{{hLR(99$qz!D$iCD$x#T&i+3T>K(I=^%I{No}dnAm0ve#(NQTJHo^Lk zy?>b!=Jao~0M^~5P3QYL;w6S?W}61nYN@_!{1g|BMLQ?A;Ab3+S>|^F5Evbd0ein2 zUrmjX2E#d^9ZUnZ{a@tyWsCugfjp-w^0{5xYfX28&M!=_p8P2g5E8xk2R`^DGYx)v zr_-Lo)P2YomMx`XygET-_UaX2#Lh%kIm4NL!Oy{9a73x|p&i_tp#A0r-$vp?$b zeQH~!c2(=ysj@l*0UB6msYppd%)}R1-$)hH^~6{n-`;o^7hVI?-{x;P#PJVf%gXd5 z{A^`abyAbog+r`(F*Ib_9fGPE!Uj{giQ41MBdWF6wwn*D+${WNT5z0lk0B~=$o(Mr z$@Q}qX^&);5F4uUC0UD3C+rj!v%yBhAL@z zQmd5|!Ov9+-J)H5K(lAR7YSn81)%g~zrF_>lw2!6pxt?B8Y|uy@x^k;GscUV?o%7L zucD#|lO`n8AO``aU#K$v@hW^k`aHhx5tf|4W>T*_{QF$}WO3#D5tSDLLQ@hIKIP%o zkRM#1XsbV$iBYag|IJ9UR*~rPwR-{za1JcwO?Cvkx$%(YvjQN zjoT#3|BwVzoZv$^;$L9~ao;8e1#V)N!=?6ZWc#Qa%5U2p<|#^)3x{g>4VS2JV%Jxz z`{SQ(sj}ih{?ED{dO3UU=jnLIVz0d5_1*XpG%dH{kWd#mrB_NbSjGu25t;zJ#lk+# zB5x-Gs`+;4Mw+})neKh<0}JV0X%ES+y%0?D`{eg_*t4}PaksCIM?mk;(#!!vnT$Qq zL8hv~bnRWidIDw%1`iNoy_pGxY@p{*n6fk^SCbcSYdLkrAo-zATw;cb?N@{Od@}9b zRk!)$HC*cYLKm--fOyLk<%o^#jJRF2yT+t&?eIWosar-|3aug+%x6*!N*6Q@2PA0v zpwG*k-f#gl9t|#%VOE>JY+9MJl>e!`ez;=l%7Z7Oqr<}@-rXo1z|n*naTWYsTC=UR47pxTaRcJh%qXDo(9CH=FAjHrc-*Lb633T5y zam6B|LdsedWqZF~-0b7%p>HrQBBg*K%^43wO zu%<|XMErM|__q*IhYLez8`B78AS*>Y!-B?4WZ$0S5t0p|jwz1#ZL6NVEAQfjp7A!~ zHWJ(CqMTc+#&fQ729w3~{5iuA&Z`F;x^`v9GCwm5IOFMRF6u_jH-?1)_;~dXB(AwR zeFs;DAN-~BOA(t;6;fc`fAyPASv!sn0@7yVCS=d0AL-DA$9)bdvLdZMdH+8C?ymbQ z4K)~m`ELP>TQXQC7-?+6VkhSSfo->r4Kr7IkLfgR3n|XNYyr;u<+WwYRuw{ z;!?0j%x~BnBTfN-3xiy{+_ZK;jet+9O6)Yw+?nLmZf&|!Jak1FeJ{dM7XFmZ9O4p0 zD_FhpV^2?|30glpP@Jxj2Ht?=S7Wal(KGuGXl?~V7@xs4kUh{JDX;~)Z*s}$H|3O9 zwky=*WN{Nw@^07mmN;Zz8J{ME&wyKH9mR_}} z0a$+EI_3NoX@kUzN=J0r!nwDdfg)_TJf@7o4kFn2!+^!ElC* zzY0``_|HanIUKwu)6YsB!I=>Hn4riCvuoz@ut&3%EL-0+tG@d*jTM&A6DO}xBc)_e?$brqM>RI$Uvn_ zqDD2d^`n-W_uHGkyd;#&04;x0Ba8|`3VI0f*taefOp<8Z{SKpNtu zZ)Y4CQ1hHDE}7#|H*ZY+s%H&-7-A)RCZ(U;NMt2-sL~?*>LUq^gFcy7WyBlt)z@m< z?}oawf0|e19(&R4dvh&VHSB#}U1#H$%9ORKHSuzP>PIFPO4oizT%VDwHN9mC z+Jc6OG{k$DrhYM3JIqkjQ5VyI^OXpnX=&kRX2tEw582Slzl@O{bJZ*O^?qnQu4X02 z6=%|ZDR0O{D!zEI@S=A*TETyUc;vae)z;XX|8AJ(6SDqzXxtc=j{mv_6>##9eE)4& zsJ8Zw4uA*T7=ViWs&}@!DP03Fn!6)5paMHhZg8(ZEJbdFTeWxvei5YX7>A{y$w za~4JL>BTb0yq6tk|EP1Jw*;Gi=#$i}!U`X^42mU6b+y3p;Dj5k^`1N(VE6#fGVQ9=S`Y2$6t-7ZXQZx)HH39uic8vY5)`pl!619QI%y^Is z_LmKJ zAvAACs+CFYFneeuvL4o3d8<8eT~QU<_ujH{AS1fU)j9!9DfPu~gQYdUBFq6Q`{DVc z3ku>$RrXV95V10JwltHXfWTArjWtu1Jv#2^-!@JXBqZI(w}b39{y_XrKT{r6<3(Y+ zKYYtfyOGXr3|7&0_XzTpGr6_n>6F&ch8tW*&?|paT|yr&lN3T^Bxn#tF$SUQoo$#r zjKvklyyXRs7Q(HP1jS4mP2@Lm5gA1P0kypH2MdK?K!CVwx7thc$8H}cbZyNz*B=4R zZ%-K>csnjYdC>Al|JnFmhlMC9S{5v12KOW$vp7)p2 z^f*u@T=bdA$!GAX6RV-q+E=sd0ibhG#QAw4hwzBVJtI$VPR|%?MbpvQn)Wmlz1(l) zCQ>UyS5hW2DkB1+5y|}3wE)9GF~@t!g?`@N{GJDWW`mI;MY9hYU+WiLxpR_Sul^6; zKX-Tq<2!!ACrqphnB4y&y}Nqe7Bu5wD~`{7(oN;WIea~JWp4ZgQe1hA6H9<65w;q5 z%X$!a>qHcnY)yVj^s?tjNm9W^oK4dH-q@=F>@@5ZtMidB80Q#!mmAXGuHH+vXvgFh zt`3h^f(#Juq}d=Cw3Tmfb@yr#q3$^3lZI*$I0fWXZi3aQj>$z;ZylQr^>-MUOs(dK zv`nv0O)XW~&`3fvFIi_r@&*r2@XdY(9_K_>5Mus;G#runzPPH~ezmISs~%m+a`=te zi*KeN{SbZmd7t7+` z7j`|wau>Xm`X^h^bZu?a7SQZ4REArWp91+@9cHf&OV{`LB>xRtPB63c%iCaMqqf=_eE=Sfv6mIe6yN3-6r^E>HAsHf>`14f3; z;ikFrVn65%b58huy*?YK5y2`1&Ih;fudpe2WYl>BTNSZRXNmgecFyM9gU<<|!Ww{i4dA^6mj z*?-7Ghbn&&;!|h(Lv?-);=f#-9fS z@){lLhCH!@HA9#Ah_5xG3Z!Wq6h}nXgC;<9pbhZ)4EXZ*`0sFbXVuHClLZ95w48oN zHOD8U^0v&b+8!;N6_<5kMD`<>gk*aCFhF- zFKB;~W!!v7gpmqVIf#a{`mrE?1{9e7fadUG0!I##ulB@A%?^D*iyO$82_k#+aT#&AKeUt{cVq z6rTmy@l(bPb)nnLIGL+lwr>jbGEPKnPdXoVDSn!QDZpGucnlWk*Cy>GG`ifW_5G+I z;vk3$H6I=&cq8QL2JW7}e~qSuJl3iRi-M*>g2;c7_$MKR$7B!@)=8CONBd8kqJk97 z5lXYa1H(Y^n(f$K>(QFEZOX&%H#S+WbE5rtn|oInZ<9j1Y`cQt7lOo`R3-38tQj;$ z;L>!(n1}k=MKu$V7R{s~=FxPhnB-wxuI!VuS@!;ePTz|uZesKri zc?iZ2G{yt4$UQ?$V7Gu!`)7nER=m$ls==NOScNj|#Q0Ytb`@=q0A+gnrViPwUg9|;V4uIyTg zJCr5Qm}N#>H19orUFD~k3xsk$;G@CaIN*KP4fvdaY5MvtFAxo+O)p7h@yRSow%r`P z+Lklm%OQMIkV)1f6UR6Q;woC~%JMvYKYBLmsM75bR-mKQ3~68a6=RZ4Z@ne_{yiVd z1fOlq2rqMdG2m;#j$IcExFp+e0*u>#2gCP+%g7 z*A8|8^iK2fvp*1IB@ACiKxvcGf*9@+&W~gEp)92Q)rNm_0trIE>gI69UR%!`o6?o} zWA`?FeQn~o>d9Nwj1Ui}79Y4JRtBNNN)7`(zeKMdu$+u+q=`li?pm8FyVq(TYZg?6h;7MW$8S1v!9b zxUb9$xD&+o2j!l@0OVEp-??C_dKGIIzk+0hJAb?QRq~}J&w$E87Gdk&gWeWOiJ_1Y z%58OL<8CCzELs3IZ{DX<@ew+BBc_|r6>8m~sM;Qkq=THo$h>YVP!jv{IZ$4jlEzls z)c`_7#omF$kA&^1HTiVzRrf8SYaeSrtbp!qLQC~#Kv&)Y{&GdU=(~ zHPIx2uo0EN^9$(GcneGS8bs1@g}b;Ss{CNhaujPu$PW{{S@Iho^g6F?qq@b8C~U5O zbaIPgY4DZv0f6*?oDKL4qZwBw!rG~3jnV9huU8}ZX&%(P8N;a66g=m;DP-s{c@uWy z2~$7>IiUPhkCbd#07jOvt;Wvn+}6E1zLcO5eh9+R`QHFi#PwjcbiYfKSf4j;QcEGDg&}3yD3wxW#*a})~2O(xTzdLfO2T-(nULHaN zY|drs={|yxoBLW7(hHQhYnbA_=v5N+1pJFzy`JvfOj8MOalY$9I!t=J8bi+1hxs>E zLc?gN!iamuM|}kO;VJSb6g~f3TT{5)`>`RBRC~_L!KxzDfZVGJ0sNNd?f6JQ7*O2Q z%$#?57WXkYbQlWMExCIJz2NU#FDKfsE^+i}ProCmqHNswE8CUdHfqGMb4q9{LKsr? zEI}x^(J72D!@zs_WfvY|t7GK4=;tlzT*^k_1Xvzt{)ayoSl60{3?K-`y6OFP z|22@}GHtWS8AY7lm)p(bKNd9pXa6#vXK`NGIj?+oZf(DCMU zFzTHABGZHGiH0kXf?ptUe=Rz$1MS2i#8q%xb)YjmHC#f8Ys2M(72}3bB9*qkVvO^C zWo(AQwcxxPTQhW0WSew?&y7mN^yq{nW^i*&+@BT3*pq3+F?A~k{o|B_vDJRD{R#n> zrr@UY+bs8zVx#8d9ziA969y@QKhaVOCW!CTiBWDK(Y|EbV$1>nAI5yU@l{^WxvzDv zpZ5H2=98L#+UClV+azKZOdsAMHd9d~=Nc$rG|99I;2K^1ORR(CReoXp8JTiBzRw*? zby@CYoV%-e12wvoup>2n8Un&xEkT%KG{CEHlZu_*$fhW-9agYo)8-PQS`^z8{3U zid08biJ%yL6-Gqa_fHTakXuz#&2DqPWPQRaloV&wb;=J3Y9UX-fSGT^a(zZWVS;~K zX{K#;&zh___4{Ruki$MdlhE+Js0IB2^>xZkK6`m%Tp)PWro`(cRFIfsu2TK1Jkajn z4luE+4SSSwDTX_$JA)ZWBy&Jm6SIohao%hcn=n?GQ}t^U4dR|0BRBq73q!8ksO+h2 z{pT&mjZaf|K*osiAG&p}m?%RkRb?gG%@$6ou&;Lji;H^qtcbdXe@=2u1UV>zhq<{2 zf_RWUcfqI5@jP7ii;&k&3~)iiKcSixKVfxs1zr*}Qnpzh>3RPDrWVFkix#@me# zVSxhJiCB5LgyRQOlCJql+)!BO#eC23ZW>ojYY2ll630P$3uY(m9PzoT2;LEU$1N&X zda7bG1wHe9lcHXmZ9wE>G>_Yf$dylO%hQVTCv^mG{2!r*uTTtt zRU-NaQq)YRc#`Y(P35(U z>w{tQpv4u}6^MEO<1RDd26^0y4v#9ur>^?;mj(&@RU6czlNXl+oy7`1s>JdLxh*9X zCakpZ)6)@4NEOJ9txj3w+>eSskgb|s?(fPizME-{#V(K%NL zZ-^Cgi|V}8P-|jhVR3m!%+{JaUGCmeb15(1|&%`y)zcf z6g99~*G<7tT_BuXf&?DyohOKphlbWQV>YoggXPs{cbYikJzl*7w{X?mK=8u4Bx{nc zjCElGy-l2T2Vg=R6I93(P)3z!YcOWSWqhP`zX6k`Lu2ZwhkI5R|JjjhbZzzHN0Cx1M0TNW|H;S9UU;GQnI!%m3 z+{TLEo%XI&HMqP#zG>%R+kJ_vMA&^o_$H0uN~m}l{xL|je+-@bO@o2P)-SWhtK_ws zbJIHb+B-fM^ zgjC+5yg~JXG+y{Zs&5hbquJ8H*m*VuvUpo_qtBLvHF`#< zZvo-jWhj3_i*Z|7j_Fjv|AFXXkYPtZzQ{Wdax1DDw);~QrUffM^co=-(2--w5F+;! z(ti21DlbMLQ4}p%pY@C{!^$LXaZG>9PCPaAlL@Gf03Cldfp9~47qijZQ`Pc7ZIYK? z=_6-zOKY=xav#eTdmo$b2NWW?!G^6T#$>v9PzV>rDv(!Er!VXCF65I1C zr>=XdT*!}{WGOH+r)kLPTQ4EVzDwl(Mfmc& zA7)+#{*;%zddlA1(B9~d9p_~zzruf;x+^_^bnr^7k(7K`tj|@)J9E^NkyvIQw8LJssq?)FX;Z= zXzwnA<*f`S%fr19SMWA@2rj(;JG^)=Zo=`M1IC|Ya^zz2CzHDCGTUQgV}Z{TAbiHA ze?36eA?)kW28G?yRVaG8yRnlO`($=T^7%`t-G=i@YIWva8r@F~!=#>sGFrs(-~vGY zRtv=ox%D=Gk4Fs&NTsodIE81l^=A`;0^9$ps$bI&O4-o9d`04Q1OMt-f{Zj zYV;YQjTC)$wUJ8Dajd2zl>>e3<+DMvxja*H%j~1bVymCOR2q4TvII@@SX@|&X3lb3 zXuSQn@q$Y@n@|ZJbkznND-ZDx-Cns#4#g48eW^UfwOuD(yf>s`DTu0-RUH12Nw_3hWOkYEnS0@IsP0)t;R%_tjVN-ixXJ4AX zG9OaC^a1k;<)JXYnt7_%Y5PXhDVSE}j31xzFLwBQD8_K&L=;vBCB=Za_h;5s2uW!2 z55%=P*o<8HyvPLc__KXS`&-GC*zxDf!c1kdA0Z>cDIQj!(Q@`2uwqnLi%48`F<<)w ziHCP{a(In67jGvmUL8@YP4`1I8Z*dJy3!{HU;ky@b+-KIE}8BR1eDoOl(1bRw;${f zH&A~|gjshy9z10)fC^L*)m3JbH3d>{jXk`y&cPL(eW!q0#l8DiPxbUc43t-e0wbzB zUDfWjmZQ)+laaz3Xwak^@ixu#PRS?}wX8=-+Q^3eNlNu3aIfGbrX56d;lx42nGy`s zX_qFr01$j}R6U7a9iR0M?t}&!P0miWwe__!y?GLOwz-fAkr1mT_{R<;Fyj4R!u|hK z|5N;`-qRz{66Hx%@{-UeSg#!(tGc3lF7Ln8E5BLG)Ka*9&O)0n=E?QzjQ=p1{0dd~ zrwIe$d;$_UV6MeqH$gqdBBO+Ba_q_DU)}cND>nV<1!I=@s@&bV?741ovmfiRQG8$K zhB*KbXjk1)fDQ3B)&&)jP+(!EsWc*z`eN`9U~{?`TVB|RF#NJ`3x&Bc2BVnUO^f`T z`~E;!UIH_e$8XH%7ql5L{!>XldH%wNi*vo9o@007QYeUEhJ=0v`@*!JIk|rnPLk@Z zj_ic~fefFlb`faJkw3oz5lUeFg`>dR6HNV5b+I%t`|{(WW*-^}T)63>kGcI@>4v-&qrXY18nb zo0_lWlg4d=C(!-`Gl~LZjI+erC#t|IiS_{dv|_-zXe#$0N8su6_9hJqGn4W5g*z!d z=JeSgMqN%2S-9sUu%N6B@vEz*L~g9PIW{t8&ozAJZGkgu)JpoAOa~*;zpv$=s!dB` z8W823Kw?a!PgJgS?NWlZ-SF4J14Y(XUNt7gXBv~!)zzTW|8Hj$Dn_1M#^@nm1E<&7 zer<$H^^#xY-P!$%3A`gO#hYz(JEE8c)YG|DpQ{^wTo32|Brdw*23RXA$K8q1O7Qsl zg#%XS)2j4Ab20DHIe~L_>o0n&LuF0<2iJ_V*9Dnzm)I!Q|3EmpoF~9+I78Ir2w6w* z&HYpwOOhO}^()G}%`GB+Et=QW-J^|aU7oQQwZOYFJ9xkjBvnL*(s{nMe(vZssd%h* zC}iU^AC(D#NFH;4uq0zJjBZ>KMewpYUMcf96IiyaWjf z2|}YNkT!ef>uF?Qrm<#Jxq{@`=9sjAJDy6cPTdbJmxyt(o7*i@Tx_Ax|K{lu)CcYp zW~;}zZp$;&+ZA(S1HhVd6{Gwuy-1t8*ozOR^2H#yQfkPL&(BBlKjDJ^w7adfXirssxHEGXsuWpnu zm>g1{Wz)I0>C4!DVKVm>4UQTQC0qquJiGELga8)zZheBwWZpxd!JVqn{pJ;sq<+bj z#S4a}9|*o;C%(kxf0i2(i8%^`1_Zv}D3VlWM;n{d}n}-n{{JWka-ex{bimVPt*y+A=8~ z-9=6x{a1uj5V?T`Il(T?D`HBp>Tf(qa;W0*lGy7*naeSDUscTCSvbu~`rb-Nef6So zMBH;X)ZF)3OKm@gu!KiQh*c~BL@zxsGI!8O=jH#0w>J-m`hWk$#}Z|ieH}t7B4n2# z38}PN(orS%z%MGWI29%`P+cof$EPnR)eldVfFX{LcA)KiBV^ zKYr)@@xI<&U72}$F86&u?)z~+?q3Y^38%ORb_4i=+E(gM|HZ?Od#yQc#hMGd_#F9= zv~T;gMkgi}6jcvFhM1oq8m_?uMbp+v{usaw(k7OdAm_hn*QF2i-e*Y^sclu`14>>m z{fphU{a4_o;A>9Q@&X~veFNyLg`ig@dn?|LP?DX(9LPJSE1J4m-=KPP@4fh*+@qz_ zEgXT(n8OS!pt~0Zf^4qe*!fv}1%ecfTYoqX;_zb4C6Fe`zr#lTxU21Pg7%ZlS%)YU zi=66V1Wi<(do&^ggcegT*gn2l$DwiN>n&x^InInMAQ7FGhpiXKaCjQTZs~yWA*Ek$ z-7Ux{%(~li>V$Cn-L-_Rm+ABo&_e)$(C+Z=h{$(%FxDFmo?6>OY~u?cLfbtE#(MJ? z1CVOKWC5FjAWVG6f~nqKV5&DK$n>wv>`p`mQ@yombReIl(jj0kH zVvs-!QePehy&Y%3sln6{w4aYSn`}TWnjd=?^`zj#xO3ct`dYaP>%4Q;);O zNCrz(A&ZN_$0Cj#f$P;$moHpBdytsU9^FE>9%#-tGAIdm0i`5?VU$L_3qC&^yq^#;9OHIvOwVQvzo3VX zV`183RIW!_x6;ponfyFOt)@i@ML^3_Im|9t4=|0vKjX`>>);20QyBqH#TqPf;oE=f zte>hq!f+wG*Yk7fMxp&Cr4YRH?{8H&z5ZgAWY;;=BP{A)cYEaR^Ups5FIl)EUt-DE zY_^3UA?zRo@+I#{Z}~qLAV^ublHiqJIuyp`K3l5{SKIV~#pCR6csqOcTwDa)Th=@w73SLAAE z5^6;mT(l_iAJZDz#H1BN;YQB&(nq(8UG=O}lCE-CCZa0?A_WiMC?cKaJFSK6TET<^ zqk0Y)qA|cyqYKZ1bmH^=Y3lXqnyP5ue$w4ko1%kF zCnPF9vMAr5QrM89K4(4yazA~L7`ZcM(sJ|Y0R*3V%17rr0sDlzPhP#!NN-9!BM{a9 zV4X*>6Pxh}$}rvsZjJ<5j2WVe*vK@1(Y7qWuc(3M>)rG+Y%e29dEOiSkyMj1`_5y! zQ#jN$IQ8@B`D6Y?dPaiR=ji7!jRfAmFwX+r#`5t)P=Bv`_myV1$M41zFRLoLG@#q2 zFTLWzteRd73pL&01CgU{Bd8jj#y&hUzoALot4n-y^{Rc;i2Wxc||Q+b)X zBFr*PlmZ9P6^w4tzJPN*LC+7*{s`iJ( zQ{%Gys$2ex9i?58qu0EzDurt7t9lSyPE2bfxZ%Q(MZFAva{f3VJx{8O1(uIbtw>%^ zp46MJC`+2)n7&&U%aUQqlSfEpi&(hM4VD6OG|3IGp*kG|{Zg&hZW4HUs#XL$G@OlH zxOIhvdF)>Zl4X)8iMWdo!^$8C=5*oo@eo;!BUNAUHtMCUsFp%3M3(l_iAS`+@2 zrT@o+{hKU(6Q&1AK8JWpD6MF+s`kcTqeY$^^toYKINhyAicB{J-{`I264X{~DxoHJKdvc6`i(n# zurHwVcwxp6`w*_@ET#%(-%%_k)hbCisc}bhZDvA5&zzNwyxYs88Ff}?LUdNIea`aU zuF%F0*-Ypz`(>lO&)G~MnvQz4jO&$@q*@yy_bb%NUD9b+l-oi%;Rb-E&lF4c6x1Hq`4K4y;8nGiG*5yf;jukE&O?~U%MHy4YdAW z*n`~+nRh=7^9l`scjy&{IBl2$x2I%p5~He5IY!(7ZQ)K0qe%mpF|FhAtkCOP7u^N{K%7ON^cMhxo+3 zY*TNd4d`PL-&HFNy?_>@HB-bKDJe5s(GPje>@x}rR~{OU2Ck(0>nE9f8Evc2h;seo zs`z}5KcR%5Aw--ASk9iTF>9(7OS?AU*OBMzB{NHS!1L2X*2-5P`cNHleN|PQ5yGlD zymR|MScQz2%(t~%n0kL8bk4BPl&9rQ+HftkkZYiXiLcX@#bsaJE+1%F0+Roe)`y-i z-|q+?Eyg?pi}M3Hj+fQyp9Aq%X%bVsW-Z?+;YU%co4es|E=xrpGnC_o+R0r zTH9v=%6+0b*pQ;&Rw%|3whc1%aPlSma7ClR?7I(0#@UeTL!H#V81IA7mxS1|WqmCAj4+Df!fWH_)uQ=9&s2rW4U566uXJ zRx4%a2?(FSi6>@F&M|`)KuN3_hAF-LZ)DV}m#Fc;R0Pq0{kmD63!rsUH)kTiX_ryM zIE!Da%gQtyd-BK+vgN?H)9-u*-EMyPP(1p@vQk=80}Pjwo2^MB&9&OFV!CBTP=a8< zsR-fO#?w~?)2WB1qb3s{1 zCTBHK+G5QV6D{);y<1HD*mG?qc=kcADw|u-UJzC&R!zDyBfJS4rf>Os{|UOX3cb<; zA|5{e?PNzN@7<_6l>Rtxv_18ZOWbLP-$NmvITe$mYmmo5OD}f14LXb+%&34;O-&?l z57SUC_3HPUD>eXx?-rTCg%g>a~po8bQ%6j?3KtU7Caao=IS~#Z^5yP0e@~ z5k{}wiVZ{XGIY)zTrvIMyP|k70IY06;Ty*pAkwan+l5Ah{cs*gl3~D%$LuRl&iOqJWGY(l(`uIT-ewmC-vBkM<&_XWA;dX%grDc7&B%A;kz$SX&%``KOMJ`8!~ZOuXZ z+(D5=ojk>40+V>&?h4Bch^+q0hV~jCW5xmW)J1(?y- zwkojECwncekI7fJj_tk4Uvbd{4vH%&#(S~deH1p(->L(kEz;rlB9a$z3lU1q3wYo` z!ovdn_f*9E(6kf~oiLI5kb3&24a=)2<>d5@@4#tr+kvH(OrYq}E7*;QosbiDkZc@X z1KV@dm`m-Q}BgimNgf3(Bpip}7gv%29G-Ip`)S2htm0&)(}fr1W*% z=@HJgWj~VmJr~{?j6H+>62M6BswdEej-#0J5h2Fc`w%4H&RCbVRjgla5~UZ9H6F2~ z1~{gCiuPj{l6tvvwV_Dd(7}l_lwW&;b48FY226Q2nsb846&U}0&FTwzRR|EPKUgXk z$J~^UI5EF4^QBe%$Q5RD%U+HeknEtT|3?JR-KXuP(!NQMT72%*nbhtYlPWua6SiLi*3E0OA!9s#&3gBi@ue+s&B2G4DD0*%00WG5NC4rf*}kB4|n(vYB<+_ z18V;l{%?ev+NFW!QGL_SMNTTmtT0aae#$#hP%)hI?bWY)$c|85w`&wo$rkVQiXV=@&P3;eK_^ber@HqV~s$_Mb2(cmm!LW&cALT zQV%+U(!1X#7%~Qkh8A4_#0;Go{R=x?0K=MqXR)k8CQ$PSN(6Fp}T`9fCL*nqVy3WS%|4H2?R4F6$!qiJLq6-sxBA zvGc`;y$d4P^uEW2YVr>YU*POSmgX!Ak@3_VicZEPTy%8N-{5yfWtrD+(HXhN&q`i6 z1Smud1$fJ`{SmMdZxthhR@)n7iwSrWuT(QtaA~9^>%)1qf}@);L$ehQX)m6?Z>qd? zS96*qz^8{V0@*1ET0i|JLx!2D-El&y71F8b-t_tuOBuHC@C`VWAjjbss;dz;iqUnM z($j0CdC)OvHd@V;3O^UkZc?NMs==Ib9J%H(n40+j>w7)$qP1+to6New8BT^s9%OU5 z2}|Ye`wQF1@M^@~TH7{2g#n?{dE$;UFARI;At)N6Tj{5OqBcel(Wa_7ra6jrzd z&0og#@}T!bV1e5}VXt4Anoeor=a!fEv(uFIczg$HKY-s3Fw<5>$tomVtdEh(6dXRf z@QwLRrOO?4BOvg`?>8!?f(Cgm?jG_Xa*3f@0VLu|F4>71LNUseAuGop-OTWn_h^ny zwX;n!;IF>i6{SnMe{%Xs`y_#n;Dg^bg2!N~$F5;DoPj|36l7B}fn$Oa#KvHN3EU0H zwt>fRqk|AXvN_mgH1}F2g6fla{wP_^fQdPv)g{U%gLFu0eUZH2zNpRM(tO%#w7e% zk>ir%-OO{pL`U3KMp_TDsLYyizf;hY)2L^c7BKfCu!CkVfWF+IELZYY%Q3I55wzFQ z<~+wS$M2uc>psmqu3AY-VdsgRIzY%I#^ctVYUQy*&7ZIfXH#}(Pvt=82QPxO^z}dB z$&X&(!~>=Zk`4oH9VCiVVA!N=@x)3H-eGN{i?8*8cB~jXn_OI0NeYL3($#C>H@~w^ z-Pz%X_N|a`!>GoQ)@Zyjdtmxp^L06|hY`?}{r>D}(dH+^k{#@dr#gj;ugZP-Xv3vK zv6-}Cys!}lcF1-Ke64nHCD;@Y!X$sB*f68gkUP$L9p}2P}X+K%jbpiJZLp z%`+X{!u_JOPrY!;iu3CJMz)qFS-t^1xv;haRcoQ}GUW#1h@Phz&6TV4NhMsz@A$G_AWQc*cwR{c$g5D)b7&B-0 zKtB0Qg*rJT&A58qKD|Hxt?&^G`H~im%rfnpfkfz34Hl~3g6|yt#J2vRg~$zrz$vs= zCo4#q7Gs@(y1n1QL*RFZI~z*h()sSS<1XY6hCD2xj|PX~Mf@O4b%*bz={AdDS*uTu z%RN~YUXslG?5r+u#7%I({=M5X)@hlL{mA5a1e+JAY3~EL4l|G<+D8#mCqAKH#@!(@KG!Bt{! zAo!s!W59wa9B1$k-smqq{msL#!0V#F_3xhCBWmcOsatUZ#U>Z8ur6yly!;D8_<_I& z7!D9LQ@g=+)WB{;UIl}utqHWlTgx48e%jSIp)3!1|G0D+v5SfOIN9?GDs5%KY=sM6 zztCcoya|gHB{JT*zZ4vE+!b-0kFMcK}BSf`LR*IepeolNuV?HT+a zk#<0gk+c?tqe_$myvYH$0*etfc#m4K9+Y43%^l*|-sSfmt0=V(g3UahU^~b#5lk&8 zwSrlYNY>6`8|j5sui<5VY#2W+M~;sS?ro$6`n6nNbH>py!Ie^Lvs5v#0Ag~ zU`%Q4GNvAszU6;Pn6Ssz8-Srrw64D}7Io~lGcpJFB{K|!o&;93mIoO#3l4@Y$k?rH z*~ii8mDDT6H$^-Lk7j)To^8`nX2OMdZNLOS`VXb=4Zx&B_vzc&u;7wwHZ7>IS}}0@ zmu$&)v8v~&F`qt4b$BP$%gr2&B82}Ug@qaln95OsvTOr_Jc|n>YocynFako zZd^vJKLJ2sUHh@!Gr}GINQ?;WGQ6qga`QJo!jtT9iQf9m>A=xqG?GQVL4sZDh*ok@2SS7|3?qa<4#4_TX)mJVm*AZgiC6^a* zLJZT}7)j?+vGPYNZ<>GK))%z$Y%BaJzh{su|4bUYs~^^|Y)6Jdhc5gfi$N_}e_@rL zumFY%KTX*VbV^8o%dfQd7p9W8v5Ja@a{?R1|HMGF^xJI8L|25Zf05IIov7RDfg~Mx zmEhjSY9Qek@&j|*XO{5#3{!xahnNAJu#yDk(=<>ta_;8*-2rl#0HFR3O^AAv9RE<} zEPvN>|Hf)u{!n0yRZ0Kxsy07fgLS1{#bOgm2jGOM@a&wKg*}aP?jMom&p?63sp&7P+}8$b}k&s%$&q7y3ZzIuVd5 zhFBZ_!mOs=^7Z~7?lEBfPoK{pMIgPCL@t*E6$CmWUW18MNLK<0qPz+=IUfTz5nf?`URvM|j-ew=0EFH9EU4S$L) z@u|F#6}Z$ybm_;->+W;+@;dq}S6q*0QrnP4zh&8-Q${6)h5}bsmc~i3Ye`3jKU5dD zVixCiOgk!3aVPTcTVfVbiL9%xb?obwY{|%1g#Q(5C!bi+l0cVtMxX8dNbC9J>@lw6 zrHWuEK)#ulEV2%jf(kH`&W53zm5Z!XodmaFeyT7sK2sdax;O%&#MmT~P9lGl=!AFe zFGT-~Kdx7_IO-FW4U6n%S!vwPY zf8*nk75w#t;lXBszy~ekN9eMZiU<6QOUhDLEiX)Yyf|G@RHV;RWI6Yd*OdXHi_l2) zKHATz$Nc*OQ7t@v9qYEeGACQS%roex@dv`y9;@BAVLM1TNFaSitfO%Ph^5rmAb_Pm zTE`7@L+3%;0yA#M4oYb@frEe!EW#%t3{lb*lh!DEoN}>r5S@}~tzu~9leyS9QATx-O*h%3$XDVGzm&o3pH~;xiw~ZbF|sj3x##ne&5*$KX5!+xN^C&y}lV^ zfvpGO>NMT>;9uC779jlkr!<1X+6*^=c%}+0z zsI>O?;d%A}Ce0J_yF&UwsPUVBwT~lreHA;ArbOv$9URvf+;Cbt;lnsw9ei+O)WTP8 z>gO$3+_bBrt6uwb(nDibaIZ0ZP^YnutQz@aLXZwYT76H=c-}*wbD!>A9g#B``tc$6 zM(4ndo_Nf2K+Mo2c!A3xkvvsMP)^tc+U}IRFXedt2=*1u5x#)qnOE+Hx-wh@9(3?F zM=c{w$2f{FR;=ul>tk_T`ozPns2|i}R9qg)lmxdYD%wp{H zvhgwCB!_`d0w7=kjL$}F8z)2}Rz0yh-roSN?lZ`I7~iI)fHRS%?IYt_MsmWn*T7>a z`Dium-0GUs;dCNw)L?9mg#x|E|}BNU@@?jPeAnF0&r20%+~rD*cNd_ z%9Qz}t0h4MC+sCzlNKdOd3`CYG4K9>^?j2+I@`Wqe10d@pJx+Y=>3O_{{i~0gHfkQ z6WCCze*7ZAiMA7E#fPe_y@|R>O6G>#?BjMuPrE$-w`lkwfj}M2mCW4=9qX^Q@O$t1 z$Za4;zcPK)nsCfXHEt`~qBNX+rbv(d&8}J|!5uLK@_)+}pFF>%J=u8uwBPSgc=bp` z);%9(dsCj9r{%m)e$O{qy!s#`OLhs=vd*G!f;YPAyK%4e1NjaFCgB7ni*gZyJ&qktX$(r z-d^sNqeU)7=UU}8XugFYfO~M^FAN`r*ib+QflPxicrEkQb^tnf|EsidLSEifk;LT~ z@dr8qUXd>$1%@t|gwu|wFV9WX+^3)UO35D-8vfC3bu{(W10&V%_s&>8yV~+N)D&+6 z_-B_Hs?3k2ah}LMfuShlGTh#KHyXv$}n(xVdu0^c7~yCtQ%XK57wBQUBu>jkvX-qw1swx1dE5I3AkBqhZ3 zO&ERi1A^D?n)v90gCV;7{Hask^BJb=?6;lYwWfs~mQGV9tAXed*yDSk?w1dZz^Mn- zq34UGER}h8;N;j_X1Yvo5@+&0z z^F}bqBfO4cG}42(6UZp%Q$JOA?3sDh9l3+OP4}op;iYfjAu>6@};J6n6xh!nPTzb+;Hm*zk`tfjJqfK51^%#PvA-P zfY3># zqgpt$r5M6-j5BYr4NkV@-_}Hmfpp(02p6(_FR=dC-lN7LGUc@44MOl zH8%Ri3O{#%@Lqj4|N1Hcg{u@HeMfQJ8hl#{B+)-p*nFRvyn|pRdRf^uEuY*6@?z(#GbCoM~s?MN{Mp#QFrBg;uy1>$fy=)H6ik-SBX-QP0bndgkgp<#YoVR-VYGVy_qhWtia3jJ zmVJsmCF10_?n#fhD(Hd0Ndcvt>*BREV(zKquY7n$c%jr4rRmo_XCua%B+?HeRV!h+ z%weMye4Qhc8<;WR9NND^tpw`fpP)AW$QkBE+wDLgpZ`b^eUXKv9RKjU$*9Kix>6o` zD$41*I9Q=zTV2-yf)%8J>4S3-ZX@^I(FNLv-VePGFl~8{5N$%bW}80k)vypiR9ziy zlRAARK!h=B2eL{c4mCp2Gqquy=Bw&qvGsP6Y>N z4?Qo2iTRs|oDOoW6Ip`G5Inmg5G9ybACLg0Brde)X^37JJ+-CzU%Xp9VS%_tS%ubKlt$w0q89+`=f}g6F+2K=-FBRM~3v|1WudaKmSJq zKYthj#WbUy32WWq!Ag1i6f&->zI@w#_Wg|a7BB9O#xYXHsP2Qfp~>pkRF8gy%M_)m zA*_A`Q{Xk(Qgt!gYEtW-w>h{lSE1tXL9dHT6xO_3_3$_>sR+3qcp2!agNx;9_Y+%! zV7v)vz|*CUeqTfY;L`Dh}Qxr zO4LCHm_`IA;toN?Y|=(D@Y>i?VuRe{C8^w_iWwX_+aEP`Q`lhTmeTGpmbl&e-EK9f zD_+&eX@a=Va%4Qydc^wEc!&RUs}XZ6@lSq`Xv>xLWB0rkfC$RmUsyb%2v?6EQD|P8 zOppk4F4QI}xqvydt4?+qS8klGb&zU<9dd1h@rBr88-RJtsUwCO>y=OfBGAfmgQ{V{ zsop24UfECL5rI((B7BBAnwq{pgXKYG?l+|m;^HN{Q-df!G6g8M6#)lpc&v{8EKj>L zh`2qbd!)^D+dh}KqEK9RGH>@yg+`-=X`53WNX|giwd$~I)u+Ae!APcZ>xk=T?=+Dr zCFCEk=*>kl62L!A$F@@#Hh*D-1Be|{Z!ihR2D@#v7LK5b0_%F|0_U<_OBd}>T0JrZ zV^m4TM)`HLZ+2MrufFSD9+~kTt`w|d3!&Ak3?0kGaDc0J(wGP8&NPT=kQE(RJ1|&y zAjrF56MQxOd{3%nyPi82xA#)Gav8?pf3M5D`=7Z)uaITsIdmTNRvQ8Jgk{t!!!uvZ zF1eAzmve+8Aj&9buRFXoKHwhlnCC8vw4myzP4@r5au%rFW%v)Es7RV+>__)lRyWaz z+X|Q;sr&xih(t^c7m1JhkZ16IfNb`A(5H0^S*^{N19>=*;1Ubzb_%NIism|dH~ z_{#hU=JFY#?@=z%IvcNkqj>(-T!*Wq3||5m&_bj;?r) z!hbD+l#$(^6MHTx6&lx)im2cTV7~eOv(7MJrM_jnZg85g0wPppbqWe_eJk%h_{VQZ9=l+_ zeotR9b8`gE#*Br8pr4ZES)XY_jd3?VBb($>sjIWruWXOqzbJX~Os<|HU)AYHcDu9@ z#lR(qD+P3J7_0ZA4Fm9tl5yj&^()e+toueLhd&^z_nX|SlPOr_8!K`IK z@&ynv;7Qr5kNwAo!kb2dnUxh8?-UQG2;*L{Y33@tbL-Rvf#eCoe(d!7z#OQd0=c7~ zw<~m;1DbfEvCC)wRh`;Uk97q3jp14VAQv6|3m$x87DN5I5$D?a(vefgf_#L0me<2P z^i^7T{{uhPGE-O8t1rXrV*E=f{HbwR*`ixekJmN4#&*7a9o%Onk|o+_IvXSHMOc^q zg;<)jVeTCq$L^}78mNPJG4vV$mh6G!EL(_ZEGZ9JG8m3F|Fpmh=Ima1d^nw>x_4P} za^O-9d+Q-Rzpm5LvTqZAKEf}r(OuBTn7LxMk#!?K(sV~|OU|7mgp7{ueGNPFi5R5m zpQIHQ;+xX-Cmi{nKt4s-R=;it;wg~O^8wkbuSRAd@+f0wpsfm#izPIJ*#WP1K;&w@ zoVi!<<@D1y`y=Y_K_gHuS&Vv)c7v|tu~U=t1Z_}`82Mp5eBxKvgX5n#*xjZTmlypv z+7H%Xz<3q~NAPm(FrANP@sB@Qljv0*Y9E8rrOw$-9=cGh_|zPIB$mtxvnxdNGE$=12Ie%g@JCmAumEr*4=iHIXK=%rtulQ>HxKZ9;=o-bXVR+GO;)*+rFSI6xgj+5ncTt1MnZ*-b95hevb6WN{{gkR* zA8y5zezI~rn`V+XZ!M{Mkbe-{A0&G!v=C-%tE#Wq8$$ zoTbNBgmkEy1$q_z7Kea=|aHYhGyvrJ+|d$4-wz{i;o?QLgHZ8K1Lv z+)9?UXON&NEWHafg$ZfnnDXf%2#rl|5M=iHIrSdLi4^_8&6euE7y2W6At;P{q4liY zD6W|Lj;>`*Hx4YW6>ZHK4U|;+YJ4ccv1>#WakS$#Q7=^^$cdVC#(RuYzHV1H3RD!Z zj8_3GSP%#OBJ7}Q-|ky0v!N;5j20p$FHX)fryj6ff7YeEnxM71^Vn{le_6qgthV$I znmk~CT&d^zvjmhG1| znZV;=e4I>u_s;8EaBW`JqCik?oJtwA!nbUkc$0kBS_MUZ2N z!9O6|EO(Im>fn2QAaM_45s-d*dW3RIEZwh7D>xS?m1&E5MVz^&p)V!I?k&CvI-I5m zw1>pyiNCOu<-qQR<>4WY(ZsRO0At zlE1IGSrYx}4Sg<^F_qn}AjJRN6$JePM-9MYHyoha-)lfS9pAn71R;cBMQbo$Oj05n znI{{~X;(iq^p4rIr5|4Z+D2s*t!W04uyip^lsWjAj<>l22$ZAfhBe0av`m%nyh%KP|aB5jY};jxE#cv)VUMtJsrm52pFJ2d+d`x!DW*qJ-ICZd# z{d=#_3k`vQvPOjblQH|G^IAyL!DcMkE@4~C*&1rpf$vCN;B3W?;K=9kJ8ZNrh+YGl zcT#rDNxMNBJ7k3E_$C(qkQaV_03(ESNLZ#nM&n;xeXW+yw~=v+SXuJbnEWUmdf@f{ zG6d)TJ3}x9be_FtzCp~}f~_U{0sGZF=ts8*v>?G72*ZBW+7$SizK8hmoqO>k9p~e8 zzN;DE4E?1hJq91wxMlcEvqYxqXRrtoBw^}30d;j(|I;-E4?QPd;QT@O&r9A4Xo)kU zx*>-~EnhcveE3Pe*!%mT{YH`5ae_{B8F!>m?71p&->8a>M+_ElunENVNL&bkstsp$ zTwo)V0U=W41}6o_+yZH(R+Y_?38QiTuQacTN@MtIHd6VQ*ahTp2sc&%uGTYJYdWXj zrH`NG`!`r|-t&)50{{ESeBXE{HdPxF&ThCh z{$~R1=o}*n6+xs*;r_x-UEur-9QvMz%*=!7dYyUr(-NU;!Sd8Xo6B8imayI^VPFoo z>Q=bzX|29q`82yrsVW5=-rB=!YTTbIUU~KijPl$Pm0KCHGfLsyX6zb)LkPwz_;M65 z0u1DisfUSZX~AV+XSA&~AL2wl{Yjqvru$Lw4}YyuW6I{#N3Rv!sNn_Xs{=Ht2@YCe zy7yq%%(_!U&-|(2ckkBwc-^L-k6WbP9J{jp_-qhxRvdQoU=Ga#=$tiG19%M}AF;rf zW+Ig?nzsvBol!Q*XDBE6OD+B&r3NbC$7W4urE@;jPigO5rMObPX*Tq8fZDp6HYu~e z)qy1(%_KaHefjI0iGl&k=zK?0}&$qLohN&0a*MRQtHlaUM=TPY`OVNdtq5m zvF+F~_wgBY_2!sHe6`&?3TWcEpw*aZH+uS7cKV!tdxn&ODeQGV${H*`vc*z7Jr0K-m8!Sp-TXLs+Gm_yr2n4L^!8x^pQo*~u@-*`UutQ|%pZ zt)+Y7`_zN>*0*3Q5iX;qLo*n6nju92h+x8-)p=yp>mJpHf0mjb=(|W!Ow(MT{tHU# z(pboOEe5D)v@RJ^aei<<`6rO;`Gry&P;TW@NOwQi_(`wLC{}Vu4MaQyYCLGq+Yfa> zYNh1X=rwJXl}BFKGHbW@BLzVI+NSNc>Y^|~@sLuHrU_4WWdd*<ZAmQa0jWPHQ`x0Hnh~M#?@-T zPoU$LU!GE^RFp|uxbrO+nF#*~Fdv%J_bLLId-4_RwsBV!ZVSZFea_kUh(&9RjI9O) zUAzFhVE|(`(3LeV%|0YhiJ!zA6d!h$(XMIPr z0LmGBfN(92zDgppnSWgBZs{=#^2Pf3-{g&b;V|Q8Th~HjsaMcDShET`f{-z|B77Zy zvYE%ynvJ!{#~o8^j#~>?q;755MqH?@_lvkeKt339 zk|}&0*wx{D^62-|=v4p2`y`j5Yfq}!S9v(nmj8eoC_po#p8-*iz#5P9VmgMP$nWdz zUEr8a7-`_`EEe(SS$tc3ov;6qLBcz4^MOF#y7=XCv z0v@tZkt==_HmXz^Z3RDyK1ue;nnX%DrNr3Qko(3gU~l+bpEp0)Z}k0`bciKFMQ6tC zdLxyW(z+b3`+y!M_ySpYtR*MLK?DM zoskjQ0;fx9BbbMiY7GD3{VVs7=a{>#Q0FSHuWY( z(|kGoXu1u%7C&L%g99_&jC>CNq9Z}8Gck$w{>uIr1ok_?^MMX95n z{oW(1+6Y9_)nSL^&@0b}6hlrHBO8e$t$;K=rOb?f)CHxTyZ#$IIKUN29t2Iyfu8W4 zGaD?MoGT|NoYeglKr-QzkvA#MsYzBnV!k;K8TiQh*-HAf?*W|JqLQY{Eq(5-C+*7G z03Lw#OF->l%rEbwE>ce~z{y6k3#tnswjW~KItj=Y{NEArL_vZJoOVrCMOKb{u()t3 z58aOaMDw?PnSc8$Y#+}_!%y9ey3p?-S{yF+GOhCnnsPfFtE@|gpCIP4v@`l0QW)| zEbi66aN#^oqE-=GZ;YJGiRvsMoj^MGn{UJfeWLkTzbxIJ<=lV#09Z#M33JON|9)MO zd_pf!kwA$-9V44v(FMkA^O}KP&Zpv?Pxskt>b%pgHQ|@CR?Y8@taFJAzgZQc7Ea*( zUr{z!YgN!z;IJRHQxuxKKLv6+46H$;a$kR;4UhhK6xy66K|zDaGw+xEJJdQeJR{LN;3r! zHrX7t4NgUX0Mvz;he3-&Jw=@%GDQ-LG&23P;Gz4h%-7wpp1PuI6L0N7eIph%a#b}_ zT1Q_xUS$}>5ZFK!+8{d{L9pDRruFLy*KQkCbv z+DgIq@;I^kIgY&%x{TLLoQbFq;>D9QYFt90n!K#Z(?HFg#WX*#*EDt0OwPSg-51|b| z4hL#ANZvn}iyX63O>%)bOs6_XWRN*HtmI&vH?HHZE785d#eUCl20P@r1xRb@FtP>s zhBh>totx;m+C4rtwKP$Ff|gx37QiYmTm(YYm}e0y{IDR(78` zmx-MbfWxuNxBtS1AAW}IR6%ehvJez(bOS8@D}lxgRwmC)S~Q}7G*9)n%oj%)Hl&ps zip8~k_(`cr-#D_3?D=+%tC1xNxpH~%*>40-?5;eCm+@h+5uHn*{r~PAwqJ;e0c?pf zQwW5<_0(*zQ6lr1$I0+|TnM5>t>*1gy6EdHv{K()d*s4u?81=}n5LDwVwb#0zLo#| zulmi8ozcK>?E(9lEVL`_a<7Z2Kk^UFvY0^1Kx|l}-GP>f9f5&Ez9Vu$dT4Ht$xs}k zZPh1_&Lg=>tImE9l&7D%6e>LWO+$6?;7Q@tn-0&sn=M@#6OR9m5z2y?SVyuT=K5OTG?f@2^gP%X@Cen28092o zze)2SFxDpXKYQ!+(ppqzp9Iebqf1#FmqQCjA2t9@r&!yJq|g;1bEZhlKne59tF2us)3WcgG}@3`R2i z_}+PQHV%_QdAW#YAwu`_jV<3s&eU^>e<|;+lJei%jMY!sk*C{YzpLzW-Rb+(q3Ei& z{CR^Aw>(+!C7ajeCi|3c?_?c#ch1)n=`M^j%*-;>@ZcGWSo6ck=34dvw+fs^f{mI_ z;qRhF>W}#NmuFKA(`NSAC?19|DjQ~0U{7B>ggTI$^@xqskb_@n3BX=1IJNNuMyr^4 zl<->m<3aPeJoV9di%<1k@9=#D35F1WeOBm0-4BCZP5O+iN&XcTRXtGK3YP_6v&M<) zM9nXU&t*-^iRc;mB7gc}t#Dt&80olrAW;D-EsD`0MlFNTz5u$`@NY8%wC)(i;9LH; zfp-V?^WFPC$PVUY2|WHqtgtPn8wDy)$cDR8s!oMn><<54|NhR%ea-6;<}9^84g?M> zoEnjixB`2h=^)IsLZ%SO*SaztpUr{3;3KQ0r(RV$l$E|Ad1(R(GRc-vS}vp>kB}D3>9J!k?rB7&QOv> zU;dGJ;`cym<`tHgtZQFvz4P8=d_K=oryNbc-LgZxR8mo0@-=#OS4LgxnY7V;g@35K za-n;d(jmLNork-GIz{(7Bo$T!{7&FJTPa?hHbvJ$A7_40J-%e~3?mkaJZE5bG(QtP z(09tRp4HMB?y*`~FDHGAYm@5`+bk~|v=2wu4fJv8#yWVbOq!QioL8-gSZvuCsEcxo_qokge=+$Poh=x6pstfl&TGPm_S;f0?fJA+2espLtD;k=Bif8Q-l0bEw$n$NJ~=nW z0i*H%Sr)y#0eaYW#V^r4bQ^5F2_%O3ZhWW@tv~s4v&Q{eb;$1%sZYFxySzkAPQU0- zbwO>HhpS>vTEYqg6P_Xgog|bfZhYWQEnn#uibdqwW>9lM!FZ(`N~ZYL*LcmIYnJsH zMOiZ~mhB>BeugMFWW$A`!+_S*%9(9E6}W)pcp8XvT>l^5-aD$vuiF+5g3>{xiIk}H zCQ28Oh=n2w*ys=iY0?BlKx0C$(gg&RAVrWO(xph~ph!nbXbDYJ0tsMGP3J z{La~m)eG|r^uSZyT{W+@AMYMistz40d30CFFZ?1`OA{DDBHr1GfQjo%{zP(&6KE#* zL908yGQGY>Z4CrlchU}Bl#pLJwFo%xe(|4G;~@?E&3$2 zM}TQNnIH@zwF1S2s!qF{)nQA=#A?hxSrEwFyl`lY{np4QuIm1=LFmw(^7{c@TzP(X zG2p#Xd~API!m4Mr0xCZ+hPmld6+Lns1kJ0qFrZxWSD!a(@y|{W zpoVA(Fp;MS?@0kLsTb9VscL+%Ia3lR8{2(BrGzovx5EK=3*g z50|fh3Y~^7m28AnBAn2s6a$Sli~lv^_ke za28xY705L^sXkH-76hZGWEcfT)%h*F-`KTv*v{Ryc-NF=s>Z?I;hQAOo7kQHH4Q0R z2itsoklVxM>Ggcx0bXqRGVg{KZ(p*&EM*oS6N`W^{eG5Q`>VMsdNqyHs>z_?>M7rR z?$fFDvu;YfGN0iL_8%lQ@+}f?vfkBq2tlIZdmKv0)J-f+B{q9CZ+qURF(Jq^H}S2> ztzR5Ib1~ettF+humoWKDGM01MXhTq?7bOHeiclm$zrxBGC*pv$!M-3}BCWqPZ*Ieg7k$*fY_PlR+r* zH@-N>xT7ZZ&}1d0P%6#eM7E7`ih7oImj2rNk6fF0u-Rf)$t@SprpO)p!84;#x0Qyr z>ijQ7)EzTZHL1D@$m6FNXAyve7miv)n3I(DlRHtzC}@kcKZ8Tn_?e>c&Q17onxMla zzPbkF{S(pW@4sH5+kkr|06S9+AmvW7d_z?1oO0xvSk7>p*d=(_{9(s;mR*zfD4Az- zx^psp#k;%UZy1`Ggt-cQI8fV;tzhpsO)=&#UxXrqa~bT7RPErdZk?pY_cZmedhtt7 zK7I0Zuw-C0Q*4Qk>>i8;Gnk&bBGPYr#5zMbr3Y$!_246xAAfJEm zU8ajT$PvZw3^9Z>fF_DG-3bChvB;XD*4f~xSyF1YqZ?XQT$JNc?D~YGEW}m!?xV9u z6vxWHVmzULHPA26WEoFDmD7MAT0m#@Z~;Zc?YSR|EpJj)LA>FW=EiYvmH;^^R*SuB z9p*Qi3_4brd!DOM)fnF;Sm@=gA^}TKmN`e+=^xY!s zc$4&}xJ`$q{*K}6mVbh?2#tWUnm`I-^pr2sh1{8UB$mM-8~>LN(lBD7UhqGVbAJn4 zv+wLo@DdEd2w@s9B*y4mRe1Ib+zQq3He{vy-TEXNFbvVnaY061O&07r4Z1YCP+ z1kQ~-PO-!7MLhlo!V#=>wQ=Mzr=a5DH*HHt%uLnJDQ%cbzsi(-uQ35?G9h~erX>~T zU@P2kLZEq^-|R5X-77oL_>A+8ko$C`b?4rbCs*z7ZMt-@=72FsARG_i%KttF84APu zqdN33>rvndfpJHW4y;xpU(r~rfhOuK*?#OXie+6WfTlR1#2q(M5?N>v%91j;Bee6q zZ8vu&0fC=AHN1m{HvuGQ4E?K?3#0PDQR?|T7>2kX73h(u0X-7Ndk}Ipc71{SXFg4X zn3s)5b9p@3*Nl4C*+6cvY>!HW{5h{=e(ReF@Gh3hnFkzF(lB{xRp;7hlXdsdfJ1|Uvp6Em!U-DFh zk4)0EhuV^(Jt3)t?eFKnvx(z7jCOyIIUw(cOs_-A{ z17({3eSr{qQJXAsNE2OSmIc)NuGf>Goen0-g`?_~C+2#jJANOtEp>mP6klOJD00{8 zc5*Wca)3)K04}v+48h39;B>*Divss4U%>IY&3_7XwMCY{|Bd;!S1Ty?N0NGH1u3}K zN4O87oX>irrIQ{rE(!6sf}!UphWNgHV0rt{vDnh;k4`oj7u%ud?!tz= zk+G-_15hF82XDxnD!g=%zFmXthxdVgA5nFayukjLSKQ{RRD5!Pey+Q7EPwdMv7fKP zCJ474X|s?VGpLVf*7P?7BrE0FElNj8Rg&JhDiguA2=AMv$`5l>7RC)nZtAP7V~E)lU(1X$dKXI8L#Wq(Nm{DeHJb`e zcbZ5nNm*RZ|8dd^7l@1k#V+u5{%2WAWycRp$+zQ7NhXA*-N6Y)VFh713=X_3)^8`Cg4F*CA%U zEy4eyugko?#f9p4pnn+n2H8Hz($8KN=TZDJc4VU7l=E(V!<=8+ZSjGR26Iu`yH(9M zC$CuD60v^3HxkdV^xV$_Aag~;K3C$pPi;cR*#v~9jy)wR+r2*#*hzo+A^k?R#B`hqyL;3ww*e) zQ>pZh!Ttc=Fql{w4#vDIqnCZ~ov02^%*tA;B*;;sfcEr)Rr^yoEs_BHU4vS`1iaSw z4~E^m=%pCn;b?e`Z|v@8=AIPKoQ8UoH@Vv7t!1*>@fNM108t` z?gN^IAszhtDzVkpH=#~3(RS7QRNMCr@5~t~pQGpFmkdR7IoNKgc4>=9E~!wIe$d`z zrh+vT0}+sUt9}>@c-*zYoQy6qbpNI}1a$=}0z@JKH(8vV`;5fg(SSVtdAu;V^238n zYw0Ua?3YG$GVNc4c88ieizbCE#=t)gw^v0nR6df7qS_>^e>VRKbFFXn%uR^kJbI_5 zqDD2kLtDF_5Wn|Sjv41WyR&S*QH;mL+3F{d(%YXVC(+<;56lQW+%+@pE2>gs^aAdV zns4PuL;+d%}x9m9Ua2<huVKcA&w+P#mhrQMY!0EEjiOGy!ML3-& z6lRR^0dAZ%5^1uOC*8z_CSbwM5RDO?b> zApF>FtsG z+l4$$hvY>Gk3!N;dwoeFf zFbw@7Wr4xEVV}J9*SC-Sf9KxHGf_>J*!cBtySl3=8~qaoq~ylYKh2k*-;q4`?FMhGQnlZ z!MtlhAi{nuuv`>XPfvENkC(|i+F`SN&h+FdQ@N8V$oruoeR$bE^S{cAp!w(oxsZZu>Q zm)cqTDrubm0UwTAem%8R^4~g3>35S#XhKk&TLkTHnR}|of(q%-wAqNbsmaF%Pn(%w z88zi^K33;N6x3e4c)|Z0U9$*epvK9K6ZMIToy^wb8kMSi0W#SiW{tSU44UqI%d=0D zw-_oz-ZQx0%ceow`|rrgb0G03g57&#w`3Kk5(tY#o+23*U)V^q|81+}c(-_?h_>B} z@kxmGdb41=Db;xX%YHh8eTx)C_9bPM#P6cR7WkWq7iibBa^6H&`X&s-hH|9+ZF@Ys zbgSo52wG81ybx(ejK*96;{J=VLLxgpPQ9~}4qm~uK`#`DJzZk1O()h;zh zzbV1yJ`3g1>IJw|;n}f#s#OE>8@iFV%NN_w)vXq6N42`vG%{iO%=yD?A6MrgRT&9z z$JaOEpHuFvKn!3*-w$#z3Dk-%sfy8a9}tNyK)fi6!4(dwZG?NwdmNd1F}S z?YpZh*tu%|>#4G{%h(qo%uYn)`cF9c-a7P=@(2iNF%n^NAJjDV9J!N*2r?79pRb8I zR0nqZ*Z!^9yj&kDN>P~O+Mx);O8}m@jQ)E<{|ss>FBkmIIZ&kimpH1%=mSF|i?3aW zK@RcL36goVGK4-rO$mKHk#YWq!zhElQ*SUUZ<3%AHF%vk-HiF#VgGo#j}nHO}vDTX46gVWmjIOst$H}W4ygH~r1mKm2E z*ZSN;qo*XQF1X~zlRk&Ko5~drBR^)Ud+>c9PpyA-^ifDZbf_2^dmtl_Y>q8qv;wp; zW|)6CmkcUo;m?8VCB=fF>Q((Wef9RR1*|Tb6{omsMTSzMh!IPy9dc3>EaQZz9&3b#L{M^`D+=$rO1Nz^Cj{+23sd>+6?e z?g838e^4xd<4Oqw3;hk`L8}T{#i<^MGo+FY(tDaaAfYSKM2k0*Ere6No9kW+9GYLg z)!u)-8X_30?}Xcd54k)CFW8r1F-w|d^y&K2#S1|*6;9m80JTy@#6|GI1RelYtJW{n zI|wmKHC2uhv4kuopok;bFP`Po4~4SdIK=l(rd>_riYiVtoK!G<&mED&2=d&$jE@0x zoJ&9y;w+fs%(}=801zFVG*mFh%DHS#{rwN5EpY!iRi3hl$0WD0P@F9&Hy<=xg%?C@ zOg8(bu6%L*vbU7sA8^viRC8_4#Cz~f-{0D*IZ%9-;-zH|qUkXzm>dh%S#{995DZ%$ zW(t0`6cZT;*H1m>zNRActCyrD6>&1+S49Q0qC8i{+n3=?mHVK>WKMa4-uMpi zelvhxN30fU$hH?F>f&0R&EnCCh0`7He%d0~Jw4nWhMf+VvM7x&423|Pszxs!4t67; zm$#x|yhxT`K`0URhA9Lz#7_`SzJ3-MHrR``dI*2ZwP%~@^0jA?J^gv84S@N7IT=+@ z?7$O-(@(YK^Jc^FC_tA1c39z*amM~XkgYe*m#J3~59xVc0B3y`g_APVh2!)EezSY? zBp3dCVkhCn)g#{etYG{4!$g`%og}X_g$dxmdN*1DhU^E<`!sN|@@B|sdOi$?cDe#1 zzHN1FO|nbTFQgi;Sk0sAje3)3ewfj-Xs`;z#Zkb-=Fu3gX^1KEu*`KuL)2a8d=tJ* zXAcj(au^r_S`Np+!RC$rYh=Dr4?qEkq$ci%Orcm-20J+`lK=`LlD&LRS9O0lkg6`& zpz4zFzs~yWo}i-1?UYff-a2R#H%8Y(Z;ptliB&fX27ZM(sq%26)V|YI7=uvIb>+Zp z+#bX1CMiI6o+~og2dLWa*y6mm-o!>TEumT|QbIz@`{lWc<35S2a=%l*epE1G;e#7P z1RzHs>+%O$TYJm08+76xIeg4ZeKA&FxSk|k9J#hMH576>O<3U$Ax+Z~67ls1D~GYP z;ROyr0G;gu>@)M3v`5iLV4?7hBHH&L^`ld>*snYMr3J< zFb>A=(ROO2?Sy;7iJ@H8Ia`OwAa@sd^DmLuIo^}YCqoT^9&Fpc2UvHifE-p|7b+>S z1e1(_mIUYA(9^C@Bk@oooF8!&iHY&(SZUyrr!lzXu4I9q3@PG|uIHkrle>GWwhO0q z>r{Z!wW}mB5O@*MzxKK8|Gg*-Tom5Ln`9dm1!$f$!D33dU!mnSd(#BurZu_TP z`ys`g!tUiPdmhFM1MSKP7>C|n?DrUK>~zxngHakY;UzkiA`OB&P9^rZUR_^OR` z;ximb>iD}s6$e%1{&dAp@7&^LQT5dF7n+?LPtvseI{-6P3Th9;HOrThK^B|4Z24KJ zaT#^!r{k&b1(9}@t6$Hi53r;Zm2-uf^geYhptw+FX{UgqC7Ag`h~SiEFHW{*HroAu z?3#MB`jfn?ZorEN0WXpwrz$}kJr~oEML0*5Ux$kQ5f@$(?#!)%QZP3fpt99J`h~&Zm-3#UF8c#145K*uGnJ>pu$t!xUlezSu^xHi%!NOZ}}^ ziB5aHwlv{HUsUDHY@a}oT0Yy#k!yc8QAvO);+LVfzPClCAg~ zPLaG+O|SSP1IdsOZvE27yhom3+JCbQn=Zixb*l(G)R!c&b~y;&oU9i?{BCJ5GR(OS zaR~n?nxtx`YG(39YRU?WX13La+I9kH!1SZmgt72Q(8KI-c&pSeFUSIie@ouUTHlB&Y60zrw$05 zsN}`kt!~d@0ZIUFFWiOlyh6#N)bZz(<*%BBi;;%X#}q#)B+5AyhaI^d_C5=*nN`m$0?;5;O&0>2~wHLa#qf(jsyKBYE+PTt#Asm|sW?~h7YvVUw+!Dr4L75Yi zB3u4&Zq*o0>+-KX(W||0RieFdzUtzK%gcu{DJIK-7A894Lx@ z?%6g>2eJ>)KZDbTm^8V+CW>MU?%ZZud60xZ)o?e%;G{P9*^_)jY{Pm}pxRi2CPd+q zu{&KkZN+%Gtqm3RkivK{wl=ZEsdwnc!tGU4NyWeZ&RoXR{;VPl|KESC7;H{2_?PW6 zbWKJtdOb3xB8`55-$=h*ff5N$HX))S0|%cuX51UuZ4ue>U44A!y|0+p_Ay{>e^<{r zXSzy`UMYats3yhT5pu>6>>;eObPihxt*4D%j=BF+rvv~8UsV)ie+UCqz3nJlrS-Fu^w$zvKfs?6zLu<<%elM(c zrr=eJ#48$-c;D`ZlTkW@Z9F;*+z9JL)j{e@e^d0tnOJgpK zJJ%}}?>>L6StsSPJWDt)%ZYlxw;ptusLzrUPiQye@$6Ccy zD7Bt!sIfsg8?k8)a^<#myTF1q$@8y&_zeX(0KvSSVVdqDIS}ONw+oQ|KnN#rf@YD6 zkJ(tJYW+^Abhms0<*IYgp1o0k#j?g57yBKLG@{**N((jlHDr@~+pz_%2qfC>G;S!8 z)a8`?-sQ2rD{;R8L7W0wiZ)bU&|~@Z>mSHoH=LFMM^RYGA1LQ>Thp84OEJ+E#Ul)H zck`=j_rv{}QW4m5+dWVvGtUVa4~a$oJ+aR4*~Q z9P_$4<#|?T@;)EUQ#+JWW75c;%J}=QjUqXV}nZWE{dU5m+^$ z@TmT|;5=8o$4B;VcI^8fY!rS5)CGtoM507ci$Z9CKb9z$Np@X}V)~-%z*?wsVBX!f zTgF<#_?u6$Lt(0jxuKQO?OBCK#vN5_5*W|`#$~yWGCDC_5%RYajd3p?1?txDu3m)R znTkSUp#u6Mpo%A4x=6DgO^&50KMxQLUmt*EZ29o~?6U%o091lj%IL;pbyd-*y1w>#LH?^B zrx@a%LXQUBN`^gGuT;O&tG6a{xo{9VmyfqEVRD`_V!<-e3b)Cslv~FIVKWy%Tzgkz z0l^T>t7c}7pQYS>yCU}DFDNp&Raud?I^joX7C`3yw4*$60bN1yIv(#)+s$(G6=`*Y zGcngMtWoU2V<{^K@Rk1snm~Kx;KrQuxAA5%pO33<9{bpTenq&0=J_3Y8X-;e?Wtl* z=A>Y{o+2^%ihT;!^H(?wf9{E#3y(ZxcqfTnoSpRpC|V%v>A?CgSGUyXG+0bXwN8J_ zq>+6@YQ`A@iSB!otb{F6F0QW=75(%o7){~Udf}zvIf(TM#;2R_y5;fQJfC+YKlfNl&EAs&*EI+DE;rh6IGNFUNzL3D%Rm227(>D0ZFAlXW>s zEkOKBHDurALpn#cOsGQjt89+4(ql#)=l}MJd;Y~&jjB)-c6~5BDA()d+-=7*%#1Ft z%z%cku{(GMw!V=%NtJG%fp~MFpAF;RQon@gX%fUZj1NyM^~5r#hnkCVP#L{s?rUEc zHn9fE_1&IIw;(|JicN1H%mNY*$3h3tES5Vhn@03R9S1XKB0XzZb|`d<1@^-5T}IVFgyO;e#5RhpJl)Y_jyqyLyVoxQMzcCGGrmO9oF zqbU(tW^l{1X@3*Vjjpkw-m2MJ3#}Lu#?nyz7ba%%t?hg5g~$aJ;(CpE1w> z!u$)UMAApE{x6GgroVTo2FO`xO)E;I)ylU5!5Y)2QxDV(7d*#o4MduA^dw(vb3OWM zCHrA+?_b~p$rxWeq%R*l(Cv7f;z1nL7x_Kx+E{Z{yzU;{K=iQlnxXde19(RB<}xse ztxC4|;!7G>67%mJHP*Xa>SBM?X#aXl@pDh`D&3+D=@l9#mYU~EqBgsEE}Wa-??u3+ z7ZB}0)&GbKtm5%Fp;>~Te`Z$47!k^%KCmHl75V)7xgB05b?<$LZih$*=yr5d9yC%i zmimhm3omNKaU>!oTX^?-=_{>B^$@!!Qoto!VB0k(K;&>9R)o|s|b7M99)$zIaUMTc5Y##XnEn=Y{{;UX75wR=3#=210R4RxLfH4)q`0cK_7*Aytp z^A-sf)pi^KGmp;s=69wf;9cLtc$IsXsh>*I zT}Zm*4SJeJRqP4+F1nVce=hA=Qgzs;QYkpnY z#M4@y1!HZXEQGrvvdro2gxix^iGoGMC(UKW*%h)(7r)33JOnPolNekBjK?eR+3Yjk zL%|8RtE1hFRj!P5%U(3Lnx6Y$q^LYHiN=kz+ZYerCf|O^jzH-61H32E{>V7TaxG zbA;kbf?=Keh}#ddzP!T{uHLyccI_^c>#5rxWnVBkdw>Q^7_ z=+MI5M#}j4xNaV-s#3Apq>FG*=mmDBEXfA^?~Bkf!GvXBfuD}7M4!(~7oM8SUKvx8 z#bDA0RJ|MHHA8sX*}W9tHW3Sr%3C#@5AD4Bw5$(1JIc#^HG+GUCZX3BC~i@R7|)!LFNyx zg}6UkacRLyx+~hCelN+N$MEb^E+9`NNCo*K%a!P>l-nd3!^BLj$;!?qR<0|o+80Qv ze@9qS)U;L>q*tXdp<@}c;lH66l&zJC$Qit6%W^ka5CEf@EG zO}70QLp_9tr!l$$5C$<_C^w3WryD&(B}%{jY+BlBszkfyQHKd%>L>5+h!of%#a%mt z+D|az)h#|JcAl+c6@@E$`JW?{cX2y}i${UD$$z@^1Poj{j>=WiEuyFO1EH2PK$X{% zCo@H7$*5F&^|mv=7iDZ7!3BiDLD*9+vzbG6W!0hQO#0%km#n}ZEez~DKQBfdVSy26 zVKplB6W<%@`}I}h!x3#Kf&G~YP$3drNXW;|Audc-aF@9UH9V{~Ol^w8xySbPlK}hR zYk0}qsL)uhtqi$sR6l#XRak;kKZgXav-wZ9T|zA0wrKW%X|EbXp&H88Ry z+S-M<(lZd+r0#7g{j+r;B6m^}$hzMLo^pRHlx<@E4Dp8(sl$g*qgo_k#^Db5McNa3 zC4&dE5mQ3DK{}JH@Tden)n;tzC@0tvi1n$@~^i-Ft7F%P*`>HY+*HTIGabw zD|w58MhbI%2kQ~5lZ=xQlo8gEz$IvXGQk<|I|FUEL`ssx-)z3ufBRTj>G7-}(+`A? zzdfx~&_CpNyTrmGJQqc@d-VVn3F9fUo+-THe{YDXbB*~$-b@b!d?_71h(kMuH3%J& zm|rH-Yln-oh9TO+8vBB{s^cE0qX_6*3i`^M50AYceigs;)h)45g{xHjcsayCp(~=l zYPAqyZJ^S8AK6^u;C}?VD!livLD3WnnXSwYh+>J2{ zujlPBKSVo8G%H*l=2Ypf6z!P}6z4Vd)Qc;yUJeMzzQabYAU&FPUUL@Hgt3(Gnld<^ zIS2Rx`{w>U@7C%N3E@nUptlls^yKS*?M7&o9Y0p}UoySLV`h`dSF1@vSpncA8t2Jc znZGJKn>IOV+1M4a#=y0$Q@S$L&81mbivD6DA{ClV8{f1N9UTwG6gY}-B zfQ%B82?JC~j|GL%&6th(BhmL;;tk#xSJu57=i$vc>OYGlv&stY@02VWlv&$3Vllbi ze#Zs{UP=0&J#5A+8Ll(6-5xupQy?GY99pJovRm~_w%vG?BHC5@>u%PKhQrqPB34xd zm_8pk_Wck1Vco8}W!vfF;}j|W&WIg-{q>zdH`9M0DQ`;XPk?@#1?#RL5e!vq5zX;N zU38eiXQFTn&Eb6k;6fxmGfUcjmi@K#$!$4bW&NA6Qyjn{*6A6V@<1gFy=#Qv1Pyco zK;@!U2R(#jh6pFljn21t2z0!30m-L#9cCf!DQ!nk zqvAvr27d#Z=9B#Y`xV=~=$`?{EIG<{YU3ZsQZg`8>D)I8LtMq*&|J2RUcOvy>JF6G zxY8~w`9)dIm0qeAxn<-PvG+U#dZ5}ZQ$k8$^l*b?(nLC+cWvl%A6Xo*)Y=Xl2%H70 z7%`6Gj>}XYKxA4(fa9n-ehM)E^Lf`74&)X<>&GLRqA&%>1#VRdIaQ&RG?7wD*_O#2 z)8GADLSx!LT;`lD`g=leVYHZ~!d^cZrh;;4$8DM{)fizrPGeSysORPQrStlhC}-T6 z$zSJ-uc#iMeJFpupot5xnfy}WuK)nN>1jhid8@?hKUTfG_K>eX&naW>9UHOhg2A5y zPhyvfJy^qDmtnMsw6$w%+NF5ot5kvI0A~OkWB~(i7T&;1_)g^Sgo|rbaZ@62W?7`m z_M>-|R5S)}jeWOqvCjNFf9b0^S4ypCt#SG33~4*A z3bpBQwhJ8}z?7_u$Aw|SF!7i1{WNRB`0Y&BD^i9rW=$5~j0~DG{GWXkUuWK1J9wy} zNHE6bNE0VMTf)TB_)CH%Z;{N&+_OLTY~vRy3q)T{SBw^@yTlrCA0aM3n&TKvOv|H82?M3f3m3lS^1G1ywBU_?G6u%nzC2ZD&JH&QY!mTT}Hx?Q<*_R zuzI&%xexc!77R(qN;wmY_i}sw&6>QfmX@raPA1h8FhmnOn@yOv3eOh-RTHrjK5wNe z;*Aq;w8*($h+eyyJ|DVu5!!k%Eg8}mk8uT?gmHe#ryj!x;!|czg~L&|2@P=}Y{=@# z!-wCbq=!OQ$dza`ayC#C__DS{(#cA~vz$>#pC?<}6F$9WYQG%-#{UZ= zVHg~O)bmGIQRx|W$yHq&zJWoWVqZ{TR9qXqz#ZO!sTs;0P6UW;A1Ir0t;iEGu%0>E0{z6 zR+c_;jIUpujJ|wPe6eSXB3H68k0Pmc`!{aj3n+xBS;GaXiHb@|^i9PmHNmtak9Zcd zLgpKNF1;?@2fANdR9o6<%KZCaV48i1;_XJPvTcY9G1Cp?~;9 z#v>l7TP7n9E!rG#nmhwpGN&vYZwP$+7A2u&bt>cKHrvT??&m*2B6_pBDV>~2 zidq6+WNNTsaM35W>+V}2?l(;z9}Yjy{GM$gIuv#nVL&}cJ4te_52^4(akfIse@&%{ z`1n>m*7b1B9<~g6Af4Q#F&@l|PmW*+{oE4*q@;#Kyq#h;;%DWqCtKw)o3lsOtS1gV z0zTXya{k>D-k!H3TT#@i9%enwEG8Cq1no!7RbJ@%J{0CDRny<6w9%sq<|uAFMnZ|G za3p)M`7M1Yk&%w0ADVeEaRxuSactpKz3R3=oZ)i)vqNTzRUgckzPC1_I1p|ue68aq z1q%g6Co;R5c^V`ma^R21;fQpC&S2%J)@e~^u{5P$>u7C7u0=VA z_TJ#t0NTE4o!8wk%iG~>9Y-*RC|oA?#-FW?KU5peXS#8Ni!rAf8n>5RcZ!8_GM%sU zX16{5YXsBTkB4MAf*@EZuHhrIG(GPl1mq&V#ngQ{S_S48|JZ%>W@MgyDDn95Aw!N@ z6zuLkD3`FPRW~IKEMHi*``VChQrIQlb&9Vg|MQu*&Bxx3q?~7(x&Ue>CAU;#ZdEYL zA3ymb!W8ULbpSujJ2>AL<@iSGvu4^HZ|P@9)G2*4Gm#xwS!=96-^x$bqR9am>2P|u zOM-{^r)dAhq^)v%kC=P@ms7@t5Fcmsd%dY3M-{4v?cj5&49zxtLF9}qihCg{Nm}U} zqHu(#j)?^7BprTwI^y97+3zB19p0{IjrT+DlHE4asds}>C`hDaN} zyR(I@9db<3QV`Z#FDg@xs2Ye_?Igf!z%h1(YV($krg^HT^rzlfvOH(}_0lJyk?=cv z9n0|$I^V%G`UmK;TMwNXC)Ft1#1VT3@4+^S| zH$d6p7YwNEn}aA18YW%IvC!&;&!jRS>ek}RW!+7-ZHNf+kx6k7GH&}CJaf8#{0cLD zz9xLu*aiM$3}e_P^iyjL)gjDKB-DQL)$P7H*Ax3{D^BGxVOvG4?61E|470P_+k6fT zk%*e9WhC-<0!A0_eK6ivzi&rXrCleo66C2m>-$;JG!5T(6vMTd-6oovpKJKSNdAm; zLwlQDFYBcv9H}WhcTn1Qsqew(5nG=#OV%2VqB%u8NN!GT;sIakx;yg% z?EgqhN`bS(F+C=#24kpssCWs+ZTC>(XkER7DlgaU%-hE11x+K*)r{%XyvWqhe4?2E z^)3Re@34P;-fyz{_ityv$R$`-r(HggIbCo`OYE_TBpQ^xMNwTHpoTZRuWkC4B; z7Kba5iGYm0Lmxt#?kj?Eg6{yG+!&5@Q|IF%UH8rHUWRZ)&xykm#GgWKqMi?eeWhL8jALEoV&C&OSl?r5 zXG!7xJoPWU38Jiv`9YL5700|#mdZ{w;d@{E+2Y$X?r-J)4zp*$m-qjDoWHF);juZq zJyp?pq9jyQcS8O{vWcIY*vMa%6V4KLvR4%hZigEUbV#!N136ny=V!EQ*4i+77df0h zMH@>q`nhYaDm)s~mG9UvV0ju2`i3WZNHO89FcPZ)`U=S~ri7AU_$H%x{Ez9Krm(Lc zU8Kd18lU9rW3l`$z_c>L_yT1C1!C*AqroT6JKyX74T>~(B2o;t_ovFsDjt@V3EsIU zcO3Hcc4_{hHb;6J#=|@s0}4xBZzN`ypb_^d(Sg4kgd{|p8FS#Sh z9Nyjk>G<5hA8sTV>FV&W@Od!C;9gK}t@IGUw%)R5kx>t_Q;oOFS2~ElS^yrxM!*+V z0IzjLSN_~HBHtWQ$8&f4Kd%`Y>nMrf;>|uz)mfbqVfNozi8&p^63lZde(=7*32TfjBpvq1XPEGdIA+X(?>QI z7P1mr8}7O_YyY=e^{;B~1uecdqpypSv=VgcXKsi+agioqPWBq7T`iu6&RAU>V-db- zN`LF(ac>7pc!Zdq+W4Ji@5AiB5(d2W%J#P+Tlq-jyRi%?u()*QJRyW)9Ij`T$1xK%h3=P zi3z5mpQsv4#~a?;brX-bA{m_3n7RzN#^%NmX+VCZ7yvVtH!y{(vgFy-3KV zJ`aYIbz6yyjOY3A;6nJMq-RD={Y$&P!!>Db&R@S8C@nMHkr0ei+}_+z!-!*WjY73m zy~#0+%3R?K=De*Q=WbVL``Fh+jHHN|h&S@uLdY<7@b0|z1j~c7uGdWIOZ>{=N%hm| z2`oF4-w1QL^vLC$lEG`0Tf(oIL(Q1zGF7WjhK81JwuX<5v7h-+lIj%CX3^5W@u;lq zyi^*5`Gec5y)+AVQ3qJsS9%X^v=z=D_W0^YTW=aeGAxt@!EHDE8`WVwf! zeG_E}N;7a1_MZeNiNE%s(?JX~DjrIIVTsuXGhT)VS}RBo2KFE|17{l(;_-x@Y$c6p zL|@7Cgcu*z;kOR$Nk6gaTiz9&Yr#?ZPrlgYEW;?K~?cSVt z&Bn@E6Yh8K^ZUHkR#UIPW4~@WQuF?fD@&$`#aXo+iXwwU%{jmskijjeH(DDQfwTal zwYLuI_ma7qew9>>2nqgF=2l@O|fOEm>%Lk;i3+~K& zmwVC7U|`+&d*OFI2M}sH8S)d$k#@zK^#!wz*Q*bGJE|AkEvM8c(rdjxu>eesalFw% zL0XQyM6GC=e1L!W`L&VVglAeA2K|=qsiu&Sjt`yx&Yx)wfOvy@i#lA#o0KO#qQN^e z+l3Jb6z9O#w;l4RflR9E($yc8bNnJa<2h=g3*}0!BNmk+l<@0Ot=>VF`A_ zwWSjy>?SI&b{}&;XIG~a8>y>veblb=ZmM<7gR|$;GqidC`cdxz;tZVNK#CWgwW*Zx z6@FM-5zu?{g}=iWDIX?iU~0z8U4`}}?q|NVV`jZ;TjWt9ZNzRs-Ll#BtvQW(7p8fNELdltVi;WYQ`t^bf`l~DCy|K#(M{eLT*-NieTnU_-Z^vHDJ?2t zV;fQS>+A7G?V-a@RW{r}2B9>H@`S}&F}RwD4t){zFYB~2wI}o!1;3u6ue)v+ZqFE8 z(!Mw2b0<`kv_r0_ZW_mUY$aIC&klH=BRRg8%~BQct_qYayhnC%x%Vub_vyY0gKf__ zz>n(K=O@@&)8YHpF}wJRv=jG7c_(eqzqtUE_|Pw)M4L)}{8aZaUoiX%#U)_Lj$4AX zfvT6Cj7q;D<>nQ6l^mj3`l$Wb%t_|3*Sxm$1Qf0it3n7_z5(y_57uAq*k3J1&k_o$ zsM&(1C>zU5@UO|v@{ij)`kniG6@g$%I9MuDmv*(Gr7?3751NQR(GTQ)=f+5$+*Sou z>VLHoU81>p%3KxZL`2!%N$SnK#F~!f9 zog#O{9fvHLS35WTpG5WF-cEi8!{xymWV>L=Ct~6dr*MG#+3eeS!)a25;5N4F{#LW` zBeU3zbHQ(8L*fBsbr}*dmgN!#BEi__lj%#94}15qo{F<}GjH>-OKM`N#$c9RHSccN zLAbJ70A>et)onP|sMj{$)@=VdCUUJY=clu?fWJw|!_h+hvm%kVQrN%nH9;Sbu+|25 zF*u*)d+5teY|wOx4ZpijNb%P_$tmt_B5O4p^kuKmv%fNb0fW-L7tb@VCr@WFI1ax> zPEReI9GwCKK1WFs>Bn2BqVoy;vh~upzuAP#i0R&YYtV5^q^1ML{6|@H%W%S{j(%y< zQYIPp>9mTZqC*vI2iEGKc8`k_(o#iuQ6hpHw(DQ(OBg@+bO$6QO)m;E z*Z&{(-ZQAl?_C=W0@8~JNDl%6Ql)nSDosR?UX4;jx-{v8B2_v90#XzZklw3=UPXGZ z0hBHQDG@?`XYt?Xf6nZ8&zw2)&g}Qo{^0PzK%P8V&sz6&U*%?e>#QW75E}<@wiRF7 zrvS=yD|esQ3+xTC1&KjC;QV$yrn9WVT9K!*-I(EsVluI=%6dvo^Zl_S1ivYlYS@Ju z(cvndso<{DFovTs-|^MgYc^e8^bRu9kXMd0VY+R9LBb&CB`Fq@ah`m7=d!8RWr6?k zAwvUtsV_`om{NVXH|NgG{Q4_vqM^i>#OYjlAqA@UD4%%a0)+&B)-HPLpWp1UKAfkTG=W@V&eN-pCGPYdi(BiJ!;J*%{4P>7pAetBwS-a8qsqo-AGT zL?i5fJ`W0MALzw@u*RQoL9R9#imaI5N$Y5N_f8`5t?0;_O0?QzY-zusG5?JaeKCkP zXhi7azJt?l<}Kotc1X4uCfGG^#oMHnkzmI3cgDymlAAV8!%*GY04^@>+Q4iO%1>_P zAob@Eo(D2=w8(TPVU{cN{qx&1MjRLSv&Ux!f;0DTQYapXs0II#{=@lKRr^QV=ODS= z9E^~~*TqMmqP_kyby4QV08dnin2`4!l~0iM`X>rn0R|U}fh%m(n4cGln1;20-?0Ix z##XLm#fF0L3zH}V&EjaK;$Od&WWS=SsURY_K!;<$Q`*rJ{uK;Q&c4EFfZ`6KZb6H+ zA&pGx^-Fb(w0lIZ@#3(#eCc9*H>kiZ)y0y$m*)qv_}+hy+eji-a9nfmGlcVa`Gpne3` zC=k*T7Z%`oFso{+y-aC+AaHurMK|-VydXq_`s-lG_%PXRn76Z$I`vY{#1d`6wiP&l*>W{ z3YU37+jp4r7`=E7i>S@Co|x!7b>*_0-+$DZ>Pn{*!oC+>O$gzpY*+2T5W@48p`#~P zkDCxCC{}SR;t{cq&V0lXYrqMbXAMvx zFbC~mkjIW1>)P@?sjY7~mn@dY7<{s1nYh-EJ5~K&JO>U)PQ|ep3OpsGRnH&J~ohlAAV^G4N3(#9KTHY!Go*Or9szp0V zDJJsN-htyLr^K>ni{)J;k+B7m*cR6q*XW7=_yRzF&wu&?PRJZyIqt7DG(@q7aNX#m zwWoWk)UHDW!J97tMh7%}!D@Z;EzA}XY&3rsgB80KE53h!M}d!u%3L*`5c|7=Jx+IP zr-=S8LsHq*ED?gK0!G#xGiho+deafc|*`$Oa}#}DzFpq^gMLfVX; ztm?T`?-8i=oNJ)Q|K3XY7p#Y)W~6ePSl}{_97J)7VjR{f!V?kY#@_FH=wtKS1g(=) z$-gJHv8Ys8C39UTD8gs|h0O82WV41lF!(il&zYYoh_NnZ7%W2SMTkCC*W9Ex4?2!{>yXa29 zRNkK#N*z8`eJ>l~E*@sCQYYnMI0PXgsJzM-^*dbyk3UGuR@)o2o%o$g4^pGqtjXIn z{2o*)strD&6q}*NTVA+A>-(l_w_zRWc|nyl@`2oxgH0P@lA%1T)nYsRJ0tUYr|0N+ zz*GTKHIjP2*6)B8%J_idN7$E=faKw*bq$kW2_-(tRtc}^qAc@34*-ib+B(D1YCf1O zg;~Ppl$Pwy3_FKZL#B6sgr)VTmkL%fZ}^w{H{JUWiji_9%v1kt z_xzA!h=W`8m%ijzhTxCahO*OH9kxamq)vx1FVKCfYM~NKUL6VkIur6f^OU%SSWg?>v|!nZoSBn@wq~TYnlhIz zLxC>7({mq2#w*$L7sTAAcFVXT1S?k6R-Z9=KGVfyeRIKF)hg*O{rDYgPfot}5Mucd z-fLgdK*yhT^h8ceQwyWD8UTA*lP)A!zV9z(OI!IUhLM%kiqJ%zfZ7c>$3*|{n9p** z-W5vh-9!Gz5l;>g;o>fIcIfXy9JSNOm(j?c?+vfl|jEZASbXeI|6jQNE4TO*WC{J(B*IR|9wHC{|+d{|7%nt`~OCp zlo(_Qq z7m|qe++X)z{H4t;a;NmW6<)^=)E_bbZ^Ou|q8A@MvKG-tCQSHh`jwG+bz!hPKqvJ(clkpG-vvKsXsrzcMdgVV_97sWE-`Zfi5*M@(TlV~D)$ zhFc*Kfosnz@N|nDFAP68UBI~BDJwk_nIG^`=;~s0B}Z6gc{Snxv;g{;m@6vt;9wp| zAU5-{B$%!W@0%JJ7uU6#&l;y@-|nv))8p^s%Z=UaPjib?v{Zc(XbyQYvzH9EDD82C z-AIfijLM}I&lN@SKsOw0HC9t9ShoRMZT`G?4vw6b*nXI#dLJX*-_Q$xyM_$-e$=6f zuoF+MPhGJyr^&jtFmq7+*HW@^0K^`Y0fiPc4OYj4rG1A|3&%-&=X5pX)PPPk$C*-dvU<}@ zU0;2)Z3dBbk_45Vn4=Lnp5O=%#Pb+7%YS-=aXn04i#-b#rwTQ7>5MhftG{?G_R5JM z5$;2}Hy{$XOjBU+q5J`UQ{PbU!BEZul}6hb(*7WZ+MeEvUQAg zbJ+~YxzuSYIJA?nyrYVen34xAms#RekzN^s8yV*3xQ08m?jr)^R-Sl!Kb@in2lJ8a zw%5QyzINFZ$clBwB$j&fcdZbKBg2@=rapXA8=WWNXfxJyHi>zIPT_^}C(Hpp)C+^W z3;I12l7BQV3)=)b0vseh?yr?SdBNIk!;rV6zBS94$Ip*H8bZ7}GloE`l}R4$o;I5` zI@xAS&pc?Ay4lBQ9r32UWtLn>8(%>S;s@Wy1K+(6MzauWdH5s;wzmWdBDRsjWr?@h z?9&_dalf`vmkTr%w)}*;VMaoM1}v1J;GkK}LDX+{9mKOq&R`i)$hWdComqN&R=Omg zYekj)SR8M}giGJ}Fuv-qkZwhQ(3wP)nY96@SdEQhJ5amzk-)g6Ou1s(v5$=oV zxOwdN7x`+0(Z1N`^|=i)>`r~giKP{}`xV^p9f|#vZuvfphf8%MU?PYzeoYNa$G`fk zYQ4<(1;LGu$j~+1)goPkZs{US9$-T(&+rAa^It_hq4tYoWcQ zTkS1LFIRCrWsW39R)#CcA0i57_`xw8s_8yFz44Ju(eqE{{hvY2e1zUQT57QUl6)u} zbNzXo(hqf2g;+>nH;}61wePIdoOSN|=`~N*!NQksOnNdmnL4~{`9?Zz@-i{bpuy1zD~Ru#7lOOcZM>l#Exr@X*(tvUK|-8CVUk0+;bSAsQ2Jb>$r-56Kz$MQEUf!DJ3!cvBbZ~Xo(4z+Y>m^l>s|h zV{^^?2NV;kop-sEeXUg-pI1k5a#1RIj)0x@lP?&>gRU^16skDDF=7yk|JElsj!do@M4lC-%pcCcb7t(zUb4^53CY6D=(<7)zAv)ie~F4yQ~EN?(`G`O;5 zxa(f!Qptb2%nGEnH%eYw06MS_h8)V%tw;RsoJcA{+Gall@hH@dQ|&HlHYU|E#9UPv?ij{Y$(b$2jvyAnQbV{ zmE;{bmOlG2Nh3Z<+qY${%%KxmGt#N$U>czws*0`%-?K$J$*I(;C*JT$sEO#=33_zKmu*F!QLl}QRW(l zVMVDzelB(&B>ft3cb^3E>&8ErnXULeu?ux?qthge*kv&aPOP#j7r=3(C5xb%e=9j% z(H%Ny{m{^m<~oey$SiL2?`p*y62p<5>0^7Lfa(3^XOdgre8{QLI<9KKZBQR({E3qs z{~Dz%wF)F43IOymbSN&$Ci z>-E7GTv&>>!+_rCnKw+PDmH~%=ibIQHeOUSC_^Ii7$6CS z_Hndms!F3?1ln*|@{jIitVEujgTiRTlz{EWE=B~O$Zf&}{4jzzZ5EJLvGSj9M+sKz z0^zOQg{=CWc)0H&cznBhF!Xb!Qz6ySqH)@HP(KY5w?RtWS1^E_%7hDPQ_I;A8} zYqVYL){K|eUabox6xU}xkijPV(QuA=HhDx!#FJu@2FZR-)RjC;VWpg-*0_0H*C0p%t$zdlJrZ2UrqcWPLC_@k9ZVEP!6YX ze|P=z$I5dzq!?_q;oN2e2q18`;C*)Tsgma@dwLcEj+Rl&ywO*s3xPlWjFlB2%h|_) zsQ^ao=;^?pc){hZ+TJCraoQsHPD~uAo_k?6GrykY{d%Uf;aM>)DC$D${|00Gc_+{<4~IOHF+VyYZZhDX~74+5DjUF(Q(6t$hKEAbZ-Wo zsWn-~GjYNUBe9b_lT3RmuG_(9(p?@GgJ)<+K&`4wphNf#cItyM%D1PVIfasAp*8^y zd?SRzZJ~C6CCC?Tz8BBe9;D0?!aw@zKgUp9xf1`o|G`pxYYKo6=g9=Fg$MVRug(M* z^*4Czz>pSzSMJl|U20DgbyNMN#%cf!?n2Hb?G)1FnZU%CX?elYS+g*yTZVedZ0o^I z2}J|vz_e$^TNcmY4KqgHijttfhfn+#|7O~08{+5iAw$a0kk9)$r6`5f=)cs`&q^+M z5Caqb%wRo@r~;yO%VDr&8Sw%U0dg0*Ve>7hx4vvSf@|A>x2vWqUg}%1e*4zCEgrXr zM|RZPZd*bvH%fF2|8L-H?Qyd!XkB3ve?iQ4ske}JC=)E+xt2C=d|iKrD~d&3?SoYe zgSDbDrA+@u1M6_bYy*x|0tI`w!cx0}uZ(urKokCMA_qv+lq*rj>!ICaw_tMX+s3n- zJPFdj6)8Xk9=~;VuDzdgc(=mww;=uRQ@PAH*`gt@Vnl+r6aU=hQ&nSO0&I4OC3soR zeiiz+pPbygBFAUH*LKvc1S-`|HIn@j6b%*!ueix$yo;_is)%g5L#MT84%v)jCz-V| z4;z@m-s<%ik=%YDn{?eIPGO`>1GR#OvF*I6B@~KU;(3^ALne^n8DqG&L#bpLEvi`8 z0tgV-s~|zNF|i^Q04l;E9?%G$Zt7Q3Zgw-b&gOIGm^342OF!MPL?qm6=h|48rklj| zA<_CJ@OjYHE9}~bx0j*(E+3KPJZY{&UYNUZJ(Vv{!e^poGZi6l-mt=#sQ{qR<-w!} zbbev&yJ?X`o55Z(mf&P z(%OZ9`+f_NmM`PxC9AR}>=?*-g|>3D3xalD;qQP;z>y+WM~Jb`heqLgt8d<|8=)`v znjfC`HgRc)CoAo<1S^L;_!(hHs_7=v{)2xM`2vdJRSOH0!5TNB=_)#7ZvwAR#6{x#H5o&oh5iIGr&K}GpoibZ$o#@S+GJ77 z%J#FxyUY*kf-G{UZMm-dy9%}T9mS@?qHYUWZ*0+nrWVh8-ftB{y-x4hFQVbt7 z3dhyZfWgnjd}cPQud{%grqZ@F9ks{1SIn(Iy&%po-e+0-Ankz%h|5tq^O`-&oM`7v z^p8H&bfJUQWqC=yxQmNBsRqjv^HSFY)R%Y`mJlC?4y+xfBX0$RSZjz8ztkOEe}W7( zY^GVTcsSPocCgzHOw}gll4(?LH|tW-4|{3T4+I%G0qC)b zyHBKhBi>30THf5(xpLh*LN`-q%AYfL$Lr7YAy1z#4+Ov`U;Li`5u}Uc(iNf(NVc+X z)Fmz4AFI8jUsn6W#;Q2QuIh-__!e?A=z2hjVKn4t9X#wA>5L~y#fdP{7E{>qrbmO3 zsWr{e?OxIEgBsHKW%d|E=eg9|(&do{;{qNIY6*kW=KuMKMVb`xRYkN^g#VZ2zSb9h^m=A3wfM_ zZ|lry`q)9MGSCAXjUNxmoKQTv==80tE6XZQ8wA5YyXc zRvcE*$?R26xvZyEA=>m9ZA|8d*DH!AaRR>@B|u0pii7!6VM5n0)w+xV*>c+J$Cr2J z{cn<`cpKj3HVo_6`mW1EaF2nrm`DP{EG}yH{qRvNOHq#r3-ut#eVd)x29CD)PT60d zF6ePn6b^YS=0a7Uv~9n9C|hcq6P>jvQKKjN(cT{vHZT;t93)EunnaD~K^e+aoy>+2 zuCvxNvm)k)34%W;`S)FB(@r~UE~~C&X=~nraEhG_t<5=M$Cx$mw&$jjagXmlH!9-0 z=RQ;RU#z&Z@feP0@d#VASKrwgy%DwX^6tIM)L-gzRyo#OioKi^wF#86OpuGJHZp&O z#CKA`@}l4S?!?7AYrxKWJkFoQzsR*4-9ER7t;pbAx*KzO=%;r1A&>wQ+WTi) zP%#Cy@Jg3Lw8M~HbBKkyH}5m|UuqVr6!#$4=;QwfiXkgO0kNPZ`C|>YJ6M@HP#@Ee zGxrUvO_C&%)>pOkBjiH!;;&a=0#$+T?BUgfJ5nN0_4r;AT)s!XDxsQBUhPd;Z($X3 zqT5W;G%I2JsD8UK96r^{(% zy8Nt3nj<*LKC;~C=z#=e>cEW`b_~7fy;2V?OwCoV9uT6qhcCbb(m_B&tl+LUro;lr z-i1Zv9N+c^^dG_LKM<_SYk1w}K3*6pfOJhtJ4Q|0s_v$x_!@TnwuTG)4QqPraz7kJ}R<(+IX1C zR*QGUgH>?vgdRHv0()N1)!#Ib*{%Ww|=Uggwk zn8hZ;#Yo1KX;Rst!7e-~<%(g2=jAZ9lC5bXFq}CZjdw;pd4Em#YjPL*F`G&|IB0NB zk-PVc9QAg3-|GwgRS3J6OPPm*CIV6U7!*M9&ftF_f7y^4IDG8$2}PJcCweCS*w5@8 zE6l7x>`vJ%oAu-Jv1S$;O3t z#g62Cbv>CZs@|6%0o*b0I}m#&$lt z{q%mrnwb~8`c{1>iJRi%?CY+{N~{Dhw0Xe8VTMc;#n+xjm%9~J&zm+O3nvvtFbCm< zl1@0-6Kv!0y?fz=4Y7i)0WO5gS)X^ZO_eu3tbNQ3F=*#wy?3o)c+pA%Bl@4bjpHt0 zI^ES3oZh}n9iEO4a25|>BC~in_QKW02hbO?E*PfR}Pb1Hgn72oxb?8 zn@`6DobS+oOshw;^v-z~InE`XKb>q9(ie%=Az9$~&1imj%svBGVl<6^d#q)- zu?XLq4>;+)_P2q)m~+*Gkv#+K=%iqG`3G_=xDCbN-vUviX2&|$iLm@2>hB-OXhS|? zl^l-Mf}$(1!T{keC;kHo5_oc{d1g?P@j*A7_<%Tr=_g z1ErJGxZvz|R_@DMUJ%S0fBFshNcAw_m6qY)ZNYexa-(55S|>i1jSlnlLI`s@^lXw| zLA%>mVmZEGdrUO*U3y_mC!ec5W%xQ96P4)lfPbT`gxvvbCs(vk+s2AK9jOHWE(>zQx zl*&S*K(lD~2LVw2R1ehh)pIUVE`CfLz?Wu4?7_fq@YY}s4!*&owO|Sti)-P>v;l6 z`?2sW_yswK3nlEccs~z|@2~N8e}Dq%vJI%cKkb~U{<=_|IB;fwylkwCQ)372 zAqmM8)TQwKKZqKS1qIk}U;3#rjUeWSSS|TF&mW0T|G~)zKJo|VkdPL$S?r@j*6b9t zyYiIBg=Sw}^qHyaY13Q8Z9B<4yre?N&EVkVXb>+)a&i%1ikoDUJiHakji!hX^_0_+ z-#OICtCak6KS}LolqhWkg}8S+d+Z!1J}eH#B(G46FBKBYa(YLM zC8}A~hKsF7o&Ah}?c^$b=Rw!`M`SH5#>0GULvxL5jKO&vDojqiZPv04+f>Z$_m7P zkre(KSJydzf{Q8#3(2tJg_yFZjTd8_v9(@EDG2zuBHFYgBvdg~>-*kzXRz6*&tx}? zd~63Ul(TtmxNO1gQ~S)_LF)bu@AK!w6s5v)Um?a{i>+eL+Di=)LnVFdS=9nND;VFXw)cbhw1wPN<7FMp0!&5xsq zmsQ0=e1-#JL7jPaS?2_^-w zPxiaw51k9_B;r2V@+-SKybj}vR^bw@&IW{M^yNcvFQKoP-b*3qJc|WvwYWhO)!4;U zlp{&sE`7}G6CW$dzZ^4{CZ%vD@2?Z>*%ULannh~j^-L0By?L&z&EY9|;gX3V*OUbA zf4rtN;%a8l<^N_}*k2j_V2v&9%Yueq(Tca%)B5`QFt?+@({VnIxQ!}E0GKt$bQM1u zyoP8nzkG)ZOcKEM9uf8y+)YqRZg3@uo$Yn)b=X19!EmH^3Ij)>M1kCxJ`41>9}zz2 z(}6lI!x?SQY`J%EZXdmVp~1%=>fh5jlJCj2Sv8=Oj()6bwPuh1CJ}Tl+j#XQ#G3c8 z`QyJnGPUw{^d)%XkXQZ+z^#127dSO;vgI{%14RF-Jsz98Esbn4Q&2JGjX$ikTO(p! zB!yHIAv#{zG)@ZHyj%5pn|=4rOT)(ZwQp(Eh5XyhCeLSpQmz`lf0&20xy)(1jrnob zQHCnS0O`SL-k0q=Y$Tsi>Vl+G*BvQWDpWV

=puYDE*Q= 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 z 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

  • v>qP_wd8?4uS8Ly~c__PIWezROl4?-?sMu4ILm1 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≺@n3|77%2B((a1_G+$R6w&< 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 Date: Tue, 4 Jun 2024 11:04:29 +0000 Subject: [PATCH 064/169] add throughput entry to log --- src/llamafactory/extras/callbacks.py | 6 ++++-- src/llamafactory/webui/runner.py | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/llamafactory/extras/callbacks.py b/src/llamafactory/extras/callbacks.py index 637b786d..441ebbfd 100644 --- a/src/llamafactory/extras/callbacks.py +++ b/src/llamafactory/extras/callbacks.py @@ -170,12 +170,14 @@ class LogCallback(TrainerCallback): percentage=round(self.cur_steps / self.max_steps * 100, 2) if self.max_steps != 0 else 100, elapsed_time=self.elapsed_time, remaining_time=self.remaining_time, + throughput="{:.2f}".format(state.num_input_tokens_seen / (time.time() - self.start_time)), + total_tokens=state.num_input_tokens_seen, ) logs = {k: v for k, v in logs.items() if v is not None} if self.webui_mode and all(key in logs for key in ["loss", "learning_rate", "epoch"]): logger.info( - "{{'loss': {:.4f}, 'learning_rate': {:2.4e}, 'epoch': {:.2f}}}".format( - logs["loss"], logs["learning_rate"], logs["epoch"] + "{{'loss': {:.4f}, 'learning_rate': {:2.4e}, 'epoch': {:.2f}, 'throughput': {}}}".format( + logs["loss"], logs["learning_rate"], logs["epoch"], logs["throughput"] ) ) diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index 6e1facef..6378a506 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -132,6 +132,7 @@ class Runner: pure_bf16=(get("train.compute_type") == "pure_bf16"), plot_loss=True, ddp_timeout=180000000, + include_num_input_tokens_seen=True, ) # checkpoints From 07045c876a4c6025ba56905b65cce6c9faedacb5 Mon Sep 17 00:00:00 2001 From: MengqingCao Date: Wed, 5 Jun 2024 07:06:40 +0000 Subject: [PATCH 065/169] add npu for model export --- src/llamafactory/hparams/model_args.py | 4 ++-- src/llamafactory/webui/components/export.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 7003cbee..99c02850 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -145,9 +145,9 @@ class ModelArguments: default=1, metadata={"help": "The file shard size (in GB) of the exported model."}, ) - export_device: Literal["cpu", "cuda"] = field( + export_device: Literal["cpu", "cuda", "npu"] = field( default="cpu", - metadata={"help": "The device used in model export, use cuda to avoid addmm errors."}, + metadata={"help": "The device used in model export, use cuda to avoid addmm errors; use npu/cuda to speed up exporting."}, ) export_quantization_bit: Optional[int] = field( default=None, diff --git a/src/llamafactory/webui/components/export.py b/src/llamafactory/webui/components/export.py index 2f354011..32bedffb 100644 --- a/src/llamafactory/webui/components/export.py +++ b/src/llamafactory/webui/components/export.py @@ -89,7 +89,7 @@ def create_export_tab(engine: "Engine") -> Dict[str, "Component"]: export_size = gr.Slider(minimum=1, maximum=100, value=1, step=1) export_quantization_bit = gr.Dropdown(choices=["none"] + GPTQ_BITS, value="none") export_quantization_dataset = gr.Textbox(value="data/c4_demo.json") - export_device = gr.Radio(choices=["cpu", "cuda"], value="cpu") + export_device = gr.Radio(choices=["cpu", "cuda", "npu"], value="cpu") export_legacy_format = gr.Checkbox() with gr.Row(): From f48f5e646e2da9e02333d027033141b0e75dfcf8 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 5 Jun 2024 15:16:38 +0800 Subject: [PATCH 066/169] support glm-4 --- README.md | 9 ++++-- README_zh.md | 9 ++++-- src/llamafactory/data/template.py | 13 +++++++++ src/llamafactory/extras/constants.py | 42 ++++++++++++++++++++-------- 4 files changed, 56 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 95c0c345..7df6cb09 100644 --- a/README.md +++ b/README.md @@ -71,14 +71,16 @@ Compared to ChatGLM's [P-Tuning](https://github.com/THUDM/ChatGLM2-6B/tree/main/ ## Changelog +[24/06/05] We supported fine-tuning the **GLM-4-9B** and **GLM-4-9B-Chat** models. + [24/05/26] We supported **[SimPO](https://arxiv.org/abs/2405.14734)** algorithm for preference learning. See [examples](examples/README.md) for usage. [24/05/20] We supported fine-tuning the **PaliGemma** series models. Note that the PaliGemma models are pre-trained models, you need to fine-tune them with `gemma` template for chat completion. -[24/05/18] We supported **[KTO](https://arxiv.org/abs/2402.01306)** algorithm for preference learning. See [examples](examples/README.md) for usage. -
    Full Changelog +[24/05/18] We supported **[KTO](https://arxiv.org/abs/2402.01306)** algorithm for preference learning. See [examples](examples/README.md) for usage. + [24/05/14] We supported training and inference on the Ascend NPU devices. Check [installation](#installation) section for details. [24/04/26] We supported fine-tuning the **LLaVA-1.5** multimodal LLMs. See [examples](examples/README.md) for usage. @@ -157,6 +159,7 @@ Compared to ChatGLM's [P-Tuning](https://github.com/THUDM/ChatGLM2-6B/tree/main/ | [DeepSeek (MoE)](https://huggingface.co/deepseek-ai) | 7B/16B/67B/236B | q_proj,v_proj | deepseek | | [Falcon](https://huggingface.co/tiiuae) | 7B/11B/40B/180B | query_key_value | falcon | | [Gemma/CodeGemma](https://huggingface.co/google) | 2B/7B | q_proj,v_proj | gemma | +| [GLM4](https://huggingface.co/THUDM) | 9B | query_key_value | glm4 | | [InternLM2](https://huggingface.co/internlm) | 7B/20B | wqkv | intern2 | | [LLaMA](https://github.com/facebookresearch/llama) | 7B/13B/33B/65B | q_proj,v_proj | - | | [LLaMA-2](https://huggingface.co/meta-llama) | 7B/13B/70B | q_proj,v_proj | llama2 | @@ -531,7 +534,7 @@ If you have a project that should be incorporated, please contact via email or c This repository is licensed under the [Apache-2.0 License](LICENSE). -Please follow the model licenses to use the corresponding model weights: [Baichuan2](https://huggingface.co/baichuan-inc/Baichuan2-7B-Base/blob/main/Community%20License%20for%20Baichuan%202%20Model.pdf) / [BLOOM](https://huggingface.co/spaces/bigscience/license) / [ChatGLM3](https://github.com/THUDM/ChatGLM3/blob/main/MODEL_LICENSE) / [Command-R](https://cohere.com/c4ai-cc-by-nc-license) / [DeepSeek](https://github.com/deepseek-ai/DeepSeek-LLM/blob/main/LICENSE-MODEL) / [Falcon](https://huggingface.co/tiiuae/falcon-180B/blob/main/LICENSE.txt) / [Gemma](https://ai.google.dev/gemma/terms) / [InternLM2](https://github.com/InternLM/InternLM#license) / [LLaMA](https://github.com/facebookresearch/llama/blob/main/MODEL_CARD.md) / [LLaMA-2 (LLaVA-1.5)](https://ai.meta.com/llama/license/) / [LLaMA-3](https://llama.meta.com/llama3/license/) / [Mistral](LICENSE) / [OLMo](LICENSE) / [Phi-1.5/2](https://huggingface.co/microsoft/phi-1_5/resolve/main/Research%20License.docx) / [Phi-3](https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/blob/main/LICENSE) / [Qwen](https://github.com/QwenLM/Qwen/blob/main/Tongyi%20Qianwen%20LICENSE%20AGREEMENT) / [StarCoder2](https://huggingface.co/spaces/bigcode/bigcode-model-license-agreement) / [XVERSE](https://github.com/xverse-ai/XVERSE-13B/blob/main/MODEL_LICENSE.pdf) / [Yi](https://huggingface.co/01-ai/Yi-6B/blob/main/LICENSE) / [Yi-1.5](LICENSE) / [Yuan](https://github.com/IEIT-Yuan/Yuan-2.0/blob/main/LICENSE-Yuan) +Please follow the model licenses to use the corresponding model weights: [Baichuan2](https://huggingface.co/baichuan-inc/Baichuan2-7B-Base/blob/main/Community%20License%20for%20Baichuan%202%20Model.pdf) / [BLOOM](https://huggingface.co/spaces/bigscience/license) / [ChatGLM3](https://github.com/THUDM/ChatGLM3/blob/main/MODEL_LICENSE) / [Command-R](https://cohere.com/c4ai-cc-by-nc-license) / [DeepSeek](https://github.com/deepseek-ai/DeepSeek-LLM/blob/main/LICENSE-MODEL) / [Falcon](https://huggingface.co/tiiuae/falcon-180B/blob/main/LICENSE.txt) / [Gemma](https://ai.google.dev/gemma/terms) / [GLM4](https://huggingface.co/THUDM/glm-4-9b/blob/main/LICENSE) / [InternLM2](https://github.com/InternLM/InternLM#license) / [LLaMA](https://github.com/facebookresearch/llama/blob/main/MODEL_CARD.md) / [LLaMA-2 (LLaVA-1.5)](https://ai.meta.com/llama/license/) / [LLaMA-3](https://llama.meta.com/llama3/license/) / [Mistral](LICENSE) / [OLMo](LICENSE) / [Phi-1.5/2](https://huggingface.co/microsoft/phi-1_5/resolve/main/Research%20License.docx) / [Phi-3](https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/blob/main/LICENSE) / [Qwen](https://github.com/QwenLM/Qwen/blob/main/Tongyi%20Qianwen%20LICENSE%20AGREEMENT) / [StarCoder2](https://huggingface.co/spaces/bigcode/bigcode-model-license-agreement) / [XVERSE](https://github.com/xverse-ai/XVERSE-13B/blob/main/MODEL_LICENSE.pdf) / [Yi](https://huggingface.co/01-ai/Yi-6B/blob/main/LICENSE) / [Yi-1.5](LICENSE) / [Yuan](https://github.com/IEIT-Yuan/Yuan-2.0/blob/main/LICENSE-Yuan) ## Citation diff --git a/README_zh.md b/README_zh.md index b10db1e5..bdb61b8b 100644 --- a/README_zh.md +++ b/README_zh.md @@ -71,14 +71,16 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd ## 更新日志 +[24/06/05] 我们支持了 **GLM-4-9B** 和 **GLM-4-9B-Chat** 模型的微调。 + [24/05/26] 我们支持了 **[SimPO](https://arxiv.org/abs/2405.14734)** 偏好对齐算法。详细用法请参照 [examples](examples/README_zh.md)。 [24/05/20] 我们支持了 **PaliGemma** 系列模型的微调。注意 PaliGemma 是预训练模型,你需要使用 `gemma` 模板进行微调使其获得对话能力。 -[24/05/18] 我们支持了 **[KTO](https://arxiv.org/abs/2402.01306)** 偏好对齐算法。详细用法请参照 [examples](examples/README_zh.md)。 -
    展开日志 +[24/05/18] 我们支持了 **[KTO](https://arxiv.org/abs/2402.01306)** 偏好对齐算法。详细用法请参照 [examples](examples/README_zh.md)。 + [24/05/14] 我们支持了昇腾 NPU 设备的训练和推理。详情请查阅[安装](#安装-llama-factory)部分。 [24/04/26] 我们支持了多模态模型 **LLaVA-1.5** 的微调。详细用法请参照 [examples](examples/README_zh.md)。 @@ -157,6 +159,7 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd | [DeepSeek (MoE)](https://huggingface.co/deepseek-ai) | 7B/16B/67B/236B | q_proj,v_proj | deepseek | | [Falcon](https://huggingface.co/tiiuae) | 7B/11B/40B/180B | query_key_value | falcon | | [Gemma/CodeGemma](https://huggingface.co/google) | 2B/7B | q_proj,v_proj | gemma | +| [GLM4](https://huggingface.co/THUDM) | 9B | query_key_value | glm4 | | [InternLM2](https://huggingface.co/internlm) | 7B/20B | wqkv | intern2 | | [LLaMA](https://github.com/facebookresearch/llama) | 7B/13B/33B/65B | q_proj,v_proj | - | | [LLaMA-2](https://huggingface.co/meta-llama) | 7B/13B/70B | q_proj,v_proj | llama2 | @@ -529,7 +532,7 @@ run_name: test_run # 可选 本仓库的代码依照 [Apache-2.0](LICENSE) 协议开源。 -使用模型权重时,请遵循对应的模型协议:[Baichuan2](https://huggingface.co/baichuan-inc/Baichuan2-7B-Base/blob/main/Community%20License%20for%20Baichuan%202%20Model.pdf) / [BLOOM](https://huggingface.co/spaces/bigscience/license) / [ChatGLM3](https://github.com/THUDM/ChatGLM3/blob/main/MODEL_LICENSE) / [Command-R](https://cohere.com/c4ai-cc-by-nc-license) / [DeepSeek](https://github.com/deepseek-ai/DeepSeek-LLM/blob/main/LICENSE-MODEL) / [Falcon](https://huggingface.co/tiiuae/falcon-180B/blob/main/LICENSE.txt) / [Gemma](https://ai.google.dev/gemma/terms) / [InternLM2](https://github.com/InternLM/InternLM#license) / [LLaMA](https://github.com/facebookresearch/llama/blob/main/MODEL_CARD.md) / [LLaMA-2 (LLaVA-1.5)](https://ai.meta.com/llama/license/) / [LLaMA-3](https://llama.meta.com/llama3/license/) / [Mistral](LICENSE) / [OLMo](LICENSE) / [Phi-1.5/2](https://huggingface.co/microsoft/phi-1_5/resolve/main/Research%20License.docx) / [Phi-3](https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/blob/main/LICENSE) / [Qwen](https://github.com/QwenLM/Qwen/blob/main/Tongyi%20Qianwen%20LICENSE%20AGREEMENT) / [StarCoder2](https://huggingface.co/spaces/bigcode/bigcode-model-license-agreement) / [XVERSE](https://github.com/xverse-ai/XVERSE-13B/blob/main/MODEL_LICENSE.pdf) / [Yi](https://huggingface.co/01-ai/Yi-6B/blob/main/LICENSE) / [Yi-1.5](LICENSE) / [Yuan](https://github.com/IEIT-Yuan/Yuan-2.0/blob/main/LICENSE-Yuan) +使用模型权重时,请遵循对应的模型协议:[Baichuan2](https://huggingface.co/baichuan-inc/Baichuan2-7B-Base/blob/main/Community%20License%20for%20Baichuan%202%20Model.pdf) / [BLOOM](https://huggingface.co/spaces/bigscience/license) / [ChatGLM3](https://github.com/THUDM/ChatGLM3/blob/main/MODEL_LICENSE) / [Command-R](https://cohere.com/c4ai-cc-by-nc-license) / [DeepSeek](https://github.com/deepseek-ai/DeepSeek-LLM/blob/main/LICENSE-MODEL) / [Falcon](https://huggingface.co/tiiuae/falcon-180B/blob/main/LICENSE.txt) / [Gemma](https://ai.google.dev/gemma/terms) / [GLM4](https://huggingface.co/THUDM/glm-4-9b/blob/main/LICENSE) / [InternLM2](https://github.com/InternLM/InternLM#license) / [LLaMA](https://github.com/facebookresearch/llama/blob/main/MODEL_CARD.md) / [LLaMA-2 (LLaVA-1.5)](https://ai.meta.com/llama/license/) / [LLaMA-3](https://llama.meta.com/llama3/license/) / [Mistral](LICENSE) / [OLMo](LICENSE) / [Phi-1.5/2](https://huggingface.co/microsoft/phi-1_5/resolve/main/Research%20License.docx) / [Phi-3](https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/blob/main/LICENSE) / [Qwen](https://github.com/QwenLM/Qwen/blob/main/Tongyi%20Qianwen%20LICENSE%20AGREEMENT) / [StarCoder2](https://huggingface.co/spaces/bigcode/bigcode-model-license-agreement) / [XVERSE](https://github.com/xverse-ai/XVERSE-13B/blob/main/MODEL_LICENSE.pdf) / [Yi](https://huggingface.co/01-ai/Yi-6B/blob/main/LICENSE) / [Yi-1.5](LICENSE) / [Yuan](https://github.com/IEIT-Yuan/Yuan-2.0/blob/main/LICENSE-Yuan) ## 引用 diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index 00527b44..fe0211c6 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -658,6 +658,19 @@ _register_template( ) +_register_template( + name="glm4", + format_user=StringFormatter(slots=["<|user|>\n{{content}}<|assistant|>"]), + format_assistant=StringFormatter(slots=["\n{{content}}"]), + format_system=StringFormatter(slots=["[gMASK]{{content}}"]), + format_function=FunctionFormatter(slots=["{{name}}\n{{arguments}}"]), + format_observation=StringFormatter(slots=["<|observation|>\n{{content}}<|assistant|>"]), + stop_words=["<|user|>", "<|observation|>"], + efficient_eos=True, + force_system=True, +) + + _register_template( name="intern", format_user=StringFormatter(slots=["<|User|>:{{content}}", {"token": ""}, "\n<|Bot|>:"]), diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index f365016f..4d7685c5 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -281,6 +281,26 @@ register_model_group( ) +register_model_group( + models={ + "CodeGemma-7B": { + DownloadSource.DEFAULT: "google/codegemma-7b", + }, + "CodeGemma-7B-Chat": { + DownloadSource.DEFAULT: "google/codegemma-7b-it", + DownloadSource.MODELSCOPE: "AI-ModelScope/codegemma-7b-it", + }, + "CodeGemma-1.1-2B": { + DownloadSource.DEFAULT: "google/codegemma-1.1-2b", + }, + "CodeGemma-1.1-7B-Chat": { + DownloadSource.DEFAULT: "google/codegemma-1.1-7b-it", + }, + }, + template="gemma", +) + + register_model_group( models={ "CommandR-35B-Chat": { @@ -469,21 +489,21 @@ register_model_group( register_model_group( models={ - "CodeGemma-7B": { - DownloadSource.DEFAULT: "google/codegemma-7b", + "GLM-4-9B": { + DownloadSource.DEFAULT: "THUDM/glm-4-9b", + DownloadSource.MODELSCOPE: "ZhipuAI/glm-4-9b", }, - "CodeGemma-7B-Chat": { - DownloadSource.DEFAULT: "google/codegemma-7b-it", - DownloadSource.MODELSCOPE: "AI-ModelScope/codegemma-7b-it", + "GLM-4-9B-Chat": { + DownloadSource.DEFAULT: "THUDM/glm-4-9b-chat", + DownloadSource.MODELSCOPE: "ZhipuAI/glm-4-9b-chat", }, - "CodeGemma-1.1-2B": { - DownloadSource.DEFAULT: "google/codegemma-1.1-2b", - }, - "CodeGemma-1.1-7B-Chat": { - DownloadSource.DEFAULT: "google/codegemma-1.1-7b-it", + "GLM-4-9B-1M-Chat": { + DownloadSource.DEFAULT: "THUDM/glm-4-9b-chat-1m", + DownloadSource.MODELSCOPE: "ZhipuAI/glm-4-9b-chat-1m", }, }, - template="gemma", + module="query_key_value", + template="glm4", ) From 90ed3cae92c624cb53e7349bb7edeaf402d030e6 Mon Sep 17 00:00:00 2001 From: MengqingCao Date: Wed, 5 Jun 2024 08:03:30 +0000 Subject: [PATCH 067/169] fix #4077 --- src/llamafactory/cli.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/llamafactory/cli.py b/src/llamafactory/cli.py index c14ae6ec..8a229a38 100644 --- a/src/llamafactory/cli.py +++ b/src/llamafactory/cli.py @@ -70,7 +70,11 @@ def main(): elif command == Command.EXPORT: export_model() elif command == Command.TRAIN: - if get_device_count() > 1: + if get_device_count() > 0: + # NOTE (MengqingCao): why use torchrun when only one accelerator is available? + # DeepSpeed only warp model with DeepSpeedEngine when launching by distributed launcher, + # e.g., torchrun, causing some feature missing + # sa: https://github.com/huggingface/transformers/issues/24309 master_addr = os.environ.get("MASTER_ADDR", "127.0.0.1") master_port = os.environ.get("MASTER_PORT", str(random.randint(20001, 29999))) logger.info("Initializing distributed tasks at: {}:{}".format(master_addr, master_port)) From eef1e542a91baefebdaac0d7c747ed481b78f6ef Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 5 Jun 2024 16:32:32 +0800 Subject: [PATCH 068/169] update readme --- README.md | 2 +- README_zh.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7df6cb09..5e8bc8eb 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Compared to ChatGLM's [P-Tuning](https://github.com/THUDM/ChatGLM2-6B/tree/main/ ## Changelog -[24/06/05] We supported fine-tuning the **GLM-4-9B** and **GLM-4-9B-Chat** models. +[24/06/05] We supported fine-tuning the **[GLM-4-9B/GLM-4-9B-Chat](https://github.com/THUDM/GLM-4)** models. [24/05/26] We supported **[SimPO](https://arxiv.org/abs/2405.14734)** algorithm for preference learning. See [examples](examples/README.md) for usage. diff --git a/README_zh.md b/README_zh.md index bdb61b8b..d8e17b29 100644 --- a/README_zh.md +++ b/README_zh.md @@ -71,7 +71,7 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd ## 更新日志 -[24/06/05] 我们支持了 **GLM-4-9B** 和 **GLM-4-9B-Chat** 模型的微调。 +[24/06/05] 我们支持了 **[GLM-4-9B/GLM-4-9B-Chat](https://github.com/THUDM/GLM-4)** 模型的微调。 [24/05/26] 我们支持了 **[SimPO](https://arxiv.org/abs/2405.14734)** 偏好对齐算法。详细用法请参照 [examples](examples/README_zh.md)。 From 83a005e3d404f5a8ccb7b8ac17c50db75df4e8d4 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 5 Jun 2024 16:56:54 +0800 Subject: [PATCH 069/169] fix #4079 --- requirements.txt | 1 + setup.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e17954e3..9e00555e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,6 +7,7 @@ gradio>=4.0.0 scipy einops sentencepiece +tiktoken protobuf uvicorn pydantic diff --git a/setup.py b/setup.py index 23f532e7..54f971ca 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ extra_require = { "gptq": ["optimum>=1.16.0", "auto-gptq>=0.5.0"], "awq": ["autoawq"], "aqlm": ["aqlm[gpu]>=1.1.0"], - "qwen": ["tiktoken", "transformers_stream_generator"], + "qwen": ["transformers_stream_generator"], "modelscope": ["modelscope"], "quality": ["ruff"], } From 2c0305266291fdb163c4445db227d4c77529f3b5 Mon Sep 17 00:00:00 2001 From: MengqingCao Date: Wed, 5 Jun 2024 09:37:36 +0000 Subject: [PATCH 070/169] modify export_device option --- src/llamafactory/webui/components/export.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llamafactory/webui/components/export.py b/src/llamafactory/webui/components/export.py index 32bedffb..791a833b 100644 --- a/src/llamafactory/webui/components/export.py +++ b/src/llamafactory/webui/components/export.py @@ -89,7 +89,7 @@ def create_export_tab(engine: "Engine") -> Dict[str, "Component"]: export_size = gr.Slider(minimum=1, maximum=100, value=1, step=1) export_quantization_bit = gr.Dropdown(choices=["none"] + GPTQ_BITS, value="none") export_quantization_dataset = gr.Textbox(value="data/c4_demo.json") - export_device = gr.Radio(choices=["cpu", "cuda", "npu"], value="cpu") + export_device = gr.Radio(choices=["cpu", "cuda/npu"], value="cpu") export_legacy_format = gr.Checkbox() with gr.Row(): From 67fe822324a9f830175e44f89acdd9d759b38852 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 00:50:32 +0800 Subject: [PATCH 071/169] fix #4090 --- requirements.txt | 2 +- src/llamafactory/extras/misc.py | 2 +- src/llamafactory/train/dpo/trainer.py | 29 ++++++++++----------------- 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/requirements.txt b/requirements.txt index 9e00555e..7b6cbee9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ transformers>=4.41.2 datasets>=2.16.0 accelerate>=0.30.1 peft>=0.11.1 -trl>=0.8.6 +trl>=0.9.3 gradio>=4.0.0 scipy einops diff --git a/src/llamafactory/extras/misc.py b/src/llamafactory/extras/misc.py index 638c24cf..78f71847 100644 --- a/src/llamafactory/extras/misc.py +++ b/src/llamafactory/extras/misc.py @@ -65,7 +65,7 @@ def check_dependencies() -> None: require_version("datasets>=2.16.0", "To fix: pip install datasets>=2.16.0") require_version("accelerate>=0.30.1", "To fix: pip install accelerate>=0.30.1") require_version("peft>=0.11.1", "To fix: pip install peft>=0.11.1") - require_version("trl>=0.8.6", "To fix: pip install trl>=0.8.6") + require_version("trl>=0.9.3", "To fix: pip install trl>=0.9.3") def count_parameters(model: torch.nn.Module) -> Tuple[int, int]: diff --git a/src/llamafactory/train/dpo/trainer.py b/src/llamafactory/train/dpo/trainer.py index ec1de810..2bbe6a06 100644 --- a/src/llamafactory/train/dpo/trainer.py +++ b/src/llamafactory/train/dpo/trainer.py @@ -93,18 +93,6 @@ class CustomDPOTrainer(DPOTrainer): output_dir = output_dir if output_dir is not None else self.args.output_dir getattr(self.processor, "image_processor").save_pretrained(output_dir) - def sft_loss(self, batch: Dict[str, "torch.Tensor"], chosen_logits: "torch.FloatTensor") -> "torch.Tensor": - r""" - Computes supervised cross-entropy loss of given labels under the given logits. - - Returns: - A tensor of shape (batch_size,) containing the cross-entropy loss of each samples. - """ - batch_size = batch["input_ids"].size(0) // 2 - chosen_labels, _ = batch["labels"].split(batch_size, dim=0) - chosen_logps = self.get_batch_logps(chosen_logits, chosen_labels, average_log_prob=True) - return -chosen_logps - def odds_ratio_loss(self, chosen_logps: "torch.Tensor", rejected_logps: "torch.Tensor") -> "torch.Tensor": r""" Computes ORPO's odds ratio (OR) loss for batched log probabilities of the policy model. @@ -156,9 +144,9 @@ class CustomDPOTrainer(DPOTrainer): def concatenated_forward( self, model: "PreTrainedModel", batch: Dict[str, "torch.Tensor"] - ) -> Tuple["torch.Tensor", "torch.Tensor", "torch.Tensor", "torch.Tensor"]: + ) -> Tuple["torch.Tensor", "torch.Tensor", "torch.Tensor", "torch.Tensor", "torch.Tensor"]: r""" - Computes the sum log probabilities of the labels under the given logits if loss_type != IPO. + Computes the sum log probabilities of the labels under given logits if loss_type is not IPO, ORPO or SimPO. Otherwise the average log probabilities. """ @@ -167,17 +155,20 @@ class CustomDPOTrainer(DPOTrainer): all_logits: "torch.Tensor" = model(**batch, return_dict=True, use_cache=False).logits.to(torch.float32) - all_logps = self.get_batch_logps( + all_logps, valid_length = self.get_batch_logps( logits=all_logits, labels=batch["labels"], - average_log_prob=(self.loss_type in ["ipo", "orpo", "simpo"]), is_encoder_decoder=self.is_encoder_decoder, label_pad_token_id=self.label_pad_token_id, ) + if self.loss_type in ["ipo", "orpo", "simpo"]: + all_logps = all_logps / valid_length + batch_size = batch["input_ids"].size(0) // 2 chosen_logps, rejected_logps = all_logps.split(batch_size, dim=0) chosen_logits, rejected_logits = all_logits.split(batch_size, dim=0) - return chosen_logps, rejected_logps, chosen_logits, rejected_logits + chosen_length, _ = valid_length.split(batch_size, dim=0) + return chosen_logps, rejected_logps, chosen_logits, rejected_logits, chosen_logps / chosen_length def compute_reference_log_probs( self, model: "PreTrainedModel", batch: Dict[str, "torch.Tensor"] @@ -201,6 +192,7 @@ class CustomDPOTrainer(DPOTrainer): reference_rejected_logps, _, _, + _, ) = self.concatenated_forward(ref_model, batch) return reference_chosen_logps, reference_rejected_logps @@ -220,6 +212,7 @@ class CustomDPOTrainer(DPOTrainer): policy_rejected_logps, policy_chosen_logits, policy_rejected_logits, + policy_chosen_logps_avg, ) = self.concatenated_forward(model, batch) reference_chosen_logps, reference_rejected_logps = self.compute_reference_log_probs(model, batch) @@ -229,7 +222,7 @@ class CustomDPOTrainer(DPOTrainer): reference_chosen_logps, reference_rejected_logps, ) - sft_loss = self.sft_loss(batch, policy_chosen_logits) # compute chosen_logps with masks + sft_loss = -policy_chosen_logps_avg if self.ftx_gamma > 1e-6: losses += self.ftx_gamma * sft_loss From d4908d57085bbcfcd29e0a8d4ee6425318ee4285 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 01:28:14 +0800 Subject: [PATCH 072/169] add llamafactory-cli env --- .github/ISSUE_TEMPLATE/bug-report.yml | 6 +-- src/llamafactory/cli.py | 6 ++- src/llamafactory/extras/env.py | 54 +++++++++++++++++++++++++++ src/llamafactory/extras/packages.py | 4 ++ 4 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 src/llamafactory/extras/env.py diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 82620fdb..1d962200 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -20,10 +20,10 @@ body: attributes: label: System Info description: | - Please share your system info with us. You can run the command **transformers-cli env** and copy-paste its output below. - 请提供您的系统信息。您可以在命令行运行 **transformers-cli env** 并将其输出复制到该文本框中。 + Please share your system info with us. You can run the command **llamafactory-cli env** and copy-paste its output below. + 请提供您的系统信息。您可以在命令行运行 **llamafactory-cli env** 并将其输出复制到该文本框中。 - placeholder: transformers version, platform, python version, ... + placeholder: llamafactory version, platform, python version, ... - type: textarea id: reproduction diff --git a/src/llamafactory/cli.py b/src/llamafactory/cli.py index c14ae6ec..fbe18d86 100644 --- a/src/llamafactory/cli.py +++ b/src/llamafactory/cli.py @@ -8,6 +8,7 @@ from . import launcher from .api.app import run_api from .chat.chat_model import run_chat from .eval.evaluator import run_eval +from .extras.env import VERSION, print_env from .extras.logging import get_logger from .extras.misc import get_device_count from .train.tuner import export_model, run_exp @@ -29,8 +30,6 @@ USAGE = ( + "-" * 70 ) -VERSION = "0.7.2.dev0" - WELCOME = ( "-" * 58 + "\n" @@ -50,6 +49,7 @@ logger = get_logger(__name__) class Command(str, Enum): API = "api" CHAT = "chat" + ENV = "env" EVAL = "eval" EXPORT = "export" TRAIN = "train" @@ -65,6 +65,8 @@ def main(): run_api() elif command == Command.CHAT: run_chat() + elif command == Command.ENV: + print_env() elif command == Command.EVAL: run_eval() elif command == Command.EXPORT: diff --git a/src/llamafactory/extras/env.py b/src/llamafactory/extras/env.py new file mode 100644 index 00000000..27453a6b --- /dev/null +++ b/src/llamafactory/extras/env.py @@ -0,0 +1,54 @@ +import platform + +import accelerate +import datasets +import peft +import torch +import transformers +import trl +from transformers.utils import is_bitsandbytes_available, is_torch_cuda_available, is_torch_npu_available + +from .packages import is_deepspeed_available, is_vllm_available + + +VERSION = "0.7.2.dev0" + + +def print_env() -> None: + info = { + "`llamafactory` version": VERSION, + "Platform": platform.platform(), + "Python version": platform.python_version(), + "PyTorch version": torch.__version__, + "Transformers version": transformers.__version__, + "Datasets version": datasets.__version__, + "Accelerate version": accelerate.__version__, + "PEFT version": peft.__version__, + "TRL version": trl.__version__, + } + + if is_torch_cuda_available(): + info["PyTorch version"] += " (GPU)" + info["GPU type"] = torch.cuda.get_device_name() + + if is_torch_npu_available(): + info["PyTorch version"] += " (NPU)" + info["NPU type"] = torch.npu.get_device_name() + info["CANN version"] = torch.version.cann + + if is_deepspeed_available(): + import deepspeed # type: ignore + + info["DeepSpeed version"] = deepspeed.__version__ + + if is_bitsandbytes_available(): + import bitsandbytes + + info["Bitsandbytes version"] = bitsandbytes.__version__ + + if is_vllm_available(): + import vllm + + info["vLLM version"] = vllm.__version__ + + print("\n".join(["- {}: {}".format(key, value) for key, value in info.items()]) + "\n") diff --git a/src/llamafactory/extras/packages.py b/src/llamafactory/extras/packages.py index 4c9e6492..fe056e2d 100644 --- a/src/llamafactory/extras/packages.py +++ b/src/llamafactory/extras/packages.py @@ -20,6 +20,10 @@ def _get_package_version(name: str) -> "Version": return version.parse("0.0.0") +def is_deepspeed_available(): + return _is_package_available("deepspeed") + + def is_fastapi_available(): return _is_package_available("fastapi") From 4dc0632145f555ac564b0d6b560d28cbcb3ddded Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 01:39:02 +0800 Subject: [PATCH 073/169] fix setup --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 54f971ca..7a5b9304 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ from setuptools import find_packages, setup def get_version(): - with open(os.path.join("src", "llamafactory", "cli.py"), "r", encoding="utf-8") as f: + with open(os.path.join("src", "llamafactory", "extras", "env.py"), "r", encoding="utf-8") as f: file_content = f.read() pattern = r"{}\W*=\W*\"([^\"]+)\"".format("VERSION") (version,) = re.findall(pattern, file_content) From dc4a00dd63769dc02d898c8bad2c158e4e5c0447 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 01:49:20 +0800 Subject: [PATCH 074/169] update train hparams --- examples/extras/badam/llama3_lora_sft.yaml | 2 +- examples/extras/fsdp_qlora/llama3_lora_sft.yaml | 2 +- examples/extras/galore/llama3_full_sft.yaml | 2 +- examples/extras/llama_pro/llama3_freeze_sft.yaml | 2 +- examples/extras/loraplus/llama3_lora_sft.yaml | 2 +- examples/extras/mod/llama3_full_sft.yaml | 2 +- examples/full_multi_gpu/llama3_full_sft.yaml | 2 +- examples/lora_multi_gpu/llama3_lora_sft.yaml | 2 +- examples/lora_multi_gpu/llama3_lora_sft_ds.yaml | 2 +- examples/lora_multi_npu/llama3_lora_sft_ds.yaml | 2 +- examples/lora_single_gpu/llama3_lora_dpo.yaml | 2 +- examples/lora_single_gpu/llama3_lora_kto.yaml | 2 +- examples/lora_single_gpu/llama3_lora_pretrain.yaml | 2 +- examples/lora_single_gpu/llama3_lora_reward.yaml | 2 +- examples/lora_single_gpu/llama3_lora_sft.yaml | 2 +- examples/lora_single_gpu/llava1_5_lora_sft.yaml | 2 +- examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml | 2 +- examples/qlora_single_gpu/llama3_lora_sft_awq.yaml | 2 +- examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml | 2 +- examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml | 2 +- src/llamafactory/extras/env.py | 2 +- src/llamafactory/webui/runner.py | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/examples/extras/badam/llama3_lora_sft.yaml b/examples/extras/badam/llama3_lora_sft.yaml index 242e63ab..a78de2fa 100644 --- a/examples/extras/badam/llama3_lora_sft.yaml +++ b/examples/extras/badam/llama3_lora_sft.yaml @@ -37,5 +37,5 @@ pure_bf16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/extras/fsdp_qlora/llama3_lora_sft.yaml b/examples/extras/fsdp_qlora/llama3_lora_sft.yaml index 920d8fdb..348459b8 100644 --- a/examples/extras/fsdp_qlora/llama3_lora_sft.yaml +++ b/examples/extras/fsdp_qlora/llama3_lora_sft.yaml @@ -38,5 +38,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/extras/galore/llama3_full_sft.yaml b/examples/extras/galore/llama3_full_sft.yaml index 3db31fed..605545de 100644 --- a/examples/extras/galore/llama3_full_sft.yaml +++ b/examples/extras/galore/llama3_full_sft.yaml @@ -38,5 +38,5 @@ pure_bf16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/extras/llama_pro/llama3_freeze_sft.yaml b/examples/extras/llama_pro/llama3_freeze_sft.yaml index 214f411a..444a1113 100644 --- a/examples/extras/llama_pro/llama3_freeze_sft.yaml +++ b/examples/extras/llama_pro/llama3_freeze_sft.yaml @@ -36,5 +36,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/extras/loraplus/llama3_lora_sft.yaml b/examples/extras/loraplus/llama3_lora_sft.yaml index 9936bcd3..960f613e 100644 --- a/examples/extras/loraplus/llama3_lora_sft.yaml +++ b/examples/extras/loraplus/llama3_lora_sft.yaml @@ -35,5 +35,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/extras/mod/llama3_full_sft.yaml b/examples/extras/mod/llama3_full_sft.yaml index edfec44e..df03c1e0 100644 --- a/examples/extras/mod/llama3_full_sft.yaml +++ b/examples/extras/mod/llama3_full_sft.yaml @@ -35,5 +35,5 @@ pure_bf16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/full_multi_gpu/llama3_full_sft.yaml b/examples/full_multi_gpu/llama3_full_sft.yaml index b8873e3a..40b62f24 100644 --- a/examples/full_multi_gpu/llama3_full_sft.yaml +++ b/examples/full_multi_gpu/llama3_full_sft.yaml @@ -37,5 +37,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/lora_multi_gpu/llama3_lora_sft.yaml b/examples/lora_multi_gpu/llama3_lora_sft.yaml index 5e5dd9e6..9be3c780 100644 --- a/examples/lora_multi_gpu/llama3_lora_sft.yaml +++ b/examples/lora_multi_gpu/llama3_lora_sft.yaml @@ -37,5 +37,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml b/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml index e8dee216..41152243 100644 --- a/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml +++ b/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml @@ -38,5 +38,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/lora_multi_npu/llama3_lora_sft_ds.yaml b/examples/lora_multi_npu/llama3_lora_sft_ds.yaml index 825b8450..1ed24d04 100644 --- a/examples/lora_multi_npu/llama3_lora_sft_ds.yaml +++ b/examples/lora_multi_npu/llama3_lora_sft_ds.yaml @@ -38,5 +38,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/lora_single_gpu/llama3_lora_dpo.yaml b/examples/lora_single_gpu/llama3_lora_dpo.yaml index 62752e57..158c9e04 100644 --- a/examples/lora_single_gpu/llama3_lora_dpo.yaml +++ b/examples/lora_single_gpu/llama3_lora_dpo.yaml @@ -36,5 +36,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/lora_single_gpu/llama3_lora_kto.yaml b/examples/lora_single_gpu/llama3_lora_kto.yaml index 6f689818..ead221e9 100644 --- a/examples/lora_single_gpu/llama3_lora_kto.yaml +++ b/examples/lora_single_gpu/llama3_lora_kto.yaml @@ -34,5 +34,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/lora_single_gpu/llama3_lora_pretrain.yaml b/examples/lora_single_gpu/llama3_lora_pretrain.yaml index 54c5d89a..9167a893 100644 --- a/examples/lora_single_gpu/llama3_lora_pretrain.yaml +++ b/examples/lora_single_gpu/llama3_lora_pretrain.yaml @@ -33,5 +33,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/lora_single_gpu/llama3_lora_reward.yaml b/examples/lora_single_gpu/llama3_lora_reward.yaml index c82f9414..91663057 100644 --- a/examples/lora_single_gpu/llama3_lora_reward.yaml +++ b/examples/lora_single_gpu/llama3_lora_reward.yaml @@ -34,5 +34,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/lora_single_gpu/llama3_lora_sft.yaml b/examples/lora_single_gpu/llama3_lora_sft.yaml index 429cb6af..cc93d05a 100644 --- a/examples/lora_single_gpu/llama3_lora_sft.yaml +++ b/examples/lora_single_gpu/llama3_lora_sft.yaml @@ -34,5 +34,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/lora_single_gpu/llava1_5_lora_sft.yaml b/examples/lora_single_gpu/llava1_5_lora_sft.yaml index acab4884..95c1d40d 100644 --- a/examples/lora_single_gpu/llava1_5_lora_sft.yaml +++ b/examples/lora_single_gpu/llava1_5_lora_sft.yaml @@ -35,5 +35,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml b/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml index 53cc12e2..23301de5 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml @@ -34,5 +34,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml b/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml index 1a92f822..40a290a3 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml @@ -34,5 +34,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml b/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml index c7f72c66..6652d8cf 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml @@ -35,5 +35,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml b/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml index 45caf17c..323ea7c6 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml @@ -34,5 +34,5 @@ fp16: true ### eval val_size: 0.1 per_device_eval_batch_size: 1 -evaluation_strategy: steps +eval_strategy: steps eval_steps: 500 diff --git a/src/llamafactory/extras/env.py b/src/llamafactory/extras/env.py index 27453a6b..059730f1 100644 --- a/src/llamafactory/extras/env.py +++ b/src/llamafactory/extras/env.py @@ -51,4 +51,4 @@ def print_env() -> None: info["vLLM version"] = vllm.__version__ - print("\n".join(["- {}: {}".format(key, value) for key, value in info.items()]) + "\n") + print("\n" + "\n".join(["- {}: {}".format(key, value) for key, value in info.items()]) + "\n") diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index 6e1facef..d35fd903 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -200,7 +200,7 @@ class Runner: # eval config if get("train.val_size") > 1e-6 and args["stage"] != "ppo": args["val_size"] = get("train.val_size") - args["evaluation_strategy"] = "steps" + args["eval_strategy"] = "steps" args["eval_steps"] = args["save_steps"] args["per_device_eval_batch_size"] = args["per_device_train_batch_size"] From 946f60113630d659e7048bffbb3aa7132ac3ecd1 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 02:29:55 +0800 Subject: [PATCH 075/169] support image input in api #3971 #4061 --- README.md | 3 +++ README_zh.md | 3 +++ src/llamafactory/api/chat.py | 39 ++++++++++++++++++++++++++------ src/llamafactory/api/protocol.py | 12 +++++++++- 4 files changed, 49 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5e8bc8eb..3eebf355 100644 --- a/README.md +++ b/README.md @@ -456,6 +456,9 @@ docker compose -f ./docker-compose.yml up -d CUDA_VISIBLE_DEVICES=0,1 API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml ``` +> [!TIP] +> Visit https://platform.openai.com/docs/api-reference/chat/create for API document. + ### Download from ModelScope Hub If you have trouble with downloading models and datasets from Hugging Face, you can use ModelScope. diff --git a/README_zh.md b/README_zh.md index d8e17b29..09a7f330 100644 --- a/README_zh.md +++ b/README_zh.md @@ -454,6 +454,9 @@ docker compose -f ./docker-compose.yml up -d CUDA_VISIBLE_DEVICES=0,1 API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml ``` +> [!TIP] +> API 文档请查阅 https://platform.openai.com/docs/api-reference/chat/create。 + ### 从魔搭社区下载 如果您在 Hugging Face 模型和数据集的下载中遇到了问题,可以通过下述方法使用魔搭社区。 diff --git a/src/llamafactory/api/chat.py b/src/llamafactory/api/chat.py index b7a08f0b..712b6940 100644 --- a/src/llamafactory/api/chat.py +++ b/src/llamafactory/api/chat.py @@ -1,10 +1,11 @@ import json +import os import uuid from typing import TYPE_CHECKING, AsyncGenerator, Dict, List, Optional, Tuple from ..data import Role as DataRole from ..extras.logging import get_logger -from ..extras.packages import is_fastapi_available +from ..extras.packages import is_fastapi_available, is_pillow_available from .common import dictify, jsonify from .protocol import ( ChatCompletionMessage, @@ -25,7 +26,14 @@ if is_fastapi_available(): from fastapi import HTTPException, status +if is_pillow_available(): + import requests + from PIL import Image + + if TYPE_CHECKING: + from numpy.typing import NDArray + from ..chat import ChatModel from .protocol import ChatCompletionRequest, ScoreEvaluationRequest @@ -40,7 +48,9 @@ ROLE_MAPPING = { } -def _process_request(request: "ChatCompletionRequest") -> Tuple[List[Dict[str, str]], str, str]: +def _process_request( + request: "ChatCompletionRequest", +) -> Tuple[List[Dict[str, str]], Optional[str], Optional[str], Optional["NDArray"]]: logger.info("==== request ====\n{}".format(json.dumps(dictify(request), indent=2, ensure_ascii=False))) if len(request.messages) == 0: @@ -49,12 +59,13 @@ def _process_request(request: "ChatCompletionRequest") -> Tuple[List[Dict[str, s if request.messages[0].role == Role.SYSTEM: system = request.messages.pop(0).content else: - system = "" + system = None if len(request.messages) % 2 == 0: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Only supports u/a/u/a/u...") input_messages = [] + image = None for i, message in enumerate(request.messages): if i % 2 == 0 and message.role not in [Role.USER, Role.TOOL]: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Invalid role") @@ -66,6 +77,18 @@ def _process_request(request: "ChatCompletionRequest") -> Tuple[List[Dict[str, s arguments = message.tool_calls[0].function.arguments content = json.dumps({"name": name, "argument": arguments}, ensure_ascii=False) input_messages.append({"role": ROLE_MAPPING[Role.FUNCTION], "content": content}) + elif isinstance(message.content, list): + for input_item in message.content: + if input_item.type == "text": + input_messages.append({"role": ROLE_MAPPING[message.role], "content": input_item.text}) + else: + image_url = input_item.image_url.url + if os.path.isfile(image_url): + image_path = open(image_url, "rb") + else: + image_path = requests.get(image_url, stream=True).raw + + image = Image.open(image_path).convert("RGB") else: input_messages.append({"role": ROLE_MAPPING[message.role], "content": message.content}) @@ -76,9 +99,9 @@ def _process_request(request: "ChatCompletionRequest") -> Tuple[List[Dict[str, s except Exception: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Invalid tools") else: - tools = "" + tools = None - return input_messages, system, tools + return input_messages, system, tools, image def _create_stream_chat_completion_chunk( @@ -97,11 +120,12 @@ async def create_chat_completion_response( request: "ChatCompletionRequest", chat_model: "ChatModel" ) -> "ChatCompletionResponse": completion_id = "chatcmpl-{}".format(uuid.uuid4().hex) - input_messages, system, tools = _process_request(request) + input_messages, system, tools, image = _process_request(request) responses = await chat_model.achat( input_messages, system, tools, + image, do_sample=request.do_sample, temperature=request.temperature, top_p=request.top_p, @@ -145,7 +169,7 @@ async def create_stream_chat_completion_response( request: "ChatCompletionRequest", chat_model: "ChatModel" ) -> AsyncGenerator[str, None]: completion_id = "chatcmpl-{}".format(uuid.uuid4().hex) - input_messages, system, tools = _process_request(request) + input_messages, system, tools, image = _process_request(request) if tools: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Cannot stream function calls.") @@ -159,6 +183,7 @@ async def create_stream_chat_completion_response( input_messages, system, tools, + image, do_sample=request.do_sample, temperature=request.temperature, top_p=request.top_p, diff --git a/src/llamafactory/api/protocol.py b/src/llamafactory/api/protocol.py index 525fa6a7..055fa781 100644 --- a/src/llamafactory/api/protocol.py +++ b/src/llamafactory/api/protocol.py @@ -56,9 +56,19 @@ class FunctionCall(BaseModel): function: Function +class ImageURL(BaseModel): + url: str + + +class MultimodalInputItem(BaseModel): + type: Literal["text", "image_url"] + text: Optional[str] = None + image_url: Optional[ImageURL] = None + + class ChatMessage(BaseModel): role: Role - content: Optional[str] = None + content: Optional[Union[str, List[MultimodalInputItem]]] = None tool_calls: Optional[List[FunctionCall]] = None From a12a506c3d2ba85975a5990c46d2e055cdfe0f2e Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 02:43:19 +0800 Subject: [PATCH 076/169] support train from scratch #4033 #4075 --- src/llamafactory/hparams/model_args.py | 4 ++++ src/llamafactory/model/loader.py | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 7003cbee..a3b5b2a6 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -101,6 +101,10 @@ class ModelArguments: default=False, metadata={"help": "Whether or not to upcast the output of lm_head in fp32."}, ) + train_from_scratch: bool = field( + default=False, + metadata={"help": "Whether or not to randomly initialize the model weights."}, + ) infer_backend: Literal["huggingface", "vllm"] = field( default="huggingface", metadata={"help": "Backend engine used at inference."}, diff --git a/src/llamafactory/model/loader.py b/src/llamafactory/model/loader.py index 49b347d5..8f3309b3 100644 --- a/src/llamafactory/model/loader.py +++ b/src/llamafactory/model/loader.py @@ -131,6 +131,8 @@ def load_model( model = load_mod_pretrained_model(**init_kwargs) elif model_args.visual_inputs: model = AutoModelForVision2Seq.from_pretrained(**init_kwargs) + elif model_args.train_from_scratch: + model = AutoModelForCausalLM.from_config(config) else: model = AutoModelForCausalLM.from_pretrained(**init_kwargs) From 8fcc79e1e66a4e952710ac8c98685437d924361a Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 02:53:27 +0800 Subject: [PATCH 077/169] add vllm_dtype arg #3387 #3717 --- src/llamafactory/chat/vllm_engine.py | 7 ++----- src/llamafactory/hparams/model_args.py | 4 ++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/llamafactory/chat/vllm_engine.py b/src/llamafactory/chat/vllm_engine.py index 8a067754..e193704a 100644 --- a/src/llamafactory/chat/vllm_engine.py +++ b/src/llamafactory/chat/vllm_engine.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, AsyncGenerator, AsyncIterator, Dict, List, Opt from ..data import get_template_and_fix_tokenizer from ..extras.logging import get_logger -from ..extras.misc import get_device_count, infer_optim_dtype +from ..extras.misc import get_device_count from ..extras.packages import is_vllm_available from ..model import load_config, load_tokenizer from ..model.utils.visual import LlavaMultiModalProjectorForYiVLForVLLM @@ -35,8 +35,6 @@ class VllmEngine(BaseEngine): generating_args: "GeneratingArguments", ) -> None: config = load_config(model_args) # may download model from ms hub - infer_dtype = infer_optim_dtype(model_dtype=getattr(config, "torch_dtype", None)) - infer_dtype = str(infer_dtype).split(".")[-1] self.can_generate = finetuning_args.stage == "sft" tokenizer_module = load_tokenizer(model_args) @@ -50,7 +48,7 @@ class VllmEngine(BaseEngine): "model": model_args.model_name_or_path, "trust_remote_code": True, "download_dir": model_args.cache_dir, - "dtype": infer_dtype, + "dtype": model_args.vllm_dtype, "max_model_len": model_args.vllm_maxlen, "tensor_parallel_size": get_device_count() or 1, "gpu_memory_utilization": model_args.vllm_gpu_util, @@ -70,7 +68,6 @@ class VllmEngine(BaseEngine): engine_args["image_input_shape"] = "1,3,{},{}".format(image_size, image_size) engine_args["image_feature_size"] = self.image_feature_size if getattr(config, "is_yi_vl_derived_model", None): - # bug in vllm 0.4.2, see: https://github.com/vllm-project/vllm/pull/4828 import vllm.model_executor.models.llava logger.info("Detected Yi-VL model, applying projector patch.") diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index a3b5b2a6..0434f426 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -125,6 +125,10 @@ class ModelArguments: default=8, metadata={"help": "Maximum rank of all LoRAs in the vLLM engine."}, ) + vllm_dtype: Literal["auto", "float16", "bfloat16", "float32"] = field( + default="auto", + metadata={"help": "Data type for model weights and activations in the vLLM engine."}, + ) offload_folder: str = field( default="offload", metadata={"help": "Path to offload model weights."}, From af2c3cbee4372724cf00379d8494f5000dc8a3df Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Thu, 6 Jun 2024 03:14:23 +0800 Subject: [PATCH 078/169] Update model_args.py --- src/llamafactory/hparams/model_args.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 99c02850..024bc2f8 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -145,9 +145,9 @@ class ModelArguments: default=1, metadata={"help": "The file shard size (in GB) of the exported model."}, ) - export_device: Literal["cpu", "cuda", "npu"] = field( + export_device: Literal["cpu", "auto"] = field( default="cpu", - metadata={"help": "The device used in model export, use cuda to avoid addmm errors; use npu/cuda to speed up exporting."}, + metadata={"help": "The device used in model export, use `auto` to accelerate exporting."}, ) export_quantization_bit: Optional[int] = field( default=None, From feaee36c4642558c6c4e069b0fd42c20691e3ff4 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Thu, 6 Jun 2024 03:14:46 +0800 Subject: [PATCH 079/169] Update export.py --- src/llamafactory/webui/components/export.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llamafactory/webui/components/export.py b/src/llamafactory/webui/components/export.py index 791a833b..7e1493c8 100644 --- a/src/llamafactory/webui/components/export.py +++ b/src/llamafactory/webui/components/export.py @@ -89,7 +89,7 @@ def create_export_tab(engine: "Engine") -> Dict[str, "Component"]: export_size = gr.Slider(minimum=1, maximum=100, value=1, step=1) export_quantization_bit = gr.Dropdown(choices=["none"] + GPTQ_BITS, value="none") export_quantization_dataset = gr.Textbox(value="data/c4_demo.json") - export_device = gr.Radio(choices=["cpu", "cuda/npu"], value="cpu") + export_device = gr.Radio(choices=["cpu", "auto"], value="cpu") export_legacy_format = gr.Checkbox() with gr.Row(): From 7daf8366db0e161d46993fd87cf983a27a0ce2a3 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 03:33:44 +0800 Subject: [PATCH 080/169] lint --- src/llamafactory/extras/env.py | 3 ++- src/llamafactory/extras/packages.py | 4 --- src/llamafactory/webui/components/train.py | 14 +++++------ src/llamafactory/webui/engine.py | 2 +- src/llamafactory/webui/utils.py | 29 +++++++++++----------- 5 files changed, 25 insertions(+), 27 deletions(-) diff --git a/src/llamafactory/extras/env.py b/src/llamafactory/extras/env.py index 059730f1..fdccf86b 100644 --- a/src/llamafactory/extras/env.py +++ b/src/llamafactory/extras/env.py @@ -6,9 +6,10 @@ import peft import torch import transformers import trl +from transformers.integrations import is_deepspeed_available from transformers.utils import is_bitsandbytes_available, is_torch_cuda_available, is_torch_npu_available -from .packages import is_deepspeed_available, is_vllm_available +from .packages import is_vllm_available VERSION = "0.7.2.dev0" diff --git a/src/llamafactory/extras/packages.py b/src/llamafactory/extras/packages.py index fe056e2d..4c9e6492 100644 --- a/src/llamafactory/extras/packages.py +++ b/src/llamafactory/extras/packages.py @@ -20,10 +20,6 @@ def _get_package_version(name: str) -> "Version": return version.parse("0.0.0") -def is_deepspeed_available(): - return _is_package_available("deepspeed") - - def is_fastapi_available(): return _is_package_available("fastapi") diff --git a/src/llamafactory/webui/components/train.py b/src/llamafactory/webui/components/train.py index eca8f9b3..74f8ef2a 100644 --- a/src/llamafactory/webui/components/train.py +++ b/src/llamafactory/webui/components/train.py @@ -6,7 +6,7 @@ from ...extras.constants import TRAINING_STAGES from ...extras.misc import get_device_count from ...extras.packages import is_gradio_available from ..common import DEFAULT_DATA_DIR, list_checkpoints, list_datasets -from ..utils import change_stage, check_output_dir, list_output_dirs, list_config_paths +from ..utils import change_stage, check_output_dir, list_config_paths, list_output_dirs from .data import create_preview_box @@ -257,7 +257,7 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: with gr.Row(): with gr.Column(scale=3): with gr.Row(): - initial_dir = gr.Textbox(visible=False, interactive=False) + current_time = gr.Textbox(visible=False, interactive=False) output_dir = gr.Dropdown(allow_custom_value=True) config_path = gr.Dropdown(allow_custom_value=True) @@ -284,7 +284,7 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: arg_load_btn=arg_load_btn, start_btn=start_btn, stop_btn=stop_btn, - initial_dir=initial_dir, + current_time=current_time, output_dir=output_dir, config_path=config_path, device_count=device_count, @@ -315,11 +315,11 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: dataset.focus(list_datasets, [dataset_dir, training_stage], [dataset], queue=False) training_stage.change(change_stage, [training_stage], [dataset, packing], queue=False) reward_model.focus(list_checkpoints, [model_name, finetuning_type], [reward_model], queue=False) - model_name.change(list_output_dirs, [model_name, finetuning_type, initial_dir], [output_dir], queue=False) - finetuning_type.change(list_output_dirs, [model_name, finetuning_type, initial_dir], [output_dir], queue=False) + model_name.change(list_output_dirs, [model_name, finetuning_type, current_time], [output_dir], queue=False) + finetuning_type.change(list_output_dirs, [model_name, finetuning_type, current_time], [output_dir], queue=False) output_dir.change( - list_output_dirs, [model_name, finetuning_type, initial_dir], [output_dir], concurrency_limit=None + list_output_dirs, [model_name, finetuning_type, current_time], [output_dir], concurrency_limit=None ).then(check_output_dir, inputs=[lang, model_name, finetuning_type, output_dir], concurrency_limit=None) - config_path.change(list_config_paths, outputs=[config_path], concurrency_limit=None) + config_path.change(list_config_paths, [current_time], [config_path], queue=False) return elem_dict diff --git a/src/llamafactory/webui/engine.py b/src/llamafactory/webui/engine.py index 00877115..eb6142d3 100644 --- a/src/llamafactory/webui/engine.py +++ b/src/llamafactory/webui/engine.py @@ -41,7 +41,7 @@ class Engine: if not self.pure_chat: current_time = get_time() - init_dict["train.initial_dir"] = {"value": "train_{}".format(current_time)} + init_dict["train.current_time"] = {"value": current_time} init_dict["train.output_dir"] = {"value": "train_{}".format(current_time)} init_dict["train.config_path"] = {"value": "{}.yaml".format(current_time)} init_dict["eval.output_dir"] = {"value": "eval_{}".format(current_time)} diff --git a/src/llamafactory/webui/utils.py b/src/llamafactory/webui/utils.py index 0303aa31..23e62dca 100644 --- a/src/llamafactory/webui/utils.py +++ b/src/llamafactory/webui/utils.py @@ -174,11 +174,24 @@ def save_args(config_path: str, config_dict: Dict[str, Any]) -> str: return str(get_arg_save_path(config_path)) -def list_output_dirs(model_name: str, finetuning_type: str, initial_dir: str) -> "gr.Dropdown": +def list_config_paths(current_time: str) -> "gr.Dropdown": + r""" + Lists all the saved configuration files. + """ + config_files = ["{}.yaml".format(current_time)] + if os.path.isdir(DEFAULT_CONFIG_DIR): + for file_name in os.listdir(DEFAULT_CONFIG_DIR): + if file_name.endswith(".yaml"): + config_files.append(file_name) + + return gr.Dropdown(choices=config_files) + + +def list_output_dirs(model_name: str, finetuning_type: str, current_time: str) -> "gr.Dropdown": r""" Lists all the directories that can resume from. """ - output_dirs = [initial_dir] + output_dirs = ["train_{}".format(current_time)] if model_name: save_dir = get_save_dir(model_name, finetuning_type) if save_dir and os.path.isdir(save_dir): @@ -190,18 +203,6 @@ def list_output_dirs(model_name: str, finetuning_type: str, initial_dir: str) -> return gr.Dropdown(choices=output_dirs) -def list_config_paths() -> "gr.Dropdown": - """ - Lists all the saved configuration files that can be loaded. - """ - if os.path.exists(DEFAULT_CONFIG_DIR) and os.path.isdir(DEFAULT_CONFIG_DIR): - config_files = [file_name for file_name in os.listdir(DEFAULT_CONFIG_DIR) if file_name.endswith(".yaml")] - else: - config_files = [] - - return gr.Dropdown(choices=config_files) - - def check_output_dir(lang: str, model_name: str, finetuning_type: str, output_dir: str) -> None: r""" Check if output dir exists. From c23cc63d3d3c4fd8edd6c3b3ca1a2a32ec328d7d Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 03:42:50 +0800 Subject: [PATCH 081/169] add codestral 22B --- src/llamafactory/extras/constants.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index 4d7685c5..687e16cc 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -301,6 +301,16 @@ register_model_group( ) +register_model_group( + models={ + "Codestral-22B-v0.1-Chat": { + DownloadSource.DEFAULT: "mistralai/Codestral-22B-v0.1", + }, + }, + template="mistral", +) + + register_model_group( models={ "CommandR-35B-Chat": { From cae47379079ff811aa385c297481a27020a8da6b Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 03:53:28 +0800 Subject: [PATCH 082/169] lora modules: all by default --- README.md | 56 ++++++++--------- README_zh.md | 60 +++++++++---------- .../extras/fsdp_qlora/llama3_lora_sft.yaml | 2 +- examples/extras/loraplus/llama3_lora_sft.yaml | 2 +- examples/lora_multi_gpu/llama3_lora_sft.yaml | 2 +- .../lora_multi_gpu/llama3_lora_sft_ds.yaml | 2 +- .../lora_multi_npu/llama3_lora_sft_ds.yaml | 2 +- examples/lora_single_gpu/llama3_lora_dpo.yaml | 2 +- examples/lora_single_gpu/llama3_lora_kto.yaml | 2 +- examples/lora_single_gpu/llama3_lora_ppo.yaml | 2 +- .../lora_single_gpu/llama3_lora_pretrain.yaml | 2 +- .../lora_single_gpu/llama3_lora_reward.yaml | 2 +- examples/lora_single_gpu/llama3_lora_sft.yaml | 2 +- .../lora_single_gpu/llama3_preprocess.yaml | 2 +- .../lora_single_gpu/llava1_5_lora_sft.yaml | 2 +- .../llama3_lora_sft_aqlm.yaml | 2 +- .../qlora_single_gpu/llama3_lora_sft_awq.yaml | 2 +- .../llama3_lora_sft_bitsandbytes.yaml | 2 +- .../llama3_lora_sft_gptq.yaml | 2 +- src/llamafactory/extras/constants.py | 19 ------ src/llamafactory/hparams/finetuning_args.py | 15 +---- src/llamafactory/webui/common.py | 8 --- src/llamafactory/webui/runner.py | 4 +- 23 files changed, 78 insertions(+), 118 deletions(-) diff --git a/README.md b/README.md index 3eebf355..f3ced20e 100644 --- a/README.md +++ b/README.md @@ -149,34 +149,34 @@ Compared to ChatGLM's [P-Tuning](https://github.com/THUDM/ChatGLM2-6B/tree/main/ ## Supported Models -| Model | Model size | Default module | Template | -| -------------------------------------------------------- | -------------------------------- | ----------------- | --------- | -| [Baichuan2](https://huggingface.co/baichuan-inc) | 7B/13B | W_pack | baichuan2 | -| [BLOOM](https://huggingface.co/bigscience) | 560M/1.1B/1.7B/3B/7.1B/176B | query_key_value | - | -| [BLOOMZ](https://huggingface.co/bigscience) | 560M/1.1B/1.7B/3B/7.1B/176B | query_key_value | - | -| [ChatGLM3](https://huggingface.co/THUDM) | 6B | query_key_value | chatglm3 | -| [Command-R](https://huggingface.co/CohereForAI) | 35B/104B | q_proj,v_proj | cohere | -| [DeepSeek (MoE)](https://huggingface.co/deepseek-ai) | 7B/16B/67B/236B | q_proj,v_proj | deepseek | -| [Falcon](https://huggingface.co/tiiuae) | 7B/11B/40B/180B | query_key_value | falcon | -| [Gemma/CodeGemma](https://huggingface.co/google) | 2B/7B | q_proj,v_proj | gemma | -| [GLM4](https://huggingface.co/THUDM) | 9B | query_key_value | glm4 | -| [InternLM2](https://huggingface.co/internlm) | 7B/20B | wqkv | intern2 | -| [LLaMA](https://github.com/facebookresearch/llama) | 7B/13B/33B/65B | q_proj,v_proj | - | -| [LLaMA-2](https://huggingface.co/meta-llama) | 7B/13B/70B | q_proj,v_proj | llama2 | -| [LLaMA-3](https://huggingface.co/meta-llama) | 8B/70B | q_proj,v_proj | llama3 | -| [LLaVA-1.5](https://huggingface.co/llava-hf) | 7B/13B | q_proj,v_proj | vicuna | -| [Mistral/Mixtral](https://huggingface.co/mistralai) | 7B/8x7B/8x22B | q_proj,v_proj | mistral | -| [OLMo](https://huggingface.co/allenai) | 1B/7B | q_proj,v_proj | - | -| [PaliGemma](https://huggingface.co/google) | 3B | q_proj,v_proj | gemma | -| [Phi-1.5/2](https://huggingface.co/microsoft) | 1.3B/2.7B | q_proj,v_proj | - | -| [Phi-3](https://huggingface.co/microsoft) | 4B/7B/14B | qkv_proj | phi | -| [Qwen](https://huggingface.co/Qwen) | 1.8B/7B/14B/72B | c_attn | qwen | -| [Qwen1.5 (Code/MoE)](https://huggingface.co/Qwen) | 0.5B/1.8B/4B/7B/14B/32B/72B/110B | q_proj,v_proj | qwen | -| [StarCoder2](https://huggingface.co/bigcode) | 3B/7B/15B | q_proj,v_proj | - | -| [XVERSE](https://huggingface.co/xverse) | 7B/13B/65B | q_proj,v_proj | xverse | -| [Yi (1/1.5)](https://huggingface.co/01-ai) | 6B/9B/34B | q_proj,v_proj | yi | -| [Yi-VL](https://huggingface.co/01-ai) | 6B/34B | q_proj,v_proj | yi_vl | -| [Yuan](https://huggingface.co/IEITYuan) | 2B/51B/102B | q_proj,v_proj | yuan | +| Model | Model size | Template | +| -------------------------------------------------------- | -------------------------------- | --------- | +| [Baichuan2](https://huggingface.co/baichuan-inc) | 7B/13B | baichuan2 | +| [BLOOM](https://huggingface.co/bigscience) | 560M/1.1B/1.7B/3B/7.1B/176B | - | +| [BLOOMZ](https://huggingface.co/bigscience) | 560M/1.1B/1.7B/3B/7.1B/176B | - | +| [ChatGLM3](https://huggingface.co/THUDM) | 6B | chatglm3 | +| [Command-R](https://huggingface.co/CohereForAI) | 35B/104B | cohere | +| [DeepSeek (MoE)](https://huggingface.co/deepseek-ai) | 7B/16B/67B/236B | deepseek | +| [Falcon](https://huggingface.co/tiiuae) | 7B/11B/40B/180B | falcon | +| [Gemma/CodeGemma](https://huggingface.co/google) | 2B/7B | gemma | +| [GLM4](https://huggingface.co/THUDM) | 9B | glm4 | +| [InternLM2](https://huggingface.co/internlm) | 7B/20B | intern2 | +| [LLaMA](https://github.com/facebookresearch/llama) | 7B/13B/33B/65B | - | +| [LLaMA-2](https://huggingface.co/meta-llama) | 7B/13B/70B | llama2 | +| [LLaMA-3](https://huggingface.co/meta-llama) | 8B/70B | llama3 | +| [LLaVA-1.5](https://huggingface.co/llava-hf) | 7B/13B | vicuna | +| [Mistral/Mixtral](https://huggingface.co/mistralai) | 7B/8x7B/8x22B | mistral | +| [OLMo](https://huggingface.co/allenai) | 1B/7B | - | +| [PaliGemma](https://huggingface.co/google) | 3B | gemma | +| [Phi-1.5/2](https://huggingface.co/microsoft) | 1.3B/2.7B | - | +| [Phi-3](https://huggingface.co/microsoft) | 4B/7B/14B | phi | +| [Qwen](https://huggingface.co/Qwen) | 1.8B/7B/14B/72B | qwen | +| [Qwen1.5 (Code/MoE)](https://huggingface.co/Qwen) | 0.5B/1.8B/4B/7B/14B/32B/72B/110B | qwen | +| [StarCoder2](https://huggingface.co/bigcode) | 3B/7B/15B | - | +| [XVERSE](https://huggingface.co/xverse) | 7B/13B/65B | xverse | +| [Yi (1/1.5)](https://huggingface.co/01-ai) | 6B/9B/34B | yi | +| [Yi-VL](https://huggingface.co/01-ai) | 6B/34B | yi_vl | +| [Yuan](https://huggingface.co/IEITYuan) | 2B/51B/102B | yuan | > [!NOTE] > **Default module** is used for the `lora_target` argument, you can use `lora_target: all` to specify all the available modules for better convergence. diff --git a/README_zh.md b/README_zh.md index 09a7f330..982c0123 100644 --- a/README_zh.md +++ b/README_zh.md @@ -149,41 +149,39 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd ## 模型 -| 模型名 | 模型大小 | 默认模块 | Template | -| -------------------------------------------------------- | -------------------------------- | ----------------- | --------- | -| [Baichuan2](https://huggingface.co/baichuan-inc) | 7B/13B | W_pack | baichuan2 | -| [BLOOM](https://huggingface.co/bigscience) | 560M/1.1B/1.7B/3B/7.1B/176B | query_key_value | - | -| [BLOOMZ](https://huggingface.co/bigscience) | 560M/1.1B/1.7B/3B/7.1B/176B | query_key_value | - | -| [ChatGLM3](https://huggingface.co/THUDM) | 6B | query_key_value | chatglm3 | -| [Command-R](https://huggingface.co/CohereForAI) | 35B/104B | q_proj,v_proj | cohere | -| [DeepSeek (MoE)](https://huggingface.co/deepseek-ai) | 7B/16B/67B/236B | q_proj,v_proj | deepseek | -| [Falcon](https://huggingface.co/tiiuae) | 7B/11B/40B/180B | query_key_value | falcon | -| [Gemma/CodeGemma](https://huggingface.co/google) | 2B/7B | q_proj,v_proj | gemma | -| [GLM4](https://huggingface.co/THUDM) | 9B | query_key_value | glm4 | -| [InternLM2](https://huggingface.co/internlm) | 7B/20B | wqkv | intern2 | -| [LLaMA](https://github.com/facebookresearch/llama) | 7B/13B/33B/65B | q_proj,v_proj | - | -| [LLaMA-2](https://huggingface.co/meta-llama) | 7B/13B/70B | q_proj,v_proj | llama2 | -| [LLaMA-3](https://huggingface.co/meta-llama) | 8B/70B | q_proj,v_proj | llama3 | -| [LLaVA-1.5](https://huggingface.co/llava-hf) | 7B/13B | q_proj,v_proj | vicuna | -| [Mistral/Mixtral](https://huggingface.co/mistralai) | 7B/8x7B/8x22B | q_proj,v_proj | mistral | -| [OLMo](https://huggingface.co/allenai) | 1B/7B | q_proj,v_proj | - | -| [PaliGemma](https://huggingface.co/google) | 3B | q_proj,v_proj | gemma | -| [Phi-1.5/2](https://huggingface.co/microsoft) | 1.3B/2.7B | q_proj,v_proj | - | -| [Phi-3](https://huggingface.co/microsoft) | 4B/7B/14B | qkv_proj | phi | -| [Qwen](https://huggingface.co/Qwen) | 1.8B/7B/14B/72B | c_attn | qwen | -| [Qwen1.5 (Code/MoE)](https://huggingface.co/Qwen) | 0.5B/1.8B/4B/7B/14B/32B/72B/110B | q_proj,v_proj | qwen | -| [StarCoder2](https://huggingface.co/bigcode) | 3B/7B/15B | q_proj,v_proj | - | -| [XVERSE](https://huggingface.co/xverse) | 7B/13B/65B | q_proj,v_proj | xverse | -| [Yi (1/1.5)](https://huggingface.co/01-ai) | 6B/9B/34B | q_proj,v_proj | yi | -| [Yi-VL](https://huggingface.co/01-ai) | 6B/34B | q_proj,v_proj | yi_vl | -| [Yuan](https://huggingface.co/IEITYuan) | 2B/51B/102B | q_proj,v_proj | yuan | +| 模型名 | 模型大小 | Template | +| -------------------------------------------------------- | -------------------------------- | --------- | +| [Baichuan2](https://huggingface.co/baichuan-inc) | 7B/13B | baichuan2 | +| [BLOOM](https://huggingface.co/bigscience) | 560M/1.1B/1.7B/3B/7.1B/176B | - | +| [BLOOMZ](https://huggingface.co/bigscience) | 560M/1.1B/1.7B/3B/7.1B/176B | - | +| [ChatGLM3](https://huggingface.co/THUDM) | 6B | chatglm3 | +| [Command-R](https://huggingface.co/CohereForAI) | 35B/104B | cohere | +| [DeepSeek (MoE)](https://huggingface.co/deepseek-ai) | 7B/16B/67B/236B | deepseek | +| [Falcon](https://huggingface.co/tiiuae) | 7B/11B/40B/180B | falcon | +| [Gemma/CodeGemma](https://huggingface.co/google) | 2B/7B | gemma | +| [GLM4](https://huggingface.co/THUDM) | 9B | glm4 | +| [InternLM2](https://huggingface.co/internlm) | 7B/20B | intern2 | +| [LLaMA](https://github.com/facebookresearch/llama) | 7B/13B/33B/65B | - | +| [LLaMA-2](https://huggingface.co/meta-llama) | 7B/13B/70B | llama2 | +| [LLaMA-3](https://huggingface.co/meta-llama) | 8B/70B | llama3 | +| [LLaVA-1.5](https://huggingface.co/llava-hf) | 7B/13B | vicuna | +| [Mistral/Mixtral](https://huggingface.co/mistralai) | 7B/8x7B/8x22B | mistral | +| [OLMo](https://huggingface.co/allenai) | 1B/7B | - | +| [PaliGemma](https://huggingface.co/google) | 3B | gemma | +| [Phi-1.5/2](https://huggingface.co/microsoft) | 1.3B/2.7B | - | +| [Phi-3](https://huggingface.co/microsoft) | 4B/7B/14B | phi | +| [Qwen](https://huggingface.co/Qwen) | 1.8B/7B/14B/72B | qwen | +| [Qwen1.5 (Code/MoE)](https://huggingface.co/Qwen) | 0.5B/1.8B/4B/7B/14B/32B/72B/110B | qwen | +| [StarCoder2](https://huggingface.co/bigcode) | 3B/7B/15B | - | +| [XVERSE](https://huggingface.co/xverse) | 7B/13B/65B | xverse | +| [Yi (1/1.5)](https://huggingface.co/01-ai) | 6B/9B/34B | yi | +| [Yi-VL](https://huggingface.co/01-ai) | 6B/34B | yi_vl | +| [Yuan](https://huggingface.co/IEITYuan) | 2B/51B/102B | yuan | > [!NOTE] -> **默认模块**应作为 `lora_target` 参数的默认值,可使用 `lora_target: all` 参数指定全部模块以取得更好的效果。 -> > 对于所有“基座”(Base)模型,`template` 参数可以是 `default`, `alpaca`, `vicuna` 等任意值。但“对话”(Instruct/Chat)模型请务必使用**对应的模板**。 > -> 请务必在训练和推理时使用**完全一致**的模板。 +> 请务必在训练和推理时采用**完全一致**的模板。 项目所支持模型的完整列表请参阅 [constants.py](src/llamafactory/extras/constants.py)。 diff --git a/examples/extras/fsdp_qlora/llama3_lora_sft.yaml b/examples/extras/fsdp_qlora/llama3_lora_sft.yaml index 348459b8..084269ef 100644 --- a/examples/extras/fsdp_qlora/llama3_lora_sft.yaml +++ b/examples/extras/fsdp_qlora/llama3_lora_sft.yaml @@ -6,7 +6,7 @@ quantization_bit: 4 stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### ddp ddp_timeout: 180000000 diff --git a/examples/extras/loraplus/llama3_lora_sft.yaml b/examples/extras/loraplus/llama3_lora_sft.yaml index 960f613e..1ba654ec 100644 --- a/examples/extras/loraplus/llama3_lora_sft.yaml +++ b/examples/extras/loraplus/llama3_lora_sft.yaml @@ -5,7 +5,7 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all loraplus_lr_ratio: 16.0 ### dataset diff --git a/examples/lora_multi_gpu/llama3_lora_sft.yaml b/examples/lora_multi_gpu/llama3_lora_sft.yaml index 9be3c780..348e53b9 100644 --- a/examples/lora_multi_gpu/llama3_lora_sft.yaml +++ b/examples/lora_multi_gpu/llama3_lora_sft.yaml @@ -5,7 +5,7 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### ddp ddp_timeout: 180000000 diff --git a/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml b/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml index 41152243..1c432fa7 100644 --- a/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml +++ b/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml @@ -5,7 +5,7 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### ddp ddp_timeout: 180000000 diff --git a/examples/lora_multi_npu/llama3_lora_sft_ds.yaml b/examples/lora_multi_npu/llama3_lora_sft_ds.yaml index 1ed24d04..a0ec8aa1 100644 --- a/examples/lora_multi_npu/llama3_lora_sft_ds.yaml +++ b/examples/lora_multi_npu/llama3_lora_sft_ds.yaml @@ -5,7 +5,7 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### ddp ddp_timeout: 180000000 diff --git a/examples/lora_single_gpu/llama3_lora_dpo.yaml b/examples/lora_single_gpu/llama3_lora_dpo.yaml index 158c9e04..78344330 100644 --- a/examples/lora_single_gpu/llama3_lora_dpo.yaml +++ b/examples/lora_single_gpu/llama3_lora_dpo.yaml @@ -5,7 +5,7 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: dpo do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all pref_beta: 0.1 pref_loss: sigmoid # [sigmoid (dpo), orpo, simpo] diff --git a/examples/lora_single_gpu/llama3_lora_kto.yaml b/examples/lora_single_gpu/llama3_lora_kto.yaml index ead221e9..d5234c0a 100644 --- a/examples/lora_single_gpu/llama3_lora_kto.yaml +++ b/examples/lora_single_gpu/llama3_lora_kto.yaml @@ -5,7 +5,7 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: kto do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: kto_en_demo diff --git a/examples/lora_single_gpu/llama3_lora_ppo.yaml b/examples/lora_single_gpu/llama3_lora_ppo.yaml index 19e7ccb3..98c842f9 100644 --- a/examples/lora_single_gpu/llama3_lora_ppo.yaml +++ b/examples/lora_single_gpu/llama3_lora_ppo.yaml @@ -6,7 +6,7 @@ reward_model: saves/llama3-8b/lora/reward stage: ppo do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: identity,alpaca_en_demo diff --git a/examples/lora_single_gpu/llama3_lora_pretrain.yaml b/examples/lora_single_gpu/llama3_lora_pretrain.yaml index 9167a893..db435ca9 100644 --- a/examples/lora_single_gpu/llama3_lora_pretrain.yaml +++ b/examples/lora_single_gpu/llama3_lora_pretrain.yaml @@ -5,7 +5,7 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: pt do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: c4_demo diff --git a/examples/lora_single_gpu/llama3_lora_reward.yaml b/examples/lora_single_gpu/llama3_lora_reward.yaml index 91663057..1ce42ea4 100644 --- a/examples/lora_single_gpu/llama3_lora_reward.yaml +++ b/examples/lora_single_gpu/llama3_lora_reward.yaml @@ -5,7 +5,7 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: rm do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: dpo_en_demo diff --git a/examples/lora_single_gpu/llama3_lora_sft.yaml b/examples/lora_single_gpu/llama3_lora_sft.yaml index cc93d05a..651b636f 100644 --- a/examples/lora_single_gpu/llama3_lora_sft.yaml +++ b/examples/lora_single_gpu/llama3_lora_sft.yaml @@ -5,7 +5,7 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: identity,alpaca_en_demo diff --git a/examples/lora_single_gpu/llama3_preprocess.yaml b/examples/lora_single_gpu/llama3_preprocess.yaml index 86dad37b..34bb9efc 100644 --- a/examples/lora_single_gpu/llama3_preprocess.yaml +++ b/examples/lora_single_gpu/llama3_preprocess.yaml @@ -5,7 +5,7 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: identity,alpaca_en_demo diff --git a/examples/lora_single_gpu/llava1_5_lora_sft.yaml b/examples/lora_single_gpu/llava1_5_lora_sft.yaml index 95c1d40d..df510a93 100644 --- a/examples/lora_single_gpu/llava1_5_lora_sft.yaml +++ b/examples/lora_single_gpu/llava1_5_lora_sft.yaml @@ -6,7 +6,7 @@ visual_inputs: true stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: mllm_demo diff --git a/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml b/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml index 23301de5..d54d6af6 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml @@ -5,7 +5,7 @@ model_name_or_path: ISTA-DASLab/Meta-Llama-3-8B-Instruct-AQLM-2Bit-1x16 stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: identity,alpaca_en_demo diff --git a/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml b/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml index 40a290a3..5cef178a 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml @@ -5,7 +5,7 @@ model_name_or_path: TechxGenus/Meta-Llama-3-8B-Instruct-AWQ stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: identity,alpaca_en_demo diff --git a/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml b/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml index 6652d8cf..b308dcab 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml @@ -6,7 +6,7 @@ quantization_bit: 4 stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: identity,alpaca_en_demo diff --git a/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml b/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml index 323ea7c6..b950042e 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml +++ b/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml @@ -5,7 +5,7 @@ model_name_or_path: TechxGenus/Meta-Llama-3-8B-Instruct-GPTQ stage: sft do_train: true finetuning_type: lora -lora_target: q_proj,v_proj +lora_target: all ### dataset dataset: identity,alpaca_en_demo diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index 687e16cc..4d9cb26d 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -20,8 +20,6 @@ CHOICES = ["A", "B", "C", "D"] DATA_CONFIG = "dataset_info.json" -DEFAULT_MODULE = defaultdict(str) - DEFAULT_TEMPLATE = defaultdict(str) FILEEXT2TYPE = { @@ -80,7 +78,6 @@ class DownloadSource(str, Enum): def register_model_group( models: Dict[str, Dict[DownloadSource, str]], - module: Optional[str] = None, template: Optional[str] = None, vision: bool = False, ) -> None: @@ -91,8 +88,6 @@ def register_model_group( else: assert prefix == name.split("-")[0], "prefix should be identical." SUPPORTED_MODELS[name] = path - if module is not None: - DEFAULT_MODULE[prefix] = module if template is not None: DEFAULT_TEMPLATE[prefix] = template if vision: @@ -127,7 +122,6 @@ register_model_group( DownloadSource.MODELSCOPE: "baichuan-inc/Baichuan-13B-Chat", }, }, - module="W_pack", template="baichuan", ) @@ -151,7 +145,6 @@ register_model_group( DownloadSource.MODELSCOPE: "baichuan-inc/Baichuan2-13B-Chat", }, }, - module="W_pack", template="baichuan2", ) @@ -171,7 +164,6 @@ register_model_group( DownloadSource.MODELSCOPE: "AI-ModelScope/bloom-7b1", }, }, - module="query_key_value", ) @@ -190,7 +182,6 @@ register_model_group( DownloadSource.MODELSCOPE: "AI-ModelScope/bloomz-7b1-mt", }, }, - module="query_key_value", ) @@ -229,7 +220,6 @@ register_model_group( DownloadSource.MODELSCOPE: "ZhipuAI/chatglm2-6b", } }, - module="query_key_value", template="chatglm2", ) @@ -245,7 +235,6 @@ register_model_group( DownloadSource.MODELSCOPE: "ZhipuAI/chatglm3-6b", }, }, - module="query_key_value", template="chatglm3", ) @@ -344,7 +333,6 @@ register_model_group( DownloadSource.MODELSCOPE: "AI-ModelScope/dbrx-instruct", }, }, - module="Wqkv", template="dbrx", ) @@ -463,7 +451,6 @@ register_model_group( DownloadSource.MODELSCOPE: "modelscope/falcon-180B-chat", }, }, - module="query_key_value", template="falcon", ) @@ -512,7 +499,6 @@ register_model_group( DownloadSource.MODELSCOPE: "ZhipuAI/glm-4-9b-chat-1m", }, }, - module="query_key_value", template="glm4", ) @@ -559,7 +545,6 @@ register_model_group( DownloadSource.MODELSCOPE: "Shanghai_AI_Laboratory/internlm2-chat-20b", }, }, - module="wqkv", template="intern2", ) @@ -581,7 +566,6 @@ register_model_group( DownloadSource.MODELSCOPE: "DeepLang/LingoWhale-8B", } }, - module="qkv_proj", ) @@ -868,7 +852,6 @@ register_model_group( DownloadSource.MODELSCOPE: "LLM-Research/Phi-3-medium-128k-instruct", }, }, - module="qkv_proj", template="phi", ) @@ -940,7 +923,6 @@ register_model_group( DownloadSource.MODELSCOPE: "qwen/Qwen-72B-Chat-Int4", }, }, - module="c_attn", template="qwen", ) @@ -1153,7 +1135,6 @@ register_model_group( DownloadSource.MODELSCOPE: "TeleAI/TeleChat-12B-v2", }, }, - module="query,key_value", template="telechat", ) diff --git a/src/llamafactory/hparams/finetuning_args.py b/src/llamafactory/hparams/finetuning_args.py index b9322f18..08af31e4 100644 --- a/src/llamafactory/hparams/finetuning_args.py +++ b/src/llamafactory/hparams/finetuning_args.py @@ -24,12 +24,7 @@ class FreezeArguments: "help": ( "Name(s) of trainable modules for freeze (partial-parameter) fine-tuning. " "Use commas to separate multiple modules. " - "Use `all` to specify all the available modules. " - "LLaMA choices: [`mlp`, `self_attn`], " - "BLOOM & Falcon & ChatGLM choices: [`mlp`, `self_attention`], " - "Qwen choices: [`mlp`, `attn`], " - "InternLM2 choices: [`feed_forward`, `attention`], " - "Others choices: the same as LLaMA." + "Use `all` to specify all the available modules." ) }, ) @@ -79,13 +74,7 @@ class LoraArguments: "help": ( "Name(s) of target modules to apply LoRA. " "Use commas to separate multiple modules. " - "Use `all` to specify all the linear modules. " - "LLaMA choices: [`q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `up_proj`, `down_proj`], " - "BLOOM & Falcon & ChatGLM choices: [`query_key_value`, `dense`, `dense_h_to_4h`, `dense_4h_to_h`], " - "Baichuan choices: [`W_pack`, `o_proj`, `gate_proj`, `up_proj`, `down_proj`], " - "Qwen choices: [`c_attn`, `attn.c_proj`, `w1`, `w2`, `mlp.c_proj`], " - "InternLM2 choices: [`wqkv`, `wo`, `w1`, `w2`, `w3`], " - "Others choices: the same as LLaMA." + "Use `all` to specify all the linear modules." ) }, ) diff --git a/src/llamafactory/webui/common.py b/src/llamafactory/webui/common.py index 62004bce..304b56a5 100644 --- a/src/llamafactory/webui/common.py +++ b/src/llamafactory/webui/common.py @@ -8,7 +8,6 @@ from yaml import safe_dump, safe_load from ..extras.constants import ( CHECKPOINT_NAMES, DATA_CONFIG, - DEFAULT_MODULE, DEFAULT_TEMPLATE, PEFT_METHODS, STAGES_USE_PAIR_DATA, @@ -118,13 +117,6 @@ def get_model_info(model_name: str) -> Tuple[str, str, bool]: return get_model_path(model_name), get_template(model_name), get_visual(model_name) -def get_module(model_name: str) -> str: - r""" - Gets the LoRA modules of this model. - """ - return DEFAULT_MODULE.get(get_prefix(model_name), "all") - - def get_template(model_name: str) -> str: r""" Gets the template name if the model is a chat model. diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index 4ec1531a..e8fdd129 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -8,7 +8,7 @@ from transformers.trainer import TRAINING_ARGS_NAME from ..extras.constants import PEFT_METHODS, TRAINING_STAGES from ..extras.misc import is_gpu_or_npu_available, torch_gc from ..extras.packages import is_gradio_available -from .common import DEFAULT_CACHE_DIR, get_module, get_save_dir, load_config +from .common import DEFAULT_CACHE_DIR, get_save_dir, load_config from .locales import ALERTS from .utils import abort_leaf_process, gen_cmd, get_eval_results, get_trainer_info, load_args, save_args, save_cmd @@ -159,7 +159,7 @@ class Runner: args["create_new_adapter"] = get("train.create_new_adapter") args["use_rslora"] = get("train.use_rslora") args["use_dora"] = get("train.use_dora") - args["lora_target"] = get("train.lora_target") or get_module(model_name) + args["lora_target"] = get("train.lora_target") or "all" args["additional_target"] = get("train.additional_target") or None if args["use_llama_pro"]: From 87a7822b98ef204a7a36fa4caf4e09a092f6a2da Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 16:25:42 +0800 Subject: [PATCH 083/169] update readme --- README.md | 20 +++++++++----------- README_zh.md | 18 +++++++++--------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index f3ced20e..1f9ff5a2 100644 --- a/README.md +++ b/README.md @@ -179,8 +179,6 @@ Compared to ChatGLM's [P-Tuning](https://github.com/THUDM/ChatGLM2-6B/tree/main/ | [Yuan](https://huggingface.co/IEITYuan) | 2B/51B/102B | yuan | > [!NOTE] -> **Default module** is used for the `lora_target` argument, you can use `lora_target: all` to specify all the available modules for better convergence. -> > For the "base" models, the `template` argument can be chosen from `default`, `alpaca`, `vicuna` etc. But make sure to use the **corresponding template** for the "instruct/chat" models. > > Remember to use the **SAME** template in training and inference. @@ -291,21 +289,21 @@ huggingface-cli login | Mandatory | Minimum | Recommend | | ------------ | ------- | --------- | -| python | 3.8 | 3.10 | -| torch | 1.13.1 | 2.2.0 | -| transformers | 4.37.2 | 4.41.0 | -| datasets | 2.14.3 | 2.19.1 | -| accelerate | 0.27.2 | 0.30.1 | -| peft | 0.9.0 | 0.11.1 | -| trl | 0.8.2 | 0.8.6 | +| python | 3.8 | 3.11 | +| torch | 1.13.1 | 2.3.0 | +| transformers | 4.41.2 | 4.41.2 | +| datasets | 2.16.0 | 2.19.2 | +| accelerate | 0.30.1 | 0.30.1 | +| peft | 0.11.1 | 0.11.1 | +| trl | 0.9.3 | 0.9.3 | | Optional | Minimum | Recommend | | ------------ | ------- | --------- | | CUDA | 11.6 | 12.2 | | deepspeed | 0.10.0 | 0.14.0 | | bitsandbytes | 0.39.0 | 0.43.1 | -| vllm | 0.4.0 | 0.4.2 | -| flash-attn | 2.3.0 | 2.5.8 | +| vllm | 0.4.3 | 0.4.3 | +| flash-attn | 2.3.0 | 2.5.9 | ### Hardware Requirement diff --git a/README_zh.md b/README_zh.md index 982c0123..8422e667 100644 --- a/README_zh.md +++ b/README_zh.md @@ -289,21 +289,21 @@ huggingface-cli login | 必需项 | 至少 | 推荐 | | ------------ | ------- | --------- | -| python | 3.8 | 3.10 | -| torch | 1.13.1 | 2.2.0 | -| transformers | 4.37.2 | 4.41.0 | -| datasets | 2.14.3 | 2.19.1 | -| accelerate | 0.27.2 | 0.30.1 | -| peft | 0.9.0 | 0.11.1 | -| trl | 0.8.2 | 0.8.6 | +| python | 3.8 | 3.11 | +| torch | 1.13.1 | 2.3.0 | +| transformers | 4.41.2 | 4.41.2 | +| datasets | 2.16.0 | 2.19.2 | +| accelerate | 0.30.1 | 0.30.1 | +| peft | 0.11.1 | 0.11.1 | +| trl | 0.9.3 | 0.9.3 | | 可选项 | 至少 | 推荐 | | ------------ | ------- | --------- | | CUDA | 11.6 | 12.2 | | deepspeed | 0.10.0 | 0.14.0 | | bitsandbytes | 0.39.0 | 0.43.1 | -| vllm | 0.4.0 | 0.4.2 | -| flash-attn | 2.3.0 | 2.5.8 | +| vllm | 0.4.3 | 0.4.3 | +| flash-attn | 2.3.0 | 2.5.9 | ### 硬件依赖 From 53eb2de75e2df372b87801cea4ccafd6e73e59df Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 16:59:18 +0800 Subject: [PATCH 084/169] update readme --- README.md | 4 ++-- README_zh.md | 4 ++-- setup.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1f9ff5a2..77684757 100644 --- a/README.md +++ b/README.md @@ -329,7 +329,7 @@ huggingface-cli login ```bash git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory -pip install -e .[torch,metrics] +pip install -e '.[torch,metrics]' ``` Extra dependencies available: torch, torch_npu, metrics, deepspeed, bitsandbytes, vllm, galore, badam, gptq, awq, aqlm, qwen, modelscope, quality @@ -353,7 +353,7 @@ To enable FlashAttention-2 on the Windows platform, you need to install the prec Join [NPU user group](assets/wechat_npu.jpg). -To install LLaMA Factory on Ascend NPU devices, please specify extra dependencies: `pip install -e .[torch_npu,metrics]`. Additionally, you need to install the **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**. Please follow the [installation tutorial](https://www.hiascend.com/document/detail/en/CANNCommunityEdition/600alphaX/softwareinstall/instg/atlasdeploy_03_0031.html) or use the following commands: +To install LLaMA Factory on Ascend NPU devices, please specify extra dependencies: `pip install -e '.[torch-npu,metrics]'`. Additionally, you need to install the **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**. Please follow the [installation tutorial](https://www.hiascend.com/document/detail/en/CANNCommunityEdition/600alphaX/softwareinstall/instg/atlasdeploy_03_0031.html) or use the following commands: ```bash # replace the url according to your CANN version and devices diff --git a/README_zh.md b/README_zh.md index 8422e667..da5ff079 100644 --- a/README_zh.md +++ b/README_zh.md @@ -329,7 +329,7 @@ huggingface-cli login ```bash git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory -pip install -e .[torch,metrics] +pip install -e '.[torch,metrics]' ``` 可选的额外依赖项:torch、torch_npu、metrics、deepspeed、bitsandbytes、vllm、galore、badam、gptq、awq、aqlm、qwen、modelscope、quality @@ -353,7 +353,7 @@ pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/downl 加入 [NPU 用户群](assets/wechat_npu.jpg)。 -在昇腾 NPU 设备上安装 LLaMA Factory 时,需要指定额外依赖项,使用 `pip install -e .[torch_npu,metrics]` 命令安装。此外,还需要安装 **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**,安装方法请参考[安装教程](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC2alpha002/quickstart/quickstart/quickstart_18_0004.html)或使用以下命令: +在昇腾 NPU 设备上安装 LLaMA Factory 时,需要指定额外依赖项,使用 `pip install -e '.[torch-npu,metrics]'` 命令安装。此外,还需要安装 **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**,安装方法请参考[安装教程](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC2alpha002/quickstart/quickstart/quickstart_18_0004.html)或使用以下命令: ```bash # 请替换 URL 为 CANN 版本和设备型号对应的 URL diff --git a/setup.py b/setup.py index 7a5b9304..c32be8af 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ def get_requires(): extra_require = { "torch": ["torch>=1.13.1"], - "torch_npu": ["torch==2.1.0", "torch-npu==2.1.0.post3", "decorator"], + "torch-npu": ["torch==2.1.0", "torch-npu==2.1.0.post3", "decorator"], "metrics": ["nltk", "jieba", "rouge-chinese"], "deepspeed": ["deepspeed>=0.10.0,<=0.14.0"], "bitsandbytes": ["bitsandbytes>=0.39.0"], From 67aa78cde0d89e9f4b5640bce5fc506ef73ff7b6 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 17:29:19 +0800 Subject: [PATCH 085/169] fix base64 image read #4061 --- src/llamafactory/api/chat.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/llamafactory/api/chat.py b/src/llamafactory/api/chat.py index 712b6940..50892a54 100644 --- a/src/llamafactory/api/chat.py +++ b/src/llamafactory/api/chat.py @@ -1,3 +1,5 @@ +import base64 +import io import json import os import uuid @@ -83,9 +85,12 @@ def _process_request( input_messages.append({"role": ROLE_MAPPING[message.role], "content": input_item.text}) else: image_url = input_item.image_url.url - if os.path.isfile(image_url): + if image_url.startswith("data:image"): # base64 image + image_data = base64.b64decode(image_url.split(",", maxsplit=1)[1]) + image_path = io.BytesIO(image_data) + elif os.path.isfile(image_url): # local file image_path = open(image_url, "rb") - else: + else: # web uri image_path = requests.get(image_url, stream=True).raw image = Image.open(image_path).convert("RGB") From fad2591e314093335ef1c301d0a70f0cbe935728 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 18:45:49 +0800 Subject: [PATCH 086/169] update trainers --- src/llamafactory/api/chat.py | 7 +++++-- src/llamafactory/train/dpo/trainer.py | 8 +------- src/llamafactory/train/kto/trainer.py | 11 ++--------- src/llamafactory/train/ppo/utils.py | 7 ++++--- 4 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/llamafactory/api/chat.py b/src/llamafactory/api/chat.py index 50892a54..98957bc1 100644 --- a/src/llamafactory/api/chat.py +++ b/src/llamafactory/api/chat.py @@ -7,7 +7,7 @@ from typing import TYPE_CHECKING, AsyncGenerator, Dict, List, Optional, Tuple from ..data import Role as DataRole from ..extras.logging import get_logger -from ..extras.packages import is_fastapi_available, is_pillow_available +from ..extras.packages import is_fastapi_available, is_pillow_available, is_requests_available from .common import dictify, jsonify from .protocol import ( ChatCompletionMessage, @@ -29,10 +29,13 @@ if is_fastapi_available(): if is_pillow_available(): - import requests from PIL import Image +if is_requests_available(): + import requests + + if TYPE_CHECKING: from numpy.typing import NDArray diff --git a/src/llamafactory/train/dpo/trainer.py b/src/llamafactory/train/dpo/trainer.py index 2bbe6a06..6f1da34e 100644 --- a/src/llamafactory/train/dpo/trainer.py +++ b/src/llamafactory/train/dpo/trainer.py @@ -187,13 +187,7 @@ class CustomDPOTrainer(DPOTrainer): ref_context = nullcontext() with torch.no_grad(), ref_context: - ( - reference_chosen_logps, - reference_rejected_logps, - _, - _, - _, - ) = self.concatenated_forward(ref_model, batch) + reference_chosen_logps, reference_rejected_logps, *_ = self.concatenated_forward(ref_model, batch) return reference_chosen_logps, reference_rejected_logps diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index f29945f5..03cad5a7 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -146,15 +146,8 @@ class CustomKTOTrainer(KTOTrainer): if len(target_logps) != len(batch["kto_tags"]): raise ValueError("Mismatched shape of inputs and labels.") - chosen_idx = [i for i in range(len(target_logps)) if batch["kto_tags"][i]] - rejected_idx = [i for i in range(len(target_logps)) if not batch["kto_tags"][i]] - - chosen_logps = target_logps[chosen_idx, ...] - rejected_logps = target_logps[rejected_idx, ...] - - chosen_logits = target_logits[chosen_idx, ...] - rejected_logits = target_logits[rejected_idx, ...] - + chosen_logps, rejected_logps = target_logps[batch["kto_tags"]], target_logps[~batch["kto_tags"]] + chosen_logits, rejected_logits = target_logits[batch["kto_tags"]], target_logits[~batch["kto_tags"]] return chosen_logps, rejected_logps, chosen_logits, rejected_logits, kl_logps def compute_reference_log_probs( diff --git a/src/llamafactory/train/ppo/utils.py b/src/llamafactory/train/ppo/utils.py index e6bdb89c..e5025581 100644 --- a/src/llamafactory/train/ppo/utils.py +++ b/src/llamafactory/train/ppo/utils.py @@ -8,13 +8,14 @@ from transformers.integrations import is_deepspeed_zero3_enabled from ...extras.packages import is_requests_available +if is_requests_available(): + import requests + + if TYPE_CHECKING: from transformers import PreTrainedModel from trl import AutoModelForCausalLMWithValueHead -if is_requests_available(): - import requests - def get_rewards_from_server(server_url: str, messages: List[str]) -> List[torch.Tensor]: headers = {"Content-Type": "application/json"} From 149610c636bbb974e546d13fa302884ea65a6d38 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 19:03:20 +0800 Subject: [PATCH 087/169] fix ppo dataset bug #4012 --- src/llamafactory/data/loader.py | 2 +- src/llamafactory/data/preprocess.py | 2 +- src/llamafactory/data/processors/pretrain.py | 2 +- src/llamafactory/train/ppo/workflow.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/llamafactory/data/loader.py b/src/llamafactory/data/loader.py index 7d013d27..859f9a93 100644 --- a/src/llamafactory/data/loader.py +++ b/src/llamafactory/data/loader.py @@ -130,7 +130,7 @@ def get_dataset( model_args: "ModelArguments", data_args: "DataArguments", training_args: "Seq2SeqTrainingArguments", - stage: Literal["pt", "sft", "rm", "kto"], + stage: Literal["pt", "sft", "rm", "ppo", "kto"], tokenizer: "PreTrainedTokenizer", processor: Optional["ProcessorMixin"] = None, ) -> Union["Dataset", "IterableDataset"]: diff --git a/src/llamafactory/data/preprocess.py b/src/llamafactory/data/preprocess.py index 336257ca..97789c39 100644 --- a/src/llamafactory/data/preprocess.py +++ b/src/llamafactory/data/preprocess.py @@ -23,7 +23,7 @@ if TYPE_CHECKING: def get_preprocess_and_print_func( data_args: "DataArguments", training_args: "Seq2SeqTrainingArguments", - stage: Literal["pt", "sft", "rm", "kto"], + stage: Literal["pt", "sft", "rm", "ppo", "kto"], template: "Template", tokenizer: "PreTrainedTokenizer", processor: Optional["ProcessorMixin"], diff --git a/src/llamafactory/data/processors/pretrain.py b/src/llamafactory/data/processors/pretrain.py index 3de0d1ac..87727b55 100644 --- a/src/llamafactory/data/processors/pretrain.py +++ b/src/llamafactory/data/processors/pretrain.py @@ -18,7 +18,7 @@ def preprocess_pretrain_dataset( if data_args.template == "gemma": text_examples = [tokenizer.bos_token + example for example in text_examples] - result = tokenizer(text_examples, add_special_tokens=False, max_length=data_args.cutoff_len) + result = tokenizer(text_examples, add_special_tokens=False, max_length=data_args.cutoff_len, truncation=True) else: tokenized_examples = tokenizer(text_examples, add_special_tokens=False) concatenated_examples = {k: list(chain(*tokenized_examples[k])) for k in tokenized_examples.keys()} diff --git a/src/llamafactory/train/ppo/workflow.py b/src/llamafactory/train/ppo/workflow.py index c4e05e57..4383bcdc 100644 --- a/src/llamafactory/train/ppo/workflow.py +++ b/src/llamafactory/train/ppo/workflow.py @@ -29,7 +29,7 @@ def run_ppo( ): tokenizer_module = load_tokenizer(model_args) tokenizer = tokenizer_module["tokenizer"] - dataset = get_dataset(model_args, data_args, training_args, stage="pt", **tokenizer_module) + dataset = get_dataset(model_args, data_args, training_args, stage="ppo", **tokenizer_module) model = load_model(tokenizer, model_args, finetuning_args, training_args.do_train, add_valuehead=True) tokenizer.padding_side = "left" # use left-padding in generation while using right-padding in training From 451b6693c0cb86cc9ac03d1a9389cf1fd2b918ec Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 20:30:25 +0800 Subject: [PATCH 088/169] fix torch gc --- src/llamafactory/extras/misc.py | 11 ++++++++--- src/llamafactory/model/utils/embedding.py | 2 +- src/llamafactory/model/utils/valuehead.py | 9 +++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/llamafactory/extras/misc.py b/src/llamafactory/extras/misc.py index 78f71847..48476f9c 100644 --- a/src/llamafactory/extras/misc.py +++ b/src/llamafactory/extras/misc.py @@ -212,12 +212,17 @@ def has_tokenized_data(path: os.PathLike) -> bool: def torch_gc() -> None: r""" - Collects GPU memory. + Collects GPU or NPU memory. """ gc.collect() - if torch.cuda.is_available(): + if is_torch_xpu_available(): + torch.xpu.empty_cache() + elif is_torch_npu_available(): + torch.npu.empty_cache() + elif is_torch_mps_available(): + torch.mps.empty_cache() + elif is_torch_cuda_available(): torch.cuda.empty_cache() - torch.cuda.ipc_collect() def try_download_model_from_ms(model_args: "ModelArguments") -> str: diff --git a/src/llamafactory/model/utils/embedding.py b/src/llamafactory/model/utils/embedding.py index 357c9cc0..3d9278e3 100644 --- a/src/llamafactory/model/utils/embedding.py +++ b/src/llamafactory/model/utils/embedding.py @@ -15,7 +15,7 @@ if TYPE_CHECKING: logger = get_logger(__name__) -def _noisy_mean_initialization(embed_weight: torch.Tensor, num_new_tokens: int) -> None: +def _noisy_mean_initialization(embed_weight: "torch.Tensor", num_new_tokens: int) -> None: embedding_dim = embed_weight.size(1) avg_weight = embed_weight[:-num_new_tokens].mean(dim=0, keepdim=True) noise_weight = torch.empty_like(embed_weight[-num_new_tokens:]) diff --git a/src/llamafactory/model/utils/valuehead.py b/src/llamafactory/model/utils/valuehead.py index d813729e..64333688 100644 --- a/src/llamafactory/model/utils/valuehead.py +++ b/src/llamafactory/model/utils/valuehead.py @@ -23,6 +23,7 @@ def load_valuehead_params(path_or_repo_id: str, model_args: "ModelArguments") -> Returns: dict with keys `v_head.summary.weight` and `v_head.summary.bias`. """ kwargs = {"path_or_repo_id": path_or_repo_id, "cache_dir": model_args.cache_dir, "token": model_args.hf_hub_token} + err_text = "" try: from safetensors import safe_open @@ -31,16 +32,16 @@ def load_valuehead_params(path_or_repo_id: str, model_args: "ModelArguments") -> with safe_open(vhead_file, framework="pt", device="cpu") as f: return {key: f.get_tensor(key) for key in f.keys()} except Exception as err: - logger.info("Failed to load {}: {}".format(V_HEAD_SAFE_WEIGHTS_NAME, str(err))) + err_text = str(err) try: vhead_file = cached_file(filename=V_HEAD_WEIGHTS_NAME, **kwargs) return torch.load(vhead_file, map_location="cpu") except Exception as err: - logger.info("Failed to load {}: {}".format(V_HEAD_WEIGHTS_NAME, str(err))) + err_text = str(err) - logger.info("Provided path ({}) does not contain value head weights.".format(path_or_repo_id)) - logger.info("Ignore these messages if you are not resuming the training of a value head model.") + logger.info("Provided path ({}) does not contain value head weights: {}.".format(path_or_repo_id, err_text)) + logger.info("Ignore the above message if you are not resuming the training of a value head model.") return None From 76c61905b20f69fac5c7a6c4ea9450bf33d3b1f2 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 23:30:07 +0800 Subject: [PATCH 089/169] fix ppo+zero3 #3108 --- src/llamafactory/train/ppo/trainer.py | 91 ++++++++++++++------------- src/llamafactory/train/ppo/utils.py | 36 ++++++----- 2 files changed, 66 insertions(+), 61 deletions(-) diff --git a/src/llamafactory/train/ppo/trainer.py b/src/llamafactory/train/ppo/trainer.py index 27353c72..b0c7e25d 100644 --- a/src/llamafactory/train/ppo/trainer.py +++ b/src/llamafactory/train/ppo/trainer.py @@ -2,9 +2,10 @@ import math import os import sys from types import MethodType -from typing import TYPE_CHECKING, Dict, List, Optional, Tuple +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple import torch +from accelerate.utils import DistributedDataParallelKwargs from tqdm import tqdm from transformers import GenerationConfig, Trainer, TrainerControl, TrainerState from transformers.optimization import get_scheduler @@ -79,6 +80,13 @@ class CustomPPOTrainer(PPOTrainer, Trainer): project_kwargs={"logging_dir": training_args.logging_dir}, ) + # Add deepspeed config + ppo_config.accelerator_kwargs["kwargs_handlers"] = [ + DistributedDataParallelKwargs(find_unused_parameters=training_args.ddp_find_unused_parameters) + ] + if training_args.deepspeed_plugin is not None: + ppo_config.accelerator_kwargs["deepspeed_plugin"] = training_args.deepspeed_plugin + # Create optimizer and scheduler if training_args.max_steps > 0: num_training_steps = training_args.max_steps @@ -124,6 +132,12 @@ class CustomPPOTrainer(PPOTrainer, Trainer): if self.args.max_steps > 0: logger.info("max_steps is given, it will override any value given in num_train_epochs") + unwrapped_model: "AutoModelForCausalLMWithValueHead" = self.accelerator.unwrap_model(self.model) + self.is_chatglm_model = getattr(unwrapped_model.config, "model_type", None) == "chatglm" + + device_type = unwrapped_model.pretrained_model.device.type + self.amp_context = torch.autocast(device_type, dtype=model_args.compute_dtype) + if finetuning_args.reward_model_type == "full": if self.is_deepspeed_enabled: if not ( @@ -184,7 +198,6 @@ class CustomPPOTrainer(PPOTrainer, Trainer): logger.info(" Total training steps = {}".format(max_steps)) logger.info(" Number of trainable parameters = {}".format(count_parameters(self.model)[0])) - unwrapped_model: "AutoModelForCausalLMWithValueHead" = self.accelerator.unwrap_model(self.model) dataiter = iter(self.dataloader) loss_meter = AverageMeter() reward_meter = AverageMeter() @@ -197,29 +210,21 @@ class CustomPPOTrainer(PPOTrainer, Trainer): dataiter = iter(self.dataloader) batch = next(dataiter) - # Cast to inference mode - unwrapped_model.gradient_checkpointing_disable() - unwrapped_model.config.use_cache = True - self.model.eval() - # Get inputs + self.model.eval() self.tokenizer.padding_side = "right" # change padding side queries, responses, rewards = [], [], [] for idx in range(0, self.config.batch_size, self.config.mini_batch_size): mini_batch_queries, mini_batch_responses = self.get_inputs( batch[idx : idx + self.config.mini_batch_size] ) - mini_batch_rewards = self.get_rewards(mini_batch_queries, mini_batch_responses, unwrapped_model) + mini_batch_rewards = self.get_rewards(mini_batch_queries, mini_batch_responses) queries.extend(mini_batch_queries) responses.extend(mini_batch_responses) rewards.extend(mini_batch_rewards) - # Cast to training mode - unwrapped_model.gradient_checkpointing_enable() - unwrapped_model.config.use_cache = False - self.model.train() - # Run PPO step + self.model.train() stats = self.step(queries, responses, rewards) self.tokenizer.padding_side = "left" # restore padding side loss_meter.update(float(stats["ppo/loss/total"]), n=len(rewards)) @@ -311,25 +316,24 @@ class CustomPPOTrainer(PPOTrainer, Trainer): getattr(self.processor, "image_processor").save_pretrained(output_dir) @torch.no_grad() - def get_inputs(self, batch: Dict[str, torch.Tensor]) -> Tuple[List[torch.Tensor], List[torch.Tensor]]: + def get_inputs(self, batch: Dict[str, "torch.Tensor"]) -> Tuple[List["torch.Tensor"], List["torch.Tensor"]]: r""" Generates model's responses given queries. """ - if self.model_args.upcast_layernorm: - layernorm_params = dump_layernorm(self.model) - if batch["input_ids"].size(0) == 1: # handle llama2 ppo with gradient accumulation > 1 start_index = (batch["input_ids"][0] != self.tokenizer.pad_token_id).nonzero()[0].item() for k, v in batch.items(): batch[k] = v[:, start_index:] with unwrap_model_for_generation(self.model, self.accelerator) as unwrapped_model: + if self.model_args.upcast_layernorm: + layernorm_params = dump_layernorm(unwrapped_model) + generate_output: torch.Tensor = unwrapped_model.generate( generation_config=self.generation_config, logits_processor=get_logits_processor(), **batch ) - - if self.model_args.upcast_layernorm: - restore_layernorm(self.model, layernorm_params) + if self.model_args.upcast_layernorm: + restore_layernorm(unwrapped_model, layernorm_params) query = batch["input_ids"].detach().cpu() response = generate_output[:, batch["input_ids"].size(-1) :].detach().cpu() @@ -351,10 +355,9 @@ class CustomPPOTrainer(PPOTrainer, Trainer): @torch.no_grad() def get_rewards( self, - queries: List[torch.Tensor], - responses: List[torch.Tensor], - unwrapped_model: "AutoModelForCausalLMWithValueHead", - ) -> List[torch.Tensor]: + queries: List["torch.Tensor"], + responses: List["torch.Tensor"], + ) -> List["torch.Tensor"]: r""" Computes scores using given reward model. @@ -365,18 +368,22 @@ class CustomPPOTrainer(PPOTrainer, Trainer): messages = self.tokenizer.batch_decode(token_ids, skip_special_tokens=True) return get_rewards_from_server(self.reward_model, messages) - if self.finetuning_args.reward_model_type == "lora": - replace_model(unwrapped_model, target="reward") - reward_model = self.model - else: - reward_model = self.reward_model - batch = self.prepare_model_inputs(queries, responses) - with torch.cuda.amp.autocast(dtype=self.model_args.compute_dtype): # support bf16 - _, _, values = reward_model(**batch, output_hidden_states=True, return_dict=True, use_cache=False) + with unwrap_model_for_generation(self.model, self.accelerator) as unwrapped_model: + if self.finetuning_args.reward_model_type == "lora": + replace_model(unwrapped_model, target="reward") + reward_model = self.model + else: + reward_model = self.reward_model - if getattr(unwrapped_model.config, "model_type", None) == "chatglm": # assume same architecture + with self.amp_context: # support bf16 + _, _, values = reward_model(**batch, output_hidden_states=True, return_dict=True, use_cache=False) + + if self.finetuning_args.reward_model_type == "lora": + replace_model(unwrapped_model, target="default") + + if self.is_chatglm_model: # assume same architecture values = torch.transpose(values, 0, 1) rewards = [] @@ -385,21 +392,18 @@ class CustomPPOTrainer(PPOTrainer, Trainer): end_index = end_indexes[-1].item() if len(end_indexes) else 0 rewards.append(values[i, end_index].float().detach().cpu()) # use fp32 type - if self.finetuning_args.reward_model_type == "lora": - replace_model(unwrapped_model, target="default") - return rewards @PPODecorators.empty_device_cache() def batched_forward_pass( self, model: "AutoModelForCausalLMWithValueHead", - queries: torch.Tensor, - responses: torch.Tensor, - model_inputs: dict, + queries: "torch.Tensor", + responses: "torch.Tensor", + model_inputs: Dict[str, Any], return_logits: bool = False, - response_masks: Optional[torch.Tensor] = None, - ): + response_masks: Optional["torch.Tensor"] = None, + ) -> Tuple["torch.Tensor", Optional["torch.Tensor"], "torch.Tensor", "torch.Tensor"]: r""" Calculates model outputs in multiple batches. @@ -421,11 +425,10 @@ class CustomPPOTrainer(PPOTrainer, Trainer): input_ids = input_kwargs["input_ids"] attention_mask = input_kwargs["attention_mask"] - with torch.cuda.amp.autocast(dtype=self.model_args.compute_dtype): # support bf16 + with self.amp_context: # support bf16 logits, _, values = model(**input_kwargs) - unwrapped_model: "AutoModelForCausalLMWithValueHead" = self.accelerator.unwrap_model(self.model) - if getattr(unwrapped_model.config, "model_type", None) == "chatglm": + if self.is_chatglm_model: values = torch.transpose(values, 0, 1) logprobs = logprobs_from_logits(logits[:, :-1, :], input_ids[:, 1:]) diff --git a/src/llamafactory/train/ppo/utils.py b/src/llamafactory/train/ppo/utils.py index e5025581..570409f2 100644 --- a/src/llamafactory/train/ppo/utils.py +++ b/src/llamafactory/train/ppo/utils.py @@ -1,9 +1,7 @@ import json -from contextlib import nullcontext from typing import TYPE_CHECKING, Dict, List, Literal, Optional import torch -from transformers.integrations import is_deepspeed_zero3_enabled from ...extras.packages import is_requests_available @@ -18,6 +16,9 @@ if TYPE_CHECKING: def get_rewards_from_server(server_url: str, messages: List[str]) -> List[torch.Tensor]: + r""" + Gets reward scores from the API server. + """ headers = {"Content-Type": "application/json"} payload = {"model": "model", "messages": messages} response = requests.post(server_url, json=payload, headers=headers) @@ -26,25 +27,23 @@ def get_rewards_from_server(server_url: str, messages: List[str]) -> List[torch. def replace_model(model: "AutoModelForCausalLMWithValueHead", target: Literal["default", "reward"]) -> None: - if is_deepspeed_zero3_enabled(): - import deepspeed # type: ignore + r""" + Replaces the default/reward modules in the model. The model is already unwrapped (and gathered). + """ + if target == "reward": # save default head temporarily + setattr(model, "default_head_weight", model.v_head.summary.weight.data.detach().clone()) + setattr(model, "default_head_bias", model.v_head.summary.bias.data.detach().clone()) - params = [model.v_head.summary.weight, model.v_head.summary.bias] - context_maybe_zero3 = deepspeed.zero.GatheredParameters(params, modifier_rank=0) - else: - context_maybe_zero3 = nullcontext() - - with context_maybe_zero3: - if target == "reward": # save default head temporarily - setattr(model, "default_head_weight", model.v_head.summary.weight.data.detach().clone()) - setattr(model, "default_head_bias", model.v_head.summary.bias.data.detach().clone()) - - model.pretrained_model.set_adapter(target) # set the LoRA adapter to be active - model.v_head.summary.weight.data = model.get_buffer("{}_head_weight".format(target)).detach().clone() - model.v_head.summary.bias.data = model.get_buffer("{}_head_bias".format(target)).detach().clone() + model.pretrained_model.set_adapter(target) # set the LoRA adapter to be active + device = model.v_head.summary.weight.device + model.v_head.summary.weight.data = model.get_buffer("{}_head_weight".format(target)).detach().clone().to(device) + model.v_head.summary.bias.data = model.get_buffer("{}_head_bias".format(target)).detach().clone().to(device) def dump_layernorm(model: "PreTrainedModel") -> Dict[str, torch.Tensor]: + r""" + Dumps the layernorm parameters in the model. The model is already unwrapped (and gathered). + """ layer_norm_params = {} for name, param in model.named_parameters(): if param.data.dtype == torch.float32: @@ -55,6 +54,9 @@ def dump_layernorm(model: "PreTrainedModel") -> Dict[str, torch.Tensor]: def restore_layernorm(model: "PreTrainedModel", layernorm_params: Optional[Dict[str, torch.Tensor]] = None) -> None: + r""" + Restores the layernorm parameters in the model. The model is already unwrapped (and gathered). + """ for name, param in model.named_parameters(): if name in layernorm_params: param.data = layernorm_params[name] From 751dd77bc076af3a13884a609ec71c089c516f1f Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Thu, 6 Jun 2024 23:38:09 +0800 Subject: [PATCH 090/169] Update cli.py --- src/llamafactory/cli.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/llamafactory/cli.py b/src/llamafactory/cli.py index 8a229a38..19a104bd 100644 --- a/src/llamafactory/cli.py +++ b/src/llamafactory/cli.py @@ -71,10 +71,6 @@ def main(): export_model() elif command == Command.TRAIN: if get_device_count() > 0: - # NOTE (MengqingCao): why use torchrun when only one accelerator is available? - # DeepSpeed only warp model with DeepSpeedEngine when launching by distributed launcher, - # e.g., torchrun, causing some feature missing - # sa: https://github.com/huggingface/transformers/issues/24309 master_addr = os.environ.get("MASTER_ADDR", "127.0.0.1") master_port = os.environ.get("MASTER_PORT", str(random.randint(20001, 29999))) logger.info("Initializing distributed tasks at: {}:{}".format(master_addr, master_port)) From 45d8be8f93188e6e9d1e0841c2736dce0c1ef7d2 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 6 Jun 2024 23:44:58 +0800 Subject: [PATCH 091/169] add DISABLE_TORCHRUN option --- src/llamafactory/cli.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/llamafactory/cli.py b/src/llamafactory/cli.py index 8ae3d6a8..092f4cf7 100644 --- a/src/llamafactory/cli.py +++ b/src/llamafactory/cli.py @@ -72,7 +72,12 @@ def main(): elif command == Command.EXPORT: export_model() elif command == Command.TRAIN: - if get_device_count() > 0: + disable_torchrun = os.environ.get("DISABLE_TORCHRUN", "0").lower() in ["true", "1"] + if disable_torchrun and get_device_count() > 1: + logger.warning("`torchrun` cannot be disabled when device count > 1.") + disable_torchrun = False + + if (not disable_torchrun) and (get_device_count() > 0): master_addr = os.environ.get("MASTER_ADDR", "127.0.0.1") master_port = os.environ.get("MASTER_PORT", str(random.randint(20001, 29999))) logger.info("Initializing distributed tasks at: {}:{}".format(master_addr, master_port)) From 74f96efef9bcd63f65d0190c901ff9be54ccd350 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Fri, 7 Jun 2024 00:09:06 +0800 Subject: [PATCH 092/169] rename files --- src/llamafactory/chat/vllm_engine.py | 2 +- src/llamafactory/data/__init__.py | 12 ++++++------ src/llamafactory/data/aligner.py | 2 +- .../data/{utils.py => data_utils.py} | 0 src/llamafactory/data/loader.py | 2 +- src/llamafactory/data/processors/feedback.py | 2 +- src/llamafactory/data/processors/pairwise.py | 2 +- .../{mm_utils.py => processor_utils.py} | 0 src/llamafactory/data/processors/supervised.py | 2 +- .../data/processors/unsupervised.py | 4 ++-- src/llamafactory/data/template.py | 10 +++++----- src/llamafactory/model/__init__.py | 6 +++--- src/llamafactory/model/adapter.py | 6 +++--- src/llamafactory/model/loader.py | 8 ++++---- .../model/{utils => model_utils}/__init__.py | 0 .../model/{utils => model_utils}/attention.py | 0 .../{utils => model_utils}/checkpointing.py | 0 .../model/{utils => model_utils}/embedding.py | 0 .../model/{utils => model_utils}/longlora.py | 0 .../model/{utils => model_utils}/misc.py | 0 .../model/{utils => model_utils}/mod.py | 0 .../model/{utils => model_utils}/moe.py | 0 .../{utils => model_utils}/quantization.py | 0 .../model/{utils => model_utils}/rope.py | 0 .../model/{utils => model_utils}/unsloth.py | 0 .../model/{utils => model_utils}/valuehead.py | 0 .../model/{utils => model_utils}/visual.py | 0 src/llamafactory/model/patcher.py | 18 +++++++++--------- src/llamafactory/train/dpo/trainer.py | 2 +- src/llamafactory/train/dpo/workflow.py | 2 +- src/llamafactory/train/kto/trainer.py | 2 +- src/llamafactory/train/kto/workflow.py | 2 +- .../train/ppo/{utils.py => ppo_utils.py} | 0 src/llamafactory/train/ppo/trainer.py | 4 ++-- src/llamafactory/train/ppo/workflow.py | 2 +- src/llamafactory/train/pt/trainer.py | 2 +- src/llamafactory/train/pt/workflow.py | 2 +- src/llamafactory/train/rm/trainer.py | 2 +- src/llamafactory/train/rm/workflow.py | 2 +- src/llamafactory/train/sft/trainer.py | 2 +- src/llamafactory/train/sft/workflow.py | 2 +- .../train/{utils.py => trainer_utils.py} | 0 src/llamafactory/webui/components/top.py | 4 ++-- 43 files changed, 53 insertions(+), 53 deletions(-) rename src/llamafactory/data/{utils.py => data_utils.py} (100%) rename src/llamafactory/data/processors/{mm_utils.py => processor_utils.py} (100%) rename src/llamafactory/model/{utils => model_utils}/__init__.py (100%) rename src/llamafactory/model/{utils => model_utils}/attention.py (100%) rename src/llamafactory/model/{utils => model_utils}/checkpointing.py (100%) rename src/llamafactory/model/{utils => model_utils}/embedding.py (100%) rename src/llamafactory/model/{utils => model_utils}/longlora.py (100%) rename src/llamafactory/model/{utils => model_utils}/misc.py (100%) rename src/llamafactory/model/{utils => model_utils}/mod.py (100%) rename src/llamafactory/model/{utils => model_utils}/moe.py (100%) rename src/llamafactory/model/{utils => model_utils}/quantization.py (100%) rename src/llamafactory/model/{utils => model_utils}/rope.py (100%) rename src/llamafactory/model/{utils => model_utils}/unsloth.py (100%) rename src/llamafactory/model/{utils => model_utils}/valuehead.py (100%) rename src/llamafactory/model/{utils => model_utils}/visual.py (100%) rename src/llamafactory/train/ppo/{utils.py => ppo_utils.py} (100%) rename src/llamafactory/train/{utils.py => trainer_utils.py} (100%) diff --git a/src/llamafactory/chat/vllm_engine.py b/src/llamafactory/chat/vllm_engine.py index e193704a..87ce8684 100644 --- a/src/llamafactory/chat/vllm_engine.py +++ b/src/llamafactory/chat/vllm_engine.py @@ -6,7 +6,7 @@ from ..extras.logging import get_logger from ..extras.misc import get_device_count from ..extras.packages import is_vllm_available from ..model import load_config, load_tokenizer -from ..model.utils.visual import LlavaMultiModalProjectorForYiVLForVLLM +from ..model.model_utils.visual import LlavaMultiModalProjectorForYiVLForVLLM from .base_engine import BaseEngine, Response diff --git a/src/llamafactory/data/__init__.py b/src/llamafactory/data/__init__.py index 44887d24..b08691d3 100644 --- a/src/llamafactory/data/__init__.py +++ b/src/llamafactory/data/__init__.py @@ -1,16 +1,16 @@ from .collator import KTODataCollatorWithPadding, PairwiseDataCollatorWithPadding +from .data_utils import Role, split_dataset from .loader import get_dataset -from .template import Template, get_template_and_fix_tokenizer, templates -from .utils import Role, split_dataset +from .template import TEMPLATES, Template, get_template_and_fix_tokenizer __all__ = [ "KTODataCollatorWithPadding", "PairwiseDataCollatorWithPadding", - "get_dataset", - "Template", - "get_template_and_fix_tokenizer", - "templates", "Role", "split_dataset", + "get_dataset", + "TEMPLATES", + "Template", + "get_template_and_fix_tokenizer", ] diff --git a/src/llamafactory/data/aligner.py b/src/llamafactory/data/aligner.py index 2a382c60..434956af 100644 --- a/src/llamafactory/data/aligner.py +++ b/src/llamafactory/data/aligner.py @@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Union from datasets import Features from ..extras.logging import get_logger -from .utils import Role +from .data_utils import Role if TYPE_CHECKING: diff --git a/src/llamafactory/data/utils.py b/src/llamafactory/data/data_utils.py similarity index 100% rename from src/llamafactory/data/utils.py rename to src/llamafactory/data/data_utils.py diff --git a/src/llamafactory/data/loader.py b/src/llamafactory/data/loader.py index 859f9a93..2c236c76 100644 --- a/src/llamafactory/data/loader.py +++ b/src/llamafactory/data/loader.py @@ -10,10 +10,10 @@ from ..extras.constants import FILEEXT2TYPE from ..extras.logging import get_logger from ..extras.misc import has_tokenized_data from .aligner import align_dataset +from .data_utils import merge_dataset from .parser import get_dataset_list from .preprocess import get_preprocess_and_print_func from .template import get_template_and_fix_tokenizer -from .utils import merge_dataset if TYPE_CHECKING: diff --git a/src/llamafactory/data/processors/feedback.py b/src/llamafactory/data/processors/feedback.py index 1aaff0ab..dc7d817c 100644 --- a/src/llamafactory/data/processors/feedback.py +++ b/src/llamafactory/data/processors/feedback.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional from ...extras.constants import IGNORE_INDEX from ...extras.logging import get_logger -from .mm_utils import get_paligemma_token_type_ids, get_pixel_values +from .processor_utils import get_paligemma_token_type_ids, get_pixel_values if TYPE_CHECKING: diff --git a/src/llamafactory/data/processors/pairwise.py b/src/llamafactory/data/processors/pairwise.py index 69dab34a..8ad3979f 100644 --- a/src/llamafactory/data/processors/pairwise.py +++ b/src/llamafactory/data/processors/pairwise.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional from ...extras.constants import IGNORE_INDEX from ...extras.logging import get_logger -from .mm_utils import get_paligemma_token_type_ids, get_pixel_values +from .processor_utils import get_paligemma_token_type_ids, get_pixel_values if TYPE_CHECKING: diff --git a/src/llamafactory/data/processors/mm_utils.py b/src/llamafactory/data/processors/processor_utils.py similarity index 100% rename from src/llamafactory/data/processors/mm_utils.py rename to src/llamafactory/data/processors/processor_utils.py diff --git a/src/llamafactory/data/processors/supervised.py b/src/llamafactory/data/processors/supervised.py index b119aa22..d90a32ac 100644 --- a/src/llamafactory/data/processors/supervised.py +++ b/src/llamafactory/data/processors/supervised.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional from ...extras.constants import IGNORE_INDEX from ...extras.logging import get_logger -from .mm_utils import get_paligemma_token_type_ids, get_pixel_values +from .processor_utils import get_paligemma_token_type_ids, get_pixel_values if TYPE_CHECKING: diff --git a/src/llamafactory/data/processors/unsupervised.py b/src/llamafactory/data/processors/unsupervised.py index 6a9f9460..e00bde55 100644 --- a/src/llamafactory/data/processors/unsupervised.py +++ b/src/llamafactory/data/processors/unsupervised.py @@ -1,8 +1,8 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional from ...extras.logging import get_logger -from ..utils import Role -from .mm_utils import get_paligemma_token_type_ids, get_pixel_values +from ..data_utils import Role +from .processor_utils import get_paligemma_token_type_ids, get_pixel_values if TYPE_CHECKING: diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index fe0211c6..3dce5ec6 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -2,8 +2,8 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, Dict, List, Optional, Sequence, Tuple, Union from ..extras.logging import get_logger +from .data_utils import Role, infer_max_len from .formatter import EmptyFormatter, FunctionFormatter, StringFormatter, ToolFormatter -from .utils import Role, infer_max_len if TYPE_CHECKING: @@ -196,7 +196,7 @@ class Llama2Template(Template): return self._make_pairs(encoded_messages, cutoff_len, reserved_label_len) -templates: Dict[str, Template] = {} +TEMPLATES: Dict[str, Template] = {} def _register_template( @@ -248,7 +248,7 @@ def _register_template( default_function_formatter = FunctionFormatter(slots=["Action: {{name}}\nAction Input: {{arguments}}"] + eos_slots) default_tool_formatter = ToolFormatter(tool_format="default") default_separator_formatter = EmptyFormatter() - templates[name] = template_class( + TEMPLATES[name] = template_class( format_user=format_user or default_user_formatter, format_assistant=format_assistant or default_assistant_formatter, format_system=format_system or default_user_formatter, @@ -348,9 +348,9 @@ def get_template_and_fix_tokenizer( name: Optional[str] = None, ) -> Template: if name is None: - template = templates["empty"] # placeholder + template = TEMPLATES["empty"] # placeholder else: - template = templates.get(name, None) + template = TEMPLATES.get(name, None) if template is None: raise ValueError("Template {} does not exist.".format(name)) diff --git a/src/llamafactory/model/__init__.py b/src/llamafactory/model/__init__.py index 88f666c8..9d23d59f 100644 --- a/src/llamafactory/model/__init__.py +++ b/src/llamafactory/model/__init__.py @@ -1,12 +1,12 @@ from .loader import load_config, load_model, load_tokenizer -from .utils.misc import find_all_linear_modules -from .utils.valuehead import load_valuehead_params +from .model_utils.misc import find_all_linear_modules +from .model_utils.valuehead import load_valuehead_params __all__ = [ "load_config", "load_model", "load_tokenizer", - "load_valuehead_params", "find_all_linear_modules", + "load_valuehead_params", ] diff --git a/src/llamafactory/model/adapter.py b/src/llamafactory/model/adapter.py index a9204ef0..1a77d613 100644 --- a/src/llamafactory/model/adapter.py +++ b/src/llamafactory/model/adapter.py @@ -7,9 +7,9 @@ from transformers.integrations import is_deepspeed_zero3_enabled from transformers.modeling_utils import is_fsdp_enabled from ..extras.logging import get_logger -from .utils.misc import find_all_linear_modules, find_expanded_modules -from .utils.quantization import QuantizationMethod -from .utils.unsloth import get_unsloth_peft_model, load_unsloth_peft_model +from .model_utils.misc import find_all_linear_modules, find_expanded_modules +from .model_utils.quantization import QuantizationMethod +from .model_utils.unsloth import get_unsloth_peft_model, load_unsloth_peft_model if TYPE_CHECKING: diff --git a/src/llamafactory/model/loader.py b/src/llamafactory/model/loader.py index 8f3309b3..697a04e7 100644 --- a/src/llamafactory/model/loader.py +++ b/src/llamafactory/model/loader.py @@ -6,11 +6,11 @@ from trl import AutoModelForCausalLMWithValueHead from ..extras.logging import get_logger from ..extras.misc import count_parameters, try_download_model_from_ms from .adapter import init_adapter +from .model_utils.misc import register_autoclass +from .model_utils.mod import convert_pretrained_model_to_mod, load_mod_pretrained_model +from .model_utils.unsloth import load_unsloth_pretrained_model +from .model_utils.valuehead import load_valuehead_params from .patcher import patch_config, patch_model, patch_tokenizer, patch_valuehead_model -from .utils.misc import register_autoclass -from .utils.mod import convert_pretrained_model_to_mod, load_mod_pretrained_model -from .utils.unsloth import load_unsloth_pretrained_model -from .utils.valuehead import load_valuehead_params if TYPE_CHECKING: diff --git a/src/llamafactory/model/utils/__init__.py b/src/llamafactory/model/model_utils/__init__.py similarity index 100% rename from src/llamafactory/model/utils/__init__.py rename to src/llamafactory/model/model_utils/__init__.py diff --git a/src/llamafactory/model/utils/attention.py b/src/llamafactory/model/model_utils/attention.py similarity index 100% rename from src/llamafactory/model/utils/attention.py rename to src/llamafactory/model/model_utils/attention.py diff --git a/src/llamafactory/model/utils/checkpointing.py b/src/llamafactory/model/model_utils/checkpointing.py similarity index 100% rename from src/llamafactory/model/utils/checkpointing.py rename to src/llamafactory/model/model_utils/checkpointing.py diff --git a/src/llamafactory/model/utils/embedding.py b/src/llamafactory/model/model_utils/embedding.py similarity index 100% rename from src/llamafactory/model/utils/embedding.py rename to src/llamafactory/model/model_utils/embedding.py diff --git a/src/llamafactory/model/utils/longlora.py b/src/llamafactory/model/model_utils/longlora.py similarity index 100% rename from src/llamafactory/model/utils/longlora.py rename to src/llamafactory/model/model_utils/longlora.py diff --git a/src/llamafactory/model/utils/misc.py b/src/llamafactory/model/model_utils/misc.py similarity index 100% rename from src/llamafactory/model/utils/misc.py rename to src/llamafactory/model/model_utils/misc.py diff --git a/src/llamafactory/model/utils/mod.py b/src/llamafactory/model/model_utils/mod.py similarity index 100% rename from src/llamafactory/model/utils/mod.py rename to src/llamafactory/model/model_utils/mod.py diff --git a/src/llamafactory/model/utils/moe.py b/src/llamafactory/model/model_utils/moe.py similarity index 100% rename from src/llamafactory/model/utils/moe.py rename to src/llamafactory/model/model_utils/moe.py diff --git a/src/llamafactory/model/utils/quantization.py b/src/llamafactory/model/model_utils/quantization.py similarity index 100% rename from src/llamafactory/model/utils/quantization.py rename to src/llamafactory/model/model_utils/quantization.py diff --git a/src/llamafactory/model/utils/rope.py b/src/llamafactory/model/model_utils/rope.py similarity index 100% rename from src/llamafactory/model/utils/rope.py rename to src/llamafactory/model/model_utils/rope.py diff --git a/src/llamafactory/model/utils/unsloth.py b/src/llamafactory/model/model_utils/unsloth.py similarity index 100% rename from src/llamafactory/model/utils/unsloth.py rename to src/llamafactory/model/model_utils/unsloth.py diff --git a/src/llamafactory/model/utils/valuehead.py b/src/llamafactory/model/model_utils/valuehead.py similarity index 100% rename from src/llamafactory/model/utils/valuehead.py rename to src/llamafactory/model/model_utils/valuehead.py diff --git a/src/llamafactory/model/utils/visual.py b/src/llamafactory/model/model_utils/visual.py similarity index 100% rename from src/llamafactory/model/utils/visual.py rename to src/llamafactory/model/model_utils/visual.py diff --git a/src/llamafactory/model/patcher.py b/src/llamafactory/model/patcher.py index 1a8ce607..87c92315 100644 --- a/src/llamafactory/model/patcher.py +++ b/src/llamafactory/model/patcher.py @@ -10,15 +10,15 @@ from transformers.modeling_utils import is_fsdp_enabled from ..extras.logging import get_logger from ..extras.misc import infer_optim_dtype -from .utils.attention import configure_attn_implementation, print_attn_implementation -from .utils.checkpointing import prepare_model_for_training -from .utils.embedding import resize_embedding_layer -from .utils.longlora import configure_longlora -from .utils.moe import add_z3_leaf_module, configure_moe -from .utils.quantization import configure_quantization -from .utils.rope import configure_rope -from .utils.valuehead import prepare_valuehead_model -from .utils.visual import autocast_projector_dtype, configure_visual_model +from .model_utils.attention import configure_attn_implementation, print_attn_implementation +from .model_utils.checkpointing import prepare_model_for_training +from .model_utils.embedding import resize_embedding_layer +from .model_utils.longlora import configure_longlora +from .model_utils.moe import add_z3_leaf_module, configure_moe +from .model_utils.quantization import configure_quantization +from .model_utils.rope import configure_rope +from .model_utils.valuehead import prepare_valuehead_model +from .model_utils.visual import autocast_projector_dtype, configure_visual_model if TYPE_CHECKING: diff --git a/src/llamafactory/train/dpo/trainer.py b/src/llamafactory/train/dpo/trainer.py index 6f1da34e..f64c287f 100644 --- a/src/llamafactory/train/dpo/trainer.py +++ b/src/llamafactory/train/dpo/trainer.py @@ -10,7 +10,7 @@ from trl import DPOTrainer from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX -from ..utils import create_custom_optimzer, create_custom_scheduler, get_ref_context +from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_ref_context if TYPE_CHECKING: diff --git a/src/llamafactory/train/dpo/workflow.py b/src/llamafactory/train/dpo/workflow.py index 61a3e2f0..992985b0 100644 --- a/src/llamafactory/train/dpo/workflow.py +++ b/src/llamafactory/train/dpo/workflow.py @@ -7,7 +7,7 @@ from ...extras.constants import IGNORE_INDEX from ...extras.ploting import plot_loss from ...hparams import ModelArguments from ...model import load_model, load_tokenizer -from ..utils import create_modelcard_and_push, create_ref_model +from ..trainer_utils import create_modelcard_and_push, create_ref_model from .trainer import CustomDPOTrainer diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index 03cad5a7..1610ccfa 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -9,7 +9,7 @@ from trl import KTOTrainer from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX -from ..utils import create_custom_optimzer, create_custom_scheduler, get_ref_context +from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_ref_context if TYPE_CHECKING: diff --git a/src/llamafactory/train/kto/workflow.py b/src/llamafactory/train/kto/workflow.py index 26dc770c..c79b160b 100644 --- a/src/llamafactory/train/kto/workflow.py +++ b/src/llamafactory/train/kto/workflow.py @@ -5,7 +5,7 @@ from ...extras.constants import IGNORE_INDEX from ...extras.ploting import plot_loss from ...hparams import ModelArguments from ...model import load_model, load_tokenizer -from ..utils import create_modelcard_and_push, create_ref_model +from ..trainer_utils import create_modelcard_and_push, create_ref_model from .trainer import CustomKTOTrainer diff --git a/src/llamafactory/train/ppo/utils.py b/src/llamafactory/train/ppo/ppo_utils.py similarity index 100% rename from src/llamafactory/train/ppo/utils.py rename to src/llamafactory/train/ppo/ppo_utils.py diff --git a/src/llamafactory/train/ppo/trainer.py b/src/llamafactory/train/ppo/trainer.py index b0c7e25d..7addfc3c 100644 --- a/src/llamafactory/train/ppo/trainer.py +++ b/src/llamafactory/train/ppo/trainer.py @@ -19,8 +19,8 @@ from trl.models.utils import unwrap_model_for_generation from ...extras.callbacks import FixValueHeadModelCallback, LogCallback from ...extras.logging import get_logger from ...extras.misc import AverageMeter, count_parameters, get_current_device, get_logits_processor -from ..utils import create_custom_optimzer, create_custom_scheduler -from .utils import dump_layernorm, get_rewards_from_server, replace_model, restore_layernorm +from ..trainer_utils import create_custom_optimzer, create_custom_scheduler +from .ppo_utils import dump_layernorm, get_rewards_from_server, replace_model, restore_layernorm if TYPE_CHECKING: diff --git a/src/llamafactory/train/ppo/workflow.py b/src/llamafactory/train/ppo/workflow.py index 4383bcdc..111704c6 100644 --- a/src/llamafactory/train/ppo/workflow.py +++ b/src/llamafactory/train/ppo/workflow.py @@ -9,7 +9,7 @@ from ...extras.callbacks import FixValueHeadModelCallback from ...extras.misc import fix_valuehead_checkpoint from ...extras.ploting import plot_loss from ...model import load_model, load_tokenizer -from ..utils import create_ref_model, create_reward_model +from ..trainer_utils import create_ref_model, create_reward_model from .trainer import CustomPPOTrainer diff --git a/src/llamafactory/train/pt/trainer.py b/src/llamafactory/train/pt/trainer.py index b7b80f88..1d96e82f 100644 --- a/src/llamafactory/train/pt/trainer.py +++ b/src/llamafactory/train/pt/trainer.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Dict, Optional from transformers import Trainer from ...extras.logging import get_logger -from ..utils import create_custom_optimzer, create_custom_scheduler +from ..trainer_utils import create_custom_optimzer, create_custom_scheduler if TYPE_CHECKING: diff --git a/src/llamafactory/train/pt/workflow.py b/src/llamafactory/train/pt/workflow.py index 9f945901..8a635567 100644 --- a/src/llamafactory/train/pt/workflow.py +++ b/src/llamafactory/train/pt/workflow.py @@ -8,7 +8,7 @@ from transformers import DataCollatorForLanguageModeling from ...data import get_dataset, split_dataset from ...extras.ploting import plot_loss from ...model import load_model, load_tokenizer -from ..utils import create_modelcard_and_push +from ..trainer_utils import create_modelcard_and_push from .trainer import CustomTrainer diff --git a/src/llamafactory/train/rm/trainer.py b/src/llamafactory/train/rm/trainer.py index d49dd67b..bfb344dc 100644 --- a/src/llamafactory/train/rm/trainer.py +++ b/src/llamafactory/train/rm/trainer.py @@ -7,7 +7,7 @@ import torch from transformers import Trainer from ...extras.logging import get_logger -from ..utils import create_custom_optimzer, create_custom_scheduler +from ..trainer_utils import create_custom_optimzer, create_custom_scheduler if TYPE_CHECKING: diff --git a/src/llamafactory/train/rm/workflow.py b/src/llamafactory/train/rm/workflow.py index 621d03b7..2e9e194b 100644 --- a/src/llamafactory/train/rm/workflow.py +++ b/src/llamafactory/train/rm/workflow.py @@ -7,7 +7,7 @@ from ...extras.callbacks import FixValueHeadModelCallback from ...extras.misc import fix_valuehead_checkpoint from ...extras.ploting import plot_loss from ...model import load_model, load_tokenizer -from ..utils import create_modelcard_and_push +from ..trainer_utils import create_modelcard_and_push from .metric import compute_accuracy from .trainer import PairwiseTrainer diff --git a/src/llamafactory/train/sft/trainer.py b/src/llamafactory/train/sft/trainer.py index 35671e1b..c063b214 100644 --- a/src/llamafactory/train/sft/trainer.py +++ b/src/llamafactory/train/sft/trainer.py @@ -9,7 +9,7 @@ from transformers import Seq2SeqTrainer from ...extras.constants import IGNORE_INDEX from ...extras.logging import get_logger -from ..utils import create_custom_optimzer, create_custom_scheduler +from ..trainer_utils import create_custom_optimzer, create_custom_scheduler if TYPE_CHECKING: diff --git a/src/llamafactory/train/sft/workflow.py b/src/llamafactory/train/sft/workflow.py index d9d7c8e9..f09b5173 100644 --- a/src/llamafactory/train/sft/workflow.py +++ b/src/llamafactory/train/sft/workflow.py @@ -9,7 +9,7 @@ from ...extras.constants import IGNORE_INDEX from ...extras.misc import get_logits_processor from ...extras.ploting import plot_loss from ...model import load_model, load_tokenizer -from ..utils import create_modelcard_and_push +from ..trainer_utils import create_modelcard_and_push from .metric import ComputeMetrics from .trainer import CustomSeq2SeqTrainer diff --git a/src/llamafactory/train/utils.py b/src/llamafactory/train/trainer_utils.py similarity index 100% rename from src/llamafactory/train/utils.py rename to src/llamafactory/train/trainer_utils.py diff --git a/src/llamafactory/webui/components/top.py b/src/llamafactory/webui/components/top.py index ca093584..c794d0aa 100644 --- a/src/llamafactory/webui/components/top.py +++ b/src/llamafactory/webui/components/top.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING, Dict -from ...data import templates +from ...data import TEMPLATES from ...extras.constants import METHODS, SUPPORTED_MODELS from ...extras.packages import is_gradio_available from ..common import get_model_info, list_checkpoints, save_config @@ -30,7 +30,7 @@ def create_top() -> Dict[str, "Component"]: with gr.Accordion(open=False) as advanced_tab: with gr.Row(): quantization_bit = gr.Dropdown(choices=["none", "8", "4"], value="none", scale=2) - template = gr.Dropdown(choices=list(templates.keys()), value="default", scale=2) + template = gr.Dropdown(choices=list(TEMPLATES.keys()), value="default", scale=2) rope_scaling = gr.Radio(choices=["none", "linear", "dynamic"], value="none", scale=3) booster = gr.Radio(choices=["none", "flashattn2", "unsloth"], value="none", scale=3) visual_inputs = gr.Checkbox(scale=1) From 8e95648850fdd5075724359ffdb22beb48b75952 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Fri, 7 Jun 2024 00:22:57 +0800 Subject: [PATCH 093/169] add qwen2 models --- README.md | 7 ++- README_zh.md | 7 ++- src/llamafactory/extras/constants.py | 83 ++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 77684757..1358b6e8 100644 --- a/README.md +++ b/README.md @@ -71,14 +71,16 @@ Compared to ChatGLM's [P-Tuning](https://github.com/THUDM/ChatGLM2-6B/tree/main/ ## Changelog +[24/06/07] We supported fine-tuning the **[Qwen-2](https://qwenlm.github.io/blog/qwen2/)** series models. + [24/06/05] We supported fine-tuning the **[GLM-4-9B/GLM-4-9B-Chat](https://github.com/THUDM/GLM-4)** models. [24/05/26] We supported **[SimPO](https://arxiv.org/abs/2405.14734)** algorithm for preference learning. See [examples](examples/README.md) for usage. -[24/05/20] We supported fine-tuning the **PaliGemma** series models. Note that the PaliGemma models are pre-trained models, you need to fine-tune them with `gemma` template for chat completion. -
    Full Changelog +[24/05/20] We supported fine-tuning the **PaliGemma** series models. Note that the PaliGemma models are pre-trained models, you need to fine-tune them with `gemma` template for chat completion. + [24/05/18] We supported **[KTO](https://arxiv.org/abs/2402.01306)** algorithm for preference learning. See [examples](examples/README.md) for usage. [24/05/14] We supported training and inference on the Ascend NPU devices. Check [installation](#installation) section for details. @@ -172,6 +174,7 @@ Compared to ChatGLM's [P-Tuning](https://github.com/THUDM/ChatGLM2-6B/tree/main/ | [Phi-3](https://huggingface.co/microsoft) | 4B/7B/14B | phi | | [Qwen](https://huggingface.co/Qwen) | 1.8B/7B/14B/72B | qwen | | [Qwen1.5 (Code/MoE)](https://huggingface.co/Qwen) | 0.5B/1.8B/4B/7B/14B/32B/72B/110B | qwen | +| [Qwen2 (MoE)](https://huggingface.co/Qwen) | 0.5B/1.5B/7B/57B/72B | qwen | | [StarCoder2](https://huggingface.co/bigcode) | 3B/7B/15B | - | | [XVERSE](https://huggingface.co/xverse) | 7B/13B/65B | xverse | | [Yi (1/1.5)](https://huggingface.co/01-ai) | 6B/9B/34B | yi | diff --git a/README_zh.md b/README_zh.md index da5ff079..becec988 100644 --- a/README_zh.md +++ b/README_zh.md @@ -71,14 +71,16 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd ## 更新日志 +[24/06/07] 我们支持了 **[Qwen-2](https://qwenlm.github.io/blog/qwen2/)** 系列模型的微调。 + [24/06/05] 我们支持了 **[GLM-4-9B/GLM-4-9B-Chat](https://github.com/THUDM/GLM-4)** 模型的微调。 [24/05/26] 我们支持了 **[SimPO](https://arxiv.org/abs/2405.14734)** 偏好对齐算法。详细用法请参照 [examples](examples/README_zh.md)。 -[24/05/20] 我们支持了 **PaliGemma** 系列模型的微调。注意 PaliGemma 是预训练模型,你需要使用 `gemma` 模板进行微调使其获得对话能力。 -
    展开日志 +[24/05/20] 我们支持了 **PaliGemma** 系列模型的微调。注意 PaliGemma 是预训练模型,你需要使用 `gemma` 模板进行微调使其获得对话能力。 + [24/05/18] 我们支持了 **[KTO](https://arxiv.org/abs/2402.01306)** 偏好对齐算法。详细用法请参照 [examples](examples/README_zh.md)。 [24/05/14] 我们支持了昇腾 NPU 设备的训练和推理。详情请查阅[安装](#安装-llama-factory)部分。 @@ -172,6 +174,7 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd | [Phi-3](https://huggingface.co/microsoft) | 4B/7B/14B | phi | | [Qwen](https://huggingface.co/Qwen) | 1.8B/7B/14B/72B | qwen | | [Qwen1.5 (Code/MoE)](https://huggingface.co/Qwen) | 0.5B/1.8B/4B/7B/14B/32B/72B/110B | qwen | +| [Qwen2 (MoE)](https://huggingface.co/Qwen) | 0.5B/1.5B/7B/57B/72B | qwen | | [StarCoder2](https://huggingface.co/bigcode) | 3B/7B/15B | - | | [XVERSE](https://huggingface.co/xverse) | 7B/13B/65B | xverse | | [Yi (1/1.5)](https://huggingface.co/01-ai) | 6B/9B/34B | yi | diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index 4d9cb26d..4099fe56 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -1078,6 +1078,89 @@ register_model_group( ) +register_model_group( + models={ + "Qwen2-0.5B": { + DownloadSource.DEFAULT: "Qwen/Qwen2-0.5B", + DownloadSource.MODELSCOPE: "qwen/Qwen2-0.5B", + }, + "Qwen2-1.5B": { + DownloadSource.DEFAULT: "Qwen/Qwen2-1.5B", + DownloadSource.MODELSCOPE: "qwen/Qwen2-1.5B", + }, + "Qwen2-7B": { + DownloadSource.DEFAULT: "Qwen/Qwen2-7B", + DownloadSource.MODELSCOPE: "qwen/Qwen2-7B", + }, + "Qwen2-72B": { + DownloadSource.DEFAULT: "Qwen/Qwen2-72B", + DownloadSource.MODELSCOPE: "qwen/Qwen2-72B", + }, + "Qwen2-MoE-57B": { + DownloadSource.DEFAULT: "Qwen/Qwen2-57B-A14B", + DownloadSource.MODELSCOPE: "qwen/Qwen2-57B-A14B", + }, + "Qwen2-0.5B-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-0.5B-Instruct", + DownloadSource.MODELSCOPE: "qwen/Qwen2-0.5B-Instruct", + }, + "Qwen2-1.5B-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-1.5B-Instruct", + DownloadSource.MODELSCOPE: "qwen/Qwen2-1.5B-Instruct", + }, + "Qwen2-7B-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-7B-Instruct", + DownloadSource.MODELSCOPE: "qwen/Qwen2-7B-Instruct", + }, + "Qwen2-72B-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-72B-Instruct", + DownloadSource.MODELSCOPE: "qwen/Qwen2-72B-Instruct", + }, + "Qwen2-MoE-57B-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-57B-A14B-Instruct", + DownloadSource.MODELSCOPE: "qwen/Qwen2-57B-A14B-Instruct", + }, + "Qwen2-0.5B-int8-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-0.5B-Instruct-GPTQ-Int8", + DownloadSource.MODELSCOPE: "qwen/Qwen2-0.5B-Instruct-GPTQ-Int8", + }, + "Qwen2-0.5B-int4-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-0.5B-Instruct-AWQ", + DownloadSource.MODELSCOPE: "qwen/Qwen2-0.5B-Instruct-AWQ", + }, + "Qwen2-1.5B-int8-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-1.5B-Instruct-GPTQ-Int8", + DownloadSource.MODELSCOPE: "qwen/Qwen2-1.5B-Instruct-GPTQ-Int8", + }, + "Qwen2-1.5B-int4-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-1.5B-Instruct-AWQ", + DownloadSource.MODELSCOPE: "qwen/Qwen2-1.5B-Instruct-AWQ", + }, + "Qwen2-7B-int8-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-7B-Instruct-GPTQ-Int8", + DownloadSource.MODELSCOPE: "qwen/Qwen2-7B-Instruct-GPTQ-Int8", + }, + "Qwen2-7B-int4-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-7B-Instruct-AWQ", + DownloadSource.MODELSCOPE: "qwen/Qwen2-7B-Instruct-AWQ", + }, + "Qwen2-72B-int8-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-72B-Instruct-GPTQ-Int8", + DownloadSource.MODELSCOPE: "qwen/Qwen2-72B-Instruct-GPTQ-Int8", + }, + "Qwen2-72B-int4-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-72B-Instruct-AWQ", + DownloadSource.MODELSCOPE: "qwen/Qwen2-72B-Instruct-AWQ", + }, + "Qwen2-MoE-57B-int4-Chat": { + DownloadSource.DEFAULT: "Qwen/Qwen2-57B-A14B-Instruct-GPTQ-Int4", + DownloadSource.MODELSCOPE: "qwen/Qwen2-57B-A14B-Instruct-GPTQ-Int4", + }, + }, + template="qwen", +) + + register_model_group( models={ "SOLAR-10.7B": { From 8cecade7082a52f413517ea20b1c5dd812db8e53 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Fri, 7 Jun 2024 03:38:04 +0800 Subject: [PATCH 094/169] Update supervised.py --- .../data/processors/supervised.py | 233 ++++++++---------- 1 file changed, 107 insertions(+), 126 deletions(-) diff --git a/src/llamafactory/data/processors/supervised.py b/src/llamafactory/data/processors/supervised.py index eaceb5b8..cd49fd0c 100644 --- a/src/llamafactory/data/processors/supervised.py +++ b/src/llamafactory/data/processors/supervised.py @@ -1,10 +1,10 @@ -import itertools +import bisect from collections import defaultdict -from typing import TYPE_CHECKING, Any, Dict, List, Optional +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Tuple from ...extras.constants import IGNORE_INDEX from ...extras.logging import get_logger -from .mm_utils import get_paligemma_token_type_ids, get_pixel_values +from .mm_utils import get_paligemma_token_type_ids, get_pixel_values, greedy_knapsack if TYPE_CHECKING: @@ -18,29 +18,19 @@ if TYPE_CHECKING: logger = get_logger(__name__) -def binary_search_for_fit(numbers, capacity): +def search_for_fit(numbers: Sequence[int], capacity: int) -> int: + r""" + Finds the index of largest number that fits into the knapsack with the given capacity. """ - Perform binary search to find the largest number that fits into the knapsack with the given capacity. - """ - left, right = 0, len(numbers) - 1 - result = -1 # If no number fits, return -1 - - while left <= right: - mid = (left + right) // 2 - if numbers[mid] <= capacity: - result = mid - left = mid + 1 - else: - right = mid - 1 - - return result + index = bisect.bisect(numbers, capacity) + return -1 if index == 0 else (index - 1) -def efficient_greedy_knapsack(numbers, capacity): - """ +def greedy_knapsack(numbers: List[int], capacity: int) -> List[List[int]]: + r""" An efficient greedy algorithm with binary search for the knapsack problem. """ - numbers.sort() # Sort numbers in ascending order for binary search + numbers.sort() # sort numbers in ascending order for binary search knapsacks = [] while numbers: @@ -48,22 +38,60 @@ def efficient_greedy_knapsack(numbers, capacity): remaining_capacity = capacity while True: - index = binary_search_for_fit(numbers, remaining_capacity) + index = search_for_fit(numbers, remaining_capacity) if index == -1: - break # No more numbers fit in this knapsack + break # no more numbers fit in this knapsack - # Add the found number to the knapsack and update the remaining capacity - current_knapsack.append(numbers[index]) - remaining_capacity -= numbers[index] - - # Remove the number from the list - numbers.pop(index) + remaining_capacity -= numbers[index] # update the remaining capacity + current_knapsack.append(numbers.pop(index)) # add the number to knapsack knapsacks.append(current_knapsack) return knapsacks +def _encode_supervised_example( + prompt: Sequence[Dict[str, str]], + response: Sequence[Dict[str, str]], + system: Optional[str], + tools: Optional[str], + template: "Template", + tokenizer: "PreTrainedTokenizer", + processor: Optional["ProcessorMixin"], + data_args: "DataArguments", +) -> Tuple[List[int], List[int]]: + if processor is not None and not hasattr(processor, "image_seq_length"): # llava-like models + prompt[0]["content"] = template.image_token + prompt[0]["content"] + + messages = prompt + response + input_ids, labels = [], [] + + if processor is not None and hasattr(processor, "image_seq_length"): # paligemma models + image_token_id = tokenizer.convert_tokens_to_ids(template.image_token) + input_ids += [image_token_id] * getattr(processor, "image_seq_length") + labels += [IGNORE_INDEX] * getattr(processor, "image_seq_length") + + encoded_pairs = template.encode_multiturn( + tokenizer, messages, system, tools, data_args.cutoff_len, data_args.reserved_label_len + ) + for turn_idx, (source_ids, target_ids) in enumerate(encoded_pairs): + if data_args.train_on_prompt: + source_mask = source_ids + elif turn_idx != 0 and template.efficient_eos: + source_mask = [tokenizer.eos_token_id] + [IGNORE_INDEX] * (len(source_ids) - 1) + else: + source_mask = [IGNORE_INDEX] * len(source_ids) + + input_ids += source_ids + target_ids + labels += source_mask + target_ids + + if template.efficient_eos: + input_ids += [tokenizer.eos_token_id] + labels += [tokenizer.eos_token_id] + + return input_ids, labels + + def preprocess_supervised_dataset( examples: Dict[str, List[Any]], template: "Template", @@ -84,41 +112,16 @@ def preprocess_supervised_dataset( logger.warning("Dropped invalid example: {}".format(examples["prompt"][i] + examples["response"][i])) continue - if processor is not None and not hasattr(processor, "image_seq_length"): # llava-like models - examples["prompt"][i][0]["content"] = template.image_token + examples["prompt"][i][0]["content"] - - messages = examples["prompt"][i] + examples["response"][i] - input_ids, labels = [], [] - - if processor is not None and hasattr(processor, "image_seq_length"): # paligemma models - image_token_id = tokenizer.convert_tokens_to_ids(template.image_token) - input_ids += [image_token_id] * getattr(processor, "image_seq_length") - labels += [IGNORE_INDEX] * getattr(processor, "image_seq_length") - - for turn_idx, (source_ids, target_ids) in enumerate( - template.encode_multiturn( - tokenizer, - messages, - examples["system"][i], - examples["tools"][i], - data_args.cutoff_len, - data_args.reserved_label_len, - ) - ): - if data_args.train_on_prompt: - source_mask = source_ids - elif turn_idx != 0 and template.efficient_eos: - source_mask = [tokenizer.eos_token_id] + [IGNORE_INDEX] * (len(source_ids) - 1) - else: - source_mask = [IGNORE_INDEX] * len(source_ids) - - input_ids += source_ids + target_ids - labels += source_mask + target_ids - - if template.efficient_eos: - input_ids += [tokenizer.eos_token_id] - labels += [tokenizer.eos_token_id] - + input_ids, labels = _encode_supervised_example( + prompt=examples["prompt"][i], + response=examples["response"][i], + system=examples["system"][i], + tools=examples["tools"][i], + template=template, + tokenizer=tokenizer, + processor=processor, + data_args=data_args, + ) model_inputs["input_ids"].append(input_ids) model_inputs["attention_mask"].append([1] * len(input_ids)) model_inputs["labels"].append(labels) @@ -138,76 +141,54 @@ def preprocess_packed_supervised_dataset( ) -> Dict[str, List[List[int]]]: # build inputs with format ` X1 Y1 X2 Y2 ` # and labels with format ` ... Y1 ... Y2 ` - model_inputs = {"input_ids": [], "attention_mask": [], "labels": []} - input_ids, labels = [], [] + valid_num = 0 + batch_input_ids, batch_labels = [], [] + lengths = [] + length2indexes = defaultdict(list) for i in range(len(examples["prompt"])): if len(examples["prompt"][i]) % 2 != 1 or len(examples["response"][i]) != 1: logger.warning("Dropped invalid example: {}".format(examples["prompt"][i] + examples["response"][i])) continue - messages = examples["prompt"][i] + examples["response"][i] - for source_ids, target_ids in template.encode_multiturn( - tokenizer, messages, examples["system"][i], examples["tools"][i] - ): - if data_args.train_on_prompt: - source_mask = source_ids - else: - source_mask = [IGNORE_INDEX] * len(source_ids) - - input_ids.append(source_ids + target_ids) - labels.append(source_mask + target_ids) - - # prepare for packing - lengths = [] - length2examples_idx = defaultdict(list) - for idx, example in enumerate(input_ids): - length = len(example) + input_ids, labels = _encode_supervised_example( + prompt=examples["prompt"][i], + response=examples["response"][i], + system=examples["system"][i], + tools=examples["tools"][i], + template=template, + tokenizer=tokenizer, + processor=None, + data_args=data_args, + ) + length = len(input_ids) if length > data_args.cutoff_len: - logger.warning("Dropped example with length {} > cutoff_len {}".format(length, data_args.cutoff_len)) - continue - lengths.append(length) - length2examples_idx[length].append(idx) - - # cutoff_len - 1 for efficient_eos - knapsacks = efficient_greedy_knapsack(lengths, data_args.cutoff_len - int(template.efficient_eos)) - - for knapsack in knapsacks: - packed_input_ids = [] - packed_labels = [] - - total_length = 0 - for length in knapsack: - total_length += length - idx = length2examples_idx[length].pop() - packed_input_ids.append(input_ids[idx]) - packed_labels.append(labels[idx]) - - # padding to cutoff_len - if total_length < data_args.cutoff_len: - pad_length = data_args.cutoff_len - total_length - if template.efficient_eos: - # 确保有 eos - packed_input_ids.append([tokenizer.eos_token_id] * pad_length) - packed_labels.append([tokenizer.eos_token_id] + [IGNORE_INDEX] * (pad_length - 1)) - else: - # 无 eos 的情况下,使用 0 填充? - packed_input_ids.append([0] * pad_length) - packed_labels.append([tokenizer.eos_token_id] + [IGNORE_INDEX] * (pad_length - 1)) - - elif total_length == data_args.cutoff_len: - pad_length = 0 + logger.warning("Dropped lengthy example with length {} > {}.".format(length, data_args.cutoff_len)) else: - logger.warning( - "Dropped packed example with total length {} > cutoff_len {}".format( - total_length, data_args.cutoff_len - ) - ) - continue + lengths.append(length) + length2indexes[length].append(valid_num) + batch_input_ids.append(input_ids) + batch_labels.append(labels) + valid_num += 1 - # concat all - model_inputs["input_ids"].append(list(itertools.chain(*packed_input_ids))) - model_inputs["labels"].append(list(itertools.chain(*packed_labels))) - model_inputs["attention_mask"].append([1] * total_length + [0] * pad_length) + model_inputs = {"input_ids": [], "attention_mask": [], "labels": []} + knapsacks = greedy_knapsack(lengths, data_args.cutoff_len) + for knapsack in knapsacks: + packed_input_ids, packed_labels = [], [] + for length in knapsack: + index = length2indexes[length].pop() + packed_input_ids += batch_input_ids[index] + packed_labels += batch_labels[index] + + if len(packed_input_ids) <= data_args.cutoff_len: + pad_length = data_args.cutoff_len - len(packed_input_ids) + packed_input_ids += [tokenizer.pad_token_id] * pad_length + packed_labels += [IGNORE_INDEX] * pad_length + else: + raise ValueError("The length of packed example exceeds the cutoff length.") + + model_inputs["input_ids"].append(packed_input_ids) + model_inputs["attention_mask"].append([1] * len(packed_input_ids)) + model_inputs["labels"].append(packed_labels) return model_inputs From 788e8232fc4ed58ab2439a9bc2e38f64e12c6eb3 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Fri, 7 Jun 2024 03:38:23 +0800 Subject: [PATCH 095/169] Update supervised.py --- src/llamafactory/data/processors/supervised.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llamafactory/data/processors/supervised.py b/src/llamafactory/data/processors/supervised.py index cd49fd0c..502b591c 100644 --- a/src/llamafactory/data/processors/supervised.py +++ b/src/llamafactory/data/processors/supervised.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Tuple from ...extras.constants import IGNORE_INDEX from ...extras.logging import get_logger -from .mm_utils import get_paligemma_token_type_ids, get_pixel_values, greedy_knapsack +from .mm_utils import get_paligemma_token_type_ids, get_pixel_values if TYPE_CHECKING: From c09ad8bab38bc2f151da3a924eba225111af2481 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Fri, 7 Jun 2024 03:42:08 +0800 Subject: [PATCH 096/169] Update supervised.py --- src/llamafactory/data/processors/supervised.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/llamafactory/data/processors/supervised.py b/src/llamafactory/data/processors/supervised.py index 502b591c..a340a1ab 100644 --- a/src/llamafactory/data/processors/supervised.py +++ b/src/llamafactory/data/processors/supervised.py @@ -179,15 +179,16 @@ def preprocess_packed_supervised_dataset( packed_input_ids += batch_input_ids[index] packed_labels += batch_labels[index] - if len(packed_input_ids) <= data_args.cutoff_len: + if len(packed_input_ids) < data_args.cutoff_len: pad_length = data_args.cutoff_len - len(packed_input_ids) packed_input_ids += [tokenizer.pad_token_id] * pad_length packed_labels += [IGNORE_INDEX] * pad_length - else: - raise ValueError("The length of packed example exceeds the cutoff length.") + + if len(packed_input_ids) != data_args.cutoff_len: + raise ValueError("The length of packed example should be identical to the cutoff length.") model_inputs["input_ids"].append(packed_input_ids) - model_inputs["attention_mask"].append([1] * len(packed_input_ids)) + model_inputs["attention_mask"].append([1] * data_args.cutoff_len) model_inputs["labels"].append(packed_labels) return model_inputs From ccc8b64cc21417cfd88d9b5e9bd62e15c1e834a1 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Fri, 7 Jun 2024 04:15:40 +0800 Subject: [PATCH 097/169] update data processors --- src/llamafactory/cli.py | 2 +- src/llamafactory/data/processors/feedback.py | 104 ++++++++++-------- src/llamafactory/data/processors/pairwise.py | 82 ++++++++------ .../data/processors/processor_utils.py | 41 ++++++- .../data/processors/supervised.py | 35 +----- .../data/processors/unsupervised.py | 65 +++++++---- 6 files changed, 190 insertions(+), 139 deletions(-) diff --git a/src/llamafactory/cli.py b/src/llamafactory/cli.py index 092f4cf7..b9e734e4 100644 --- a/src/llamafactory/cli.py +++ b/src/llamafactory/cli.py @@ -72,7 +72,7 @@ def main(): elif command == Command.EXPORT: export_model() elif command == Command.TRAIN: - disable_torchrun = os.environ.get("DISABLE_TORCHRUN", "0").lower() in ["true", "1"] + disable_torchrun = os.environ.get("TORCHRUN_DISABLED", "0").lower() in ["true", "1"] if disable_torchrun and get_device_count() > 1: logger.warning("`torchrun` cannot be disabled when device count > 1.") disable_torchrun = False diff --git a/src/llamafactory/data/processors/feedback.py b/src/llamafactory/data/processors/feedback.py index dc7d817c..98d83658 100644 --- a/src/llamafactory/data/processors/feedback.py +++ b/src/llamafactory/data/processors/feedback.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Optional +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Tuple from ...extras.constants import IGNORE_INDEX from ...extras.logging import get_logger @@ -16,6 +16,55 @@ if TYPE_CHECKING: logger = get_logger(__name__) +def _encode_feedback_example( + prompt: Sequence[Dict[str, str]], + response: Sequence[Dict[str, str]], + kl_response: Sequence[Dict[str, str]], + system: Optional[str], + tools: Optional[str], + template: "Template", + tokenizer: "PreTrainedTokenizer", + processor: Optional["ProcessorMixin"], + data_args: "DataArguments", +) -> Tuple[List[int], List[int], List[int], List[int], bool]: + if processor is not None and not hasattr(processor, "image_seq_length"): # llava-like models + prompt[0]["content"] = template.image_token + prompt[0]["content"] + + if response[0]["content"]: # desired example + kto_tag = True + messages = prompt + [response[0]] + else: # undesired example + kto_tag = False + messages = prompt + [response[1]] + + if kl_response[0]["content"]: + kl_messages = prompt + [kl_response[0]] + else: + kl_messages = prompt + [kl_response[1]] + + prompt_ids, response_ids = template.encode_oneturn( + tokenizer, messages, system, tools, data_args.cutoff_len, data_args.reserved_label_len + ) + _, kl_response_ids = template.encode_oneturn( + tokenizer, kl_messages, system, tools, data_args.cutoff_len, data_args.reserved_label_len + ) + + if template.efficient_eos: + response_ids += [tokenizer.eos_token_id] + kl_response_ids += [tokenizer.eos_token_id] + + if processor is not None and hasattr(processor, "image_seq_length"): # paligemma models + image_token_id = tokenizer.convert_tokens_to_ids(template.image_token) + prompt_ids = [image_token_id] * getattr(processor, "image_seq_length") + prompt_ids + + input_ids = prompt_ids + response_ids + labels = [IGNORE_INDEX] * len(prompt_ids) + response_ids + kl_input_ids = prompt_ids + kl_response_ids + kl_labels = [IGNORE_INDEX] * len(prompt_ids) + kl_response_ids + + return input_ids, labels, kl_input_ids, kl_labels, kto_tag + + def preprocess_feedback_dataset( examples: Dict[str, List[Any]], template: "Template", @@ -45,50 +94,17 @@ def preprocess_feedback_dataset( logger.warning("Dropped invalid example: {}".format(examples["prompt"][i] + examples["response"][i])) continue - if processor is not None and not hasattr(processor, "image_seq_length"): # llava-like models - examples["prompt"][i][0]["content"] = template.image_token + examples["prompt"][i][0]["content"] - - if examples["response"][i][0]["content"]: # desired example - kto_tag = True - messages = examples["prompt"][i] + [examples["response"][i][0]] - else: # undesired example - kto_tag = False - messages = examples["prompt"][i] + [examples["response"][i][1]] - - if kl_response[i][0]["content"]: - kl_messages = examples["prompt"][i] + [kl_response[i][0]] - else: - kl_messages = examples["prompt"][i] + [kl_response[i][1]] - - prompt_ids, response_ids = template.encode_oneturn( - tokenizer, - messages, - examples["system"][i], - examples["tools"][i], - data_args.cutoff_len, - data_args.reserved_label_len, + input_ids, labels, kl_input_ids, kl_labels, kto_tag = _encode_feedback_example( + prompt=examples["prompt"][i], + response=examples["response"][i], + kl_response=kl_response[i], + system=examples["system"][i], + tools=examples["tools"][i], + template=template, + tokenizer=tokenizer, + processor=processor, + data_args=data_args, ) - _, kl_response_ids = template.encode_oneturn( - tokenizer, - kl_messages, - examples["system"][i], - examples["tools"][i], - data_args.cutoff_len, - data_args.reserved_label_len, - ) - - if template.efficient_eos: - response_ids += [tokenizer.eos_token_id] - kl_response_ids += [tokenizer.eos_token_id] - - if processor is not None and hasattr(processor, "image_seq_length"): # paligemma models - image_token_id = tokenizer.convert_tokens_to_ids(template.image_token) - prompt_ids = [image_token_id] * getattr(processor, "image_seq_length") + prompt_ids - - input_ids = prompt_ids + response_ids - labels = [IGNORE_INDEX] * len(prompt_ids) + response_ids - kl_input_ids = prompt_ids + kl_response_ids - kl_labels = [IGNORE_INDEX] * len(prompt_ids) + kl_response_ids model_inputs["input_ids"].append(input_ids) model_inputs["attention_mask"].append([1] * len(input_ids)) model_inputs["labels"].append(labels) diff --git a/src/llamafactory/data/processors/pairwise.py b/src/llamafactory/data/processors/pairwise.py index 8ad3979f..fe984efa 100644 --- a/src/llamafactory/data/processors/pairwise.py +++ b/src/llamafactory/data/processors/pairwise.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Optional +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Tuple from ...extras.constants import IGNORE_INDEX from ...extras.logging import get_logger @@ -16,6 +16,44 @@ if TYPE_CHECKING: logger = get_logger(__name__) +def _encode_pairwise_example( + prompt: Sequence[Dict[str, str]], + response: Sequence[Dict[str, str]], + system: Optional[str], + tools: Optional[str], + template: "Template", + tokenizer: "PreTrainedTokenizer", + processor: Optional["ProcessorMixin"], + data_args: "DataArguments", +) -> Tuple[List[int], List[int], List[int], List[int]]: + if processor is not None and not hasattr(processor, "image_seq_length"): # llava-like models + prompt[0]["content"] = template.image_token + prompt[0]["content"] + + chosen_messages = prompt + [response[0]] + rejected_messages = prompt + [response[1]] + prompt_ids, chosen_ids = template.encode_oneturn( + tokenizer, chosen_messages, system, tools, data_args.cutoff_len, data_args.reserved_label_len + ) + _, rejected_ids = template.encode_oneturn( + tokenizer, rejected_messages, system, tools, data_args.cutoff_len, data_args.reserved_label_len + ) + + if template.efficient_eos: + chosen_ids += [tokenizer.eos_token_id] + rejected_ids += [tokenizer.eos_token_id] + + if processor is not None and hasattr(processor, "image_seq_length"): # paligemma models + image_token_id = tokenizer.convert_tokens_to_ids(template.image_token) + prompt_ids = [image_token_id] * getattr(processor, "image_seq_length") + prompt_ids + + chosen_input_ids = prompt_ids + chosen_ids + chosen_labels = [IGNORE_INDEX] * len(prompt_ids) + chosen_ids + rejected_input_ids = prompt_ids + rejected_ids + rejected_labels = [IGNORE_INDEX] * len(prompt_ids) + rejected_ids + + return chosen_input_ids, chosen_labels, rejected_input_ids, rejected_labels + + def preprocess_pairwise_dataset( examples: Dict[str, List[Any]], template: "Template", @@ -43,40 +81,16 @@ def preprocess_pairwise_dataset( logger.warning("Dropped invalid example: {}".format(examples["prompt"][i] + examples["response"][i])) continue - if processor is not None and not hasattr(processor, "image_seq_length"): # llava-like models - examples["prompt"][i][0]["content"] = template.image_token + examples["prompt"][i][0]["content"] - - chosen_messages = examples["prompt"][i] + [examples["response"][i][0]] - rejected_messages = examples["prompt"][i] + [examples["response"][i][1]] - prompt_ids, chosen_ids = template.encode_oneturn( - tokenizer, - chosen_messages, - examples["system"][i], - examples["tools"][i], - data_args.cutoff_len, - data_args.reserved_label_len, + chosen_input_ids, chosen_labels, rejected_input_ids, rejected_labels = _encode_pairwise_example( + prompt=examples["prompt"][i], + response=examples["response"][i], + system=examples["system"][i], + tools=examples["tools"][i], + template=template, + tokenizer=tokenizer, + processor=processor, + data_args=data_args, ) - _, rejected_ids = template.encode_oneturn( - tokenizer, - rejected_messages, - examples["system"][i], - examples["tools"][i], - data_args.cutoff_len, - data_args.reserved_label_len, - ) - - if template.efficient_eos: - chosen_ids += [tokenizer.eos_token_id] - rejected_ids += [tokenizer.eos_token_id] - - if processor is not None and hasattr(processor, "image_seq_length"): # paligemma models - image_token_id = tokenizer.convert_tokens_to_ids(template.image_token) - prompt_ids = [image_token_id] * getattr(processor, "image_seq_length") + prompt_ids - - chosen_input_ids = prompt_ids + chosen_ids - chosen_labels = [IGNORE_INDEX] * len(prompt_ids) + chosen_ids - rejected_input_ids = prompt_ids + rejected_ids - rejected_labels = [IGNORE_INDEX] * len(prompt_ids) + rejected_ids model_inputs["chosen_input_ids"].append(chosen_input_ids) model_inputs["chosen_attention_mask"].append([1] * len(chosen_input_ids)) model_inputs["chosen_labels"].append(chosen_labels) diff --git a/src/llamafactory/data/processors/processor_utils.py b/src/llamafactory/data/processors/processor_utils.py index abc7c4b2..9903a053 100644 --- a/src/llamafactory/data/processors/processor_utils.py +++ b/src/llamafactory/data/processors/processor_utils.py @@ -1,3 +1,4 @@ +import bisect from typing import TYPE_CHECKING, List, Sequence from ...extras.packages import is_pillow_available @@ -14,14 +15,50 @@ if TYPE_CHECKING: from transformers.image_processing_utils import BaseImageProcessor +def search_for_fit(numbers: Sequence[int], capacity: int) -> int: + r""" + Finds the index of largest number that fits into the knapsack with the given capacity. + """ + index = bisect.bisect(numbers, capacity) + return -1 if index == 0 else (index - 1) + + +def greedy_knapsack(numbers: List[int], capacity: int) -> List[List[int]]: + r""" + An efficient greedy algorithm with binary search for the knapsack problem. + """ + numbers.sort() # sort numbers in ascending order for binary search + knapsacks = [] + + while numbers: + current_knapsack = [] + remaining_capacity = capacity + + while True: + index = search_for_fit(numbers, remaining_capacity) + if index == -1: + break # no more numbers fit in this knapsack + + remaining_capacity -= numbers[index] # update the remaining capacity + current_knapsack.append(numbers.pop(index)) # add the number to knapsack + + knapsacks.append(current_knapsack) + + return knapsacks + + def get_pixel_values(images: Sequence["ImageObject"], processor: "ProcessorMixin") -> "NDArray": - # process visual inputs (currently only supports a single image) + r""" + Processes visual inputs. (currently only supports a single image) + """ image_processor: "BaseImageProcessor" = getattr(processor, "image_processor") image = images[0] if len(images) != 0 else Image.new("RGB", (100, 100), (255, 255, 255)) return image_processor(image, return_tensors="pt")["pixel_values"][0] # shape (C, H, W) def get_paligemma_token_type_ids(input_len: int, processor: "ProcessorMixin") -> List[int]: - # get paligemma token type ids for computing loss + r""" + Gets paligemma token type ids for computing loss. + """ image_seq_length = getattr(processor, "image_seq_length") return [0] * image_seq_length + [1] * (input_len - image_seq_length) diff --git a/src/llamafactory/data/processors/supervised.py b/src/llamafactory/data/processors/supervised.py index 188c9f80..19d60280 100644 --- a/src/llamafactory/data/processors/supervised.py +++ b/src/llamafactory/data/processors/supervised.py @@ -1,10 +1,9 @@ -import bisect from collections import defaultdict from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Tuple from ...extras.constants import IGNORE_INDEX from ...extras.logging import get_logger -from .processor_utils import get_paligemma_token_type_ids, get_pixel_values +from .processor_utils import get_paligemma_token_type_ids, get_pixel_values, greedy_knapsack if TYPE_CHECKING: @@ -18,38 +17,6 @@ if TYPE_CHECKING: logger = get_logger(__name__) -def search_for_fit(numbers: Sequence[int], capacity: int) -> int: - r""" - Finds the index of largest number that fits into the knapsack with the given capacity. - """ - index = bisect.bisect(numbers, capacity) - return -1 if index == 0 else (index - 1) - - -def greedy_knapsack(numbers: List[int], capacity: int) -> List[List[int]]: - r""" - An efficient greedy algorithm with binary search for the knapsack problem. - """ - numbers.sort() # sort numbers in ascending order for binary search - knapsacks = [] - - while numbers: - current_knapsack = [] - remaining_capacity = capacity - - while True: - index = search_for_fit(numbers, remaining_capacity) - if index == -1: - break # no more numbers fit in this knapsack - - remaining_capacity -= numbers[index] # update the remaining capacity - current_knapsack.append(numbers.pop(index)) # add the number to knapsack - - knapsacks.append(current_knapsack) - - return knapsacks - - def _encode_supervised_example( prompt: Sequence[Dict[str, str]], response: Sequence[Dict[str, str]], diff --git a/src/llamafactory/data/processors/unsupervised.py b/src/llamafactory/data/processors/unsupervised.py index e00bde55..f711eeac 100644 --- a/src/llamafactory/data/processors/unsupervised.py +++ b/src/llamafactory/data/processors/unsupervised.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Optional +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Tuple from ...extras.logging import get_logger from ..data_utils import Role @@ -16,6 +16,37 @@ if TYPE_CHECKING: logger = get_logger(__name__) +def _encode_unsupervised_example( + prompt: Sequence[Dict[str, str]], + response: Sequence[Dict[str, str]], + system: Optional[str], + tools: Optional[str], + template: "Template", + tokenizer: "PreTrainedTokenizer", + processor: Optional["ProcessorMixin"], + data_args: "DataArguments", +) -> Tuple[List[int], List[int]]: + if processor is not None and not hasattr(processor, "image_seq_length"): # llava-like models + prompt[0]["content"] = template.image_token + prompt[0]["content"] + + if len(response) == 1: + messages = prompt + response + else: + messages = prompt + [{"role": Role.ASSISTANT.value, "content": ""}] + + input_ids, labels = template.encode_oneturn( + tokenizer, messages, system, tools, data_args.cutoff_len, data_args.reserved_label_len + ) + if template.efficient_eos: + labels += [tokenizer.eos_token_id] + + if processor is not None and hasattr(processor, "image_seq_length"): # paligemma models + image_token_id = tokenizer.convert_tokens_to_ids(template.image_token) + input_ids = [image_token_id] * getattr(processor, "image_seq_length") + input_ids + + return input_ids, labels + + def preprocess_unsupervised_dataset( examples: Dict[str, List[Any]], template: "Template", @@ -35,30 +66,16 @@ def preprocess_unsupervised_dataset( logger.warning("Dropped invalid example: {}".format(examples["prompt"][i] + examples["response"][i])) continue - if processor is not None and not hasattr(processor, "image_seq_length"): # llava-like models - examples["prompt"][i][0]["content"] = template.image_token + examples["prompt"][i][0]["content"] - - if len(examples["response"][i]) == 1: - messages = examples["prompt"][i] + examples["response"][i] - else: - messages = examples["prompt"][i] + [{"role": Role.ASSISTANT.value, "content": ""}] - - input_ids, labels = template.encode_oneturn( - tokenizer, - messages, - examples["system"][i], - examples["tools"][i], - data_args.cutoff_len, - data_args.reserved_label_len, + input_ids, labels = _encode_unsupervised_example( + prompt=examples["prompt"][i], + response=examples["response"][i], + system=examples["system"][i], + tools=examples["tools"][i], + template=template, + tokenizer=tokenizer, + processor=processor, + data_args=data_args, ) - - if template.efficient_eos: - labels += [tokenizer.eos_token_id] - - if processor is not None and hasattr(processor, "image_seq_length"): # paligemma models - image_token_id = tokenizer.convert_tokens_to_ids(template.image_token) - input_ids = [image_token_id] * getattr(processor, "image_seq_length") + input_ids - model_inputs["input_ids"].append(input_ids) model_inputs["attention_mask"].append([1] * len(input_ids)) model_inputs["labels"].append(labels) From f9e818d79cf686cb34789327add7ed1f749966c6 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Fri, 7 Jun 2024 04:18:05 +0800 Subject: [PATCH 098/169] fix #4120 --- README.md | 2 +- README_zh.md | 2 +- requirements.txt | 2 +- src/llamafactory/extras/misc.py | 2 +- src/llamafactory/train/dpo/trainer.py | 9 +--- src/llamafactory/train/kto/trainer.py | 60 ++++++++----------------- src/llamafactory/train/trainer_utils.py | 24 +++++++++- 7 files changed, 47 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index 1358b6e8..036ee648 100644 --- a/README.md +++ b/README.md @@ -298,7 +298,7 @@ huggingface-cli login | datasets | 2.16.0 | 2.19.2 | | accelerate | 0.30.1 | 0.30.1 | | peft | 0.11.1 | 0.11.1 | -| trl | 0.9.3 | 0.9.3 | +| trl | 0.8.6 | 0.9.3 | | Optional | Minimum | Recommend | | ------------ | ------- | --------- | diff --git a/README_zh.md b/README_zh.md index becec988..fb0d790e 100644 --- a/README_zh.md +++ b/README_zh.md @@ -298,7 +298,7 @@ huggingface-cli login | datasets | 2.16.0 | 2.19.2 | | accelerate | 0.30.1 | 0.30.1 | | peft | 0.11.1 | 0.11.1 | -| trl | 0.9.3 | 0.9.3 | +| trl | 0.8.6 | 0.9.3 | | 可选项 | 至少 | 推荐 | | ------------ | ------- | --------- | diff --git a/requirements.txt b/requirements.txt index 7b6cbee9..9e00555e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ transformers>=4.41.2 datasets>=2.16.0 accelerate>=0.30.1 peft>=0.11.1 -trl>=0.9.3 +trl>=0.8.6 gradio>=4.0.0 scipy einops diff --git a/src/llamafactory/extras/misc.py b/src/llamafactory/extras/misc.py index 48476f9c..fc33f77e 100644 --- a/src/llamafactory/extras/misc.py +++ b/src/llamafactory/extras/misc.py @@ -65,7 +65,7 @@ def check_dependencies() -> None: require_version("datasets>=2.16.0", "To fix: pip install datasets>=2.16.0") require_version("accelerate>=0.30.1", "To fix: pip install accelerate>=0.30.1") require_version("peft>=0.11.1", "To fix: pip install peft>=0.11.1") - require_version("trl>=0.9.3", "To fix: pip install trl>=0.9.3") + require_version("trl>=0.8.6", "To fix: pip install trl>=0.8.6") def count_parameters(model: torch.nn.Module) -> Tuple[int, int]: diff --git a/src/llamafactory/train/dpo/trainer.py b/src/llamafactory/train/dpo/trainer.py index f64c287f..d860b29a 100644 --- a/src/llamafactory/train/dpo/trainer.py +++ b/src/llamafactory/train/dpo/trainer.py @@ -10,7 +10,7 @@ from trl import DPOTrainer from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX -from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_ref_context +from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_batch_logps, get_ref_context if TYPE_CHECKING: @@ -155,12 +155,7 @@ class CustomDPOTrainer(DPOTrainer): all_logits: "torch.Tensor" = model(**batch, return_dict=True, use_cache=False).logits.to(torch.float32) - all_logps, valid_length = self.get_batch_logps( - logits=all_logits, - labels=batch["labels"], - is_encoder_decoder=self.is_encoder_decoder, - label_pad_token_id=self.label_pad_token_id, - ) + all_logps, valid_length = get_batch_logps(logits=all_logits, labels=batch["labels"]) if self.loss_type in ["ipo", "orpo", "simpo"]: all_logps = all_logps / valid_length diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index 1610ccfa..22a84e4a 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -9,7 +9,7 @@ from trl import KTOTrainer from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX -from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_ref_context +from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_batch_logps, get_ref_context if TYPE_CHECKING: @@ -98,16 +98,6 @@ class CustomKTOTrainer(KTOTrainer): output_dir = output_dir if output_dir is not None else self.args.output_dir getattr(self.processor, "image_processor").save_pretrained(output_dir) - def sft_loss(self, chosen_logits: "torch.FloatTensor", chosen_labels: "torch.LongTensor") -> "torch.Tensor": - r""" - Computes supervised cross-entropy loss of given labels under the given logits. - - Returns: - A tensor of shape (batch_size,) containing the cross-entropy loss of each samples. - """ - all_logps = self.get_batch_logps(chosen_logits, chosen_labels, average_log_prob=True) - return -all_logps - def forward( self, model: "PreTrainedModel", batch: Dict[str, "torch.Tensor"], prefix: Literal["", "kl_"] = "" ) -> Tuple["torch.Tensor", "torch.Tensor"]: @@ -127,28 +117,23 @@ class CustomKTOTrainer(KTOTrainer): logits = model(**model_inputs, return_dict=True, use_cache=False).logits.to(torch.float32) - logps = self.get_batch_logps( - logits=logits, - labels=batch["{}labels".format(prefix)], - average_log_prob=False, - is_encoder_decoder=self.is_encoder_decoder, - label_pad_token_id=self.label_pad_token_id, - ) - return logits, logps + logps, valid_length = get_batch_logps(logits=logits, labels=batch["{}labels".format(prefix)]) + return logps, logps / valid_length def concatenated_forward( self, model: "PreTrainedModel", batch: Dict[str, "torch.Tensor"] - ) -> Tuple["torch.Tensor", "torch.Tensor", "torch.Tensor", "torch.Tensor", "torch.Tensor"]: - target_logits, target_logps = self.forward(model, batch) + ) -> Tuple["torch.Tensor", "torch.Tensor", "torch.Tensor", "torch.Tensor"]: + target_logps, target_logps_avg = self.forward(model, batch) with torch.no_grad(): - _, kl_logps = self.forward(model, batch, prefix="kl_") + kl_logps, _ = self.forward(model, batch, prefix="kl_") if len(target_logps) != len(batch["kto_tags"]): raise ValueError("Mismatched shape of inputs and labels.") - chosen_logps, rejected_logps = target_logps[batch["kto_tags"]], target_logps[~batch["kto_tags"]] - chosen_logits, rejected_logits = target_logits[batch["kto_tags"]], target_logits[~batch["kto_tags"]] - return chosen_logps, rejected_logps, chosen_logits, rejected_logits, kl_logps + chosen_logps = target_logps[batch["kto_tags"]] + rejected_logps = target_logps[~batch["kto_tags"]] + chosen_logps_avg = target_logps_avg[batch["kto_tags"]] + return chosen_logps, rejected_logps, kl_logps, chosen_logps_avg def compute_reference_log_probs( self, model: "PreTrainedModel", batch: Dict[str, "torch.Tensor"] @@ -164,13 +149,9 @@ class CustomKTOTrainer(KTOTrainer): ref_context = nullcontext() with torch.no_grad(), ref_context: - ( - reference_chosen_logps, - reference_rejected_logps, - _, - _, - reference_kl_logps, - ) = self.concatenated_forward(ref_model, batch) + reference_chosen_logps, reference_rejected_logps, reference_kl_logps, _ = self.concatenated_forward( + ref_model, batch + ) return reference_chosen_logps, reference_rejected_logps, reference_kl_logps @@ -183,14 +164,9 @@ class CustomKTOTrainer(KTOTrainer): Computes the DPO loss and other metrics for the given batch of inputs for train or test. """ metrics = {} - ( - policy_chosen_logps, - policy_rejected_logps, - policy_chosen_logits, - _, - policy_kl_logps, - ) = self.concatenated_forward(model, batch) - + policy_chosen_logps, policy_rejected_logps, policy_kl_logps, policy_chosen_logps_avg = ( + self.concatenated_forward(model, batch) + ) reference_chosen_logps, reference_rejected_logps, reference_kl_logps = self.compute_reference_log_probs( model, batch ) @@ -205,8 +181,8 @@ class CustomKTOTrainer(KTOTrainer): losses = losses.nanmean() if self.ftx_gamma > 1e-6 and len(policy_chosen_logps) > 0: # remember to rescale - sft_loss = self.sft_loss(policy_chosen_logits, batch["labels"][batch["kto_tags"]]) - losses += self.ftx_gamma * sft_loss.nanmean() / len(policy_chosen_logits) * len(batch["labels"]) + sft_loss = -policy_chosen_logps_avg + losses += self.ftx_gamma * sft_loss.nanmean() / len(policy_chosen_logps) * len(batch["labels"]) num_chosen = torch.Tensor([len(chosen_rewards)]).to(self.accelerator.device) num_rejected = torch.Tensor([len(rejected_rewards)]).to(self.accelerator.device) diff --git a/src/llamafactory/train/trainer_utils.py b/src/llamafactory/train/trainer_utils.py index 2b33af1c..0ddcdb11 100644 --- a/src/llamafactory/train/trainer_utils.py +++ b/src/llamafactory/train/trainer_utils.py @@ -1,5 +1,5 @@ from contextlib import contextmanager -from typing import TYPE_CHECKING, Callable, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Callable, Dict, List, Optional, Tuple, Union import torch from transformers import Trainer @@ -7,6 +7,7 @@ from transformers.optimization import get_scheduler from transformers.pytorch_utils import ALL_LAYERNORM_LAYERS from transformers.trainer_pt_utils import get_parameter_names +from ..extras.constants import IGNORE_INDEX from ..extras.logging import get_logger from ..extras.packages import is_galore_available from ..hparams import FinetuningArguments, ModelArguments @@ -399,3 +400,24 @@ def create_custom_scheduler( for param in optimizer_dict.keys(): param.register_post_accumulate_grad_hook(scheduler_hook) + + +def get_batch_logps( + logits: "torch.Tensor", labels: "torch.Tensor", label_pad_token_id: int = IGNORE_INDEX +) -> Tuple["torch.Tensor", "torch.Tensor"]: + r""" + Computes the log probabilities of the given labels under the given logits. + + Returns: + logps: A tensor of shape (batch_size,) containing the sum of log probabilities. + valid_length: A tensor of shape (batch_size,) containing the number of non-masked tokens. + """ + if logits.shape[:-1] != labels.shape: + raise ValueError("Logits (batchsize x seqlen) and labels must have the same shape.") + + labels = labels[:, 1:].clone() + logits = logits[:, :-1, :] + loss_mask = labels != label_pad_token_id + labels[labels == label_pad_token_id] = 0 # dummy token + per_token_logps = torch.gather(logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2)).squeeze(2) + return (per_token_logps * loss_mask).sum(-1), loss_mask.sum(-1) From 2702d7e952523b584d67c8901888b492d4a79b14 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Fri, 7 Jun 2024 04:48:29 +0800 Subject: [PATCH 099/169] fix ppo in trl 0.8.6 --- README.md | 2 +- README_zh.md | 2 +- src/llamafactory/train/ppo/ppo_utils.py | 27 +++++++++++++++------ src/llamafactory/train/ppo/trainer.py | 31 ++++++++++++------------- 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 036ee648..77d9c709 100644 --- a/README.md +++ b/README.md @@ -298,7 +298,7 @@ huggingface-cli login | datasets | 2.16.0 | 2.19.2 | | accelerate | 0.30.1 | 0.30.1 | | peft | 0.11.1 | 0.11.1 | -| trl | 0.8.6 | 0.9.3 | +| trl | 0.8.6 | 0.9.4 | | Optional | Minimum | Recommend | | ------------ | ------- | --------- | diff --git a/README_zh.md b/README_zh.md index fb0d790e..9a52a963 100644 --- a/README_zh.md +++ b/README_zh.md @@ -298,7 +298,7 @@ huggingface-cli login | datasets | 2.16.0 | 2.19.2 | | accelerate | 0.30.1 | 0.30.1 | | peft | 0.11.1 | 0.11.1 | -| trl | 0.8.6 | 0.9.3 | +| trl | 0.8.6 | 0.9.4 | | 可选项 | 至少 | 推荐 | | ------------ | ------- | --------- | diff --git a/src/llamafactory/train/ppo/ppo_utils.py b/src/llamafactory/train/ppo/ppo_utils.py index 570409f2..cfda0b3d 100644 --- a/src/llamafactory/train/ppo/ppo_utils.py +++ b/src/llamafactory/train/ppo/ppo_utils.py @@ -1,7 +1,9 @@ import json +from contextlib import nullcontext from typing import TYPE_CHECKING, Dict, List, Literal, Optional import torch +from transformers.integrations import is_deepspeed_zero3_enabled from ...extras.packages import is_requests_available @@ -28,16 +30,27 @@ def get_rewards_from_server(server_url: str, messages: List[str]) -> List[torch. def replace_model(model: "AutoModelForCausalLMWithValueHead", target: Literal["default", "reward"]) -> None: r""" - Replaces the default/reward modules in the model. The model is already unwrapped (and gathered). + Replaces the default/reward modules in the model. The model is already unwrapped. """ - if target == "reward": # save default head temporarily - setattr(model, "default_head_weight", model.v_head.summary.weight.data.detach().clone()) - setattr(model, "default_head_bias", model.v_head.summary.bias.data.detach().clone()) + if is_deepspeed_zero3_enabled(): + import deepspeed # type: ignore + + params = [model.v_head.summary.weight, model.v_head.summary.bias] + context_maybe_zero3 = deepspeed.zero.GatheredParameters(params, modifier_rank=0) + else: + context_maybe_zero3 = nullcontext() model.pretrained_model.set_adapter(target) # set the LoRA adapter to be active - device = model.v_head.summary.weight.device - model.v_head.summary.weight.data = model.get_buffer("{}_head_weight".format(target)).detach().clone().to(device) - model.v_head.summary.bias.data = model.get_buffer("{}_head_bias".format(target)).detach().clone().to(device) + with context_maybe_zero3: + if target == "reward": # save default head temporarily + setattr(model, "default_head_weight", model.v_head.summary.weight.data.detach().clone()) + setattr(model, "default_head_bias", model.v_head.summary.bias.data.detach().clone()) + + device = model.v_head.summary.weight.device + model.v_head.summary.weight.data = ( + model.get_buffer("{}_head_weight".format(target)).detach().clone().to(device) + ) + model.v_head.summary.bias.data = model.get_buffer("{}_head_bias".format(target)).detach().clone().to(device) def dump_layernorm(model: "PreTrainedModel") -> Dict[str, torch.Tensor]: diff --git a/src/llamafactory/train/ppo/trainer.py b/src/llamafactory/train/ppo/trainer.py index 7addfc3c..0ad1b8e8 100644 --- a/src/llamafactory/train/ppo/trainer.py +++ b/src/llamafactory/train/ppo/trainer.py @@ -309,12 +309,6 @@ class CustomPPOTrainer(PPOTrainer, Trainer): ) return lr_scheduler - def _save(self, output_dir: Optional[str] = None, state_dict: Optional[Dict[str, "torch.Tensor"]] = None) -> None: - super()._save(output_dir, state_dict) - if self.processor is not None: - output_dir = output_dir if output_dir is not None else self.args.output_dir - getattr(self.processor, "image_processor").save_pretrained(output_dir) - @torch.no_grad() def get_inputs(self, batch: Dict[str, "torch.Tensor"]) -> Tuple[List["torch.Tensor"], List["torch.Tensor"]]: r""" @@ -326,6 +320,7 @@ class CustomPPOTrainer(PPOTrainer, Trainer): batch[k] = v[:, start_index:] with unwrap_model_for_generation(self.model, self.accelerator) as unwrapped_model: + unwrapped_model = self.accelerator.unwrap_model(self.model) # issue in trl v0.8.6 if self.model_args.upcast_layernorm: layernorm_params = dump_layernorm(unwrapped_model) @@ -369,19 +364,19 @@ class CustomPPOTrainer(PPOTrainer, Trainer): return get_rewards_from_server(self.reward_model, messages) batch = self.prepare_model_inputs(queries, responses) + unwrapped_model: "AutoModelForCausalLMWithValueHead" = self.accelerator.unwrap_model(self.model) - with unwrap_model_for_generation(self.model, self.accelerator) as unwrapped_model: - if self.finetuning_args.reward_model_type == "lora": - replace_model(unwrapped_model, target="reward") - reward_model = self.model - else: - reward_model = self.reward_model + if self.finetuning_args.reward_model_type == "lora": + replace_model(unwrapped_model, target="reward") + reward_model = self.model + else: + reward_model = self.reward_model - with self.amp_context: # support bf16 - _, _, values = reward_model(**batch, output_hidden_states=True, return_dict=True, use_cache=False) + with unwrap_model_for_generation(reward_model, self.accelerator), self.amp_context: # support bf16 + _, _, values = reward_model(**batch, output_hidden_states=True, return_dict=True, use_cache=False) - if self.finetuning_args.reward_model_type == "lora": - replace_model(unwrapped_model, target="default") + if self.finetuning_args.reward_model_type == "lora": + replace_model(unwrapped_model, target="default") if self.is_chatglm_model: # assume same architecture values = torch.transpose(values, 0, 1) @@ -482,3 +477,7 @@ class CustomPPOTrainer(PPOTrainer, Trainer): self._save(output_dir, state_dict={}) remove_dummy_checkpoint(True, output_dir, [WEIGHTS_NAME, SAFE_WEIGHTS_NAME]) self.model.save_checkpoint(output_dir) + + if self.processor is not None: + output_dir = output_dir if output_dir is not None else self.args.output_dir + getattr(self.processor, "image_processor").save_pretrained(output_dir) From 4489d73ac75c8dbc002fc16c854148994d432c3a Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Fri, 7 Jun 2024 05:14:19 +0800 Subject: [PATCH 100/169] fix ppo trainer save zero3 model accelerator.get_state_dict(ds_model) should be called at all ranks --- src/llamafactory/train/ppo/trainer.py | 29 ++++++++++++++++++--------- src/llamafactory/train/sft/metric.py | 3 +++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/llamafactory/train/ppo/trainer.py b/src/llamafactory/train/ppo/trainer.py index 0ad1b8e8..2e1288e4 100644 --- a/src/llamafactory/train/ppo/trainer.py +++ b/src/llamafactory/train/ppo/trainer.py @@ -123,9 +123,8 @@ class CustomPPOTrainer(PPOTrainer, Trainer): self.state = TrainerState() self.control = TrainerControl() - self.is_deepspeed_enabled = self.accelerator.distributed_type == "DEEPSPEED" and hasattr( - self.accelerator.state, "deepspeed_plugin" - ) + self.is_deepspeed_enabled = getattr(self.accelerator.state, "deepspeed_plugin", None) is not None + self.is_fsdp_enabled = getattr(self.accelerator.state, "fsdp_plugin", None) is not None self.log_callback, self.save_callback = callbacks[0], callbacks[1] assert isinstance(self.log_callback, LogCallback) and isinstance(self.save_callback, FixValueHeadModelCallback) @@ -466,18 +465,28 @@ class CustomPPOTrainer(PPOTrainer, Trainer): Subclass and override to inject custom behavior. """ - if self.args.should_save: + if output_dir is None: + output_dir = self.args.output_dir + + if self.is_fsdp_enabled or self.is_deepspeed_enabled: try: - self._save(output_dir, state_dict=self.accelerator.get_state_dict(self.model)) + state_dict = self.accelerator.get_state_dict(self.model) # must be called at all ranks + if self.args.should_save: + self._save(output_dir, state_dict=state_dict) except ValueError: logger.warning( " stage3_gather_16bit_weights_on_model_save=false. Saving the full checkpoint instead," " use zero_to_fp32.py to recover weights" ) - self._save(output_dir, state_dict={}) - remove_dummy_checkpoint(True, output_dir, [WEIGHTS_NAME, SAFE_WEIGHTS_NAME]) + if self.args.should_save: + self._save(output_dir, state_dict={}) + # remove the dummy state_dict + remove_dummy_checkpoint(self.args.should_save, output_dir, [WEIGHTS_NAME, SAFE_WEIGHTS_NAME]) self.model.save_checkpoint(output_dir) - if self.processor is not None: - output_dir = output_dir if output_dir is not None else self.args.output_dir - getattr(self.processor, "image_processor").save_pretrained(output_dir) + elif self.args.should_save: + self._save(output_dir) + + if self.processor is not None and self.args.should_save: + output_dir = output_dir if output_dir is not None else self.args.output_dir + getattr(self.processor, "image_processor").save_pretrained(output_dir) diff --git a/src/llamafactory/train/sft/metric.py b/src/llamafactory/train/sft/metric.py index d1af4c17..b135fcfb 100644 --- a/src/llamafactory/train/sft/metric.py +++ b/src/llamafactory/train/sft/metric.py @@ -10,12 +10,15 @@ from ...extras.packages import is_jieba_available, is_nltk_available, is_rouge_a if TYPE_CHECKING: from transformers.tokenization_utils import PreTrainedTokenizer + if is_jieba_available(): import jieba # type: ignore + if is_nltk_available(): from nltk.translate.bleu_score import SmoothingFunction, sentence_bleu + if is_rouge_available(): from rouge_chinese import Rouge From f8d8690bf4c2981f3151b4ccf07daeb4f3cd38a9 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Fri, 7 Jun 2024 05:19:21 +0800 Subject: [PATCH 101/169] tiny fix --- src/llamafactory/train/ppo/ppo_utils.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/llamafactory/train/ppo/ppo_utils.py b/src/llamafactory/train/ppo/ppo_utils.py index cfda0b3d..fec3fc1e 100644 --- a/src/llamafactory/train/ppo/ppo_utils.py +++ b/src/llamafactory/train/ppo/ppo_utils.py @@ -32,10 +32,11 @@ def replace_model(model: "AutoModelForCausalLMWithValueHead", target: Literal["d r""" Replaces the default/reward modules in the model. The model is already unwrapped. """ + v_head_layer = model.v_head.summary if is_deepspeed_zero3_enabled(): import deepspeed # type: ignore - params = [model.v_head.summary.weight, model.v_head.summary.bias] + params = [v_head_layer.weight, v_head_layer.bias] context_maybe_zero3 = deepspeed.zero.GatheredParameters(params, modifier_rank=0) else: context_maybe_zero3 = nullcontext() @@ -43,14 +44,12 @@ def replace_model(model: "AutoModelForCausalLMWithValueHead", target: Literal["d model.pretrained_model.set_adapter(target) # set the LoRA adapter to be active with context_maybe_zero3: if target == "reward": # save default head temporarily - setattr(model, "default_head_weight", model.v_head.summary.weight.data.detach().clone()) - setattr(model, "default_head_bias", model.v_head.summary.bias.data.detach().clone()) + setattr(model, "default_head_weight", v_head_layer.weight.data.detach().clone()) + setattr(model, "default_head_bias", v_head_layer.bias.data.detach().clone()) - device = model.v_head.summary.weight.device - model.v_head.summary.weight.data = ( - model.get_buffer("{}_head_weight".format(target)).detach().clone().to(device) - ) - model.v_head.summary.bias.data = model.get_buffer("{}_head_bias".format(target)).detach().clone().to(device) + device = v_head_layer.weight.device + v_head_layer.weight.data = model.get_buffer("{}_head_weight".format(target)).detach().clone().to(device) + v_head_layer.bias.data = model.get_buffer("{}_head_bias".format(target)).detach().clone().to(device) def dump_layernorm(model: "PreTrainedModel") -> Dict[str, torch.Tensor]: From cce0fad91c0ef1758b021a94c02e9fdd97b73183 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Fri, 7 Jun 2024 19:04:16 +0800 Subject: [PATCH 102/169] Update wechat.jpg --- assets/wechat.jpg | Bin 146230 -> 145964 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/wechat.jpg b/assets/wechat.jpg index 5b906302aa84623d919bd4f6a0cefe8fd606ff0f..e0e89b78501fdb9bef08244d9bba87b7397bda0d 100644 GIT binary patch literal 145964 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

    nrtE_fbBH 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 MLMfsL{iA393xNvqy#N3J literal 146230 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 z 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 Date: Fri, 7 Jun 2024 19:16:06 +0800 Subject: [PATCH 103/169] fix #4137 --- src/llamafactory/cli.py | 8 ++------ src/llamafactory/webui/runner.py | 3 +++ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/llamafactory/cli.py b/src/llamafactory/cli.py index b9e734e4..5042e53c 100644 --- a/src/llamafactory/cli.py +++ b/src/llamafactory/cli.py @@ -72,12 +72,8 @@ def main(): elif command == Command.EXPORT: export_model() elif command == Command.TRAIN: - disable_torchrun = os.environ.get("TORCHRUN_DISABLED", "0").lower() in ["true", "1"] - if disable_torchrun and get_device_count() > 1: - logger.warning("`torchrun` cannot be disabled when device count > 1.") - disable_torchrun = False - - if (not disable_torchrun) and (get_device_count() > 0): + force_torchrun = os.environ.get("FORCE_TORCHRUN", "0").lower() in ["true", "1"] + if force_torchrun or get_device_count() > 1: master_addr = os.environ.get("MASTER_ADDR", "127.0.0.1") master_port = os.environ.get("MASTER_PORT", str(random.randint(20001, 29999))) logger.info("Initializing distributed tasks at: {}:{}".format(master_addr, master_port)) diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index e8fdd129..c046152c 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -278,6 +278,9 @@ class Runner: args = self._parse_train_args(data) if do_train else self._parse_eval_args(data) env = deepcopy(os.environ) env["LLAMABOARD_ENABLED"] = "1" + if args.get("deepspeed", None) is not None: + env["FORCE_TORCHRUN"] = "1" + self.trainer = Popen("llamafactory-cli train {}".format(save_cmd(args)), env=env, shell=True) yield from self.monitor() From 06e5d136a4916413d1c116e341ba7d5136d7748a Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 00:22:16 +0800 Subject: [PATCH 104/169] add resume args in webui --- src/llamafactory/extras/constants.py | 6 ++- src/llamafactory/model/adapter.py | 4 +- src/llamafactory/webui/common.py | 17 ++++---- src/llamafactory/webui/components/top.py | 3 +- src/llamafactory/webui/components/train.py | 10 ++++- src/llamafactory/webui/runner.py | 48 ++++++++++++++++------ src/llamafactory/webui/utils.py | 29 ++++--------- 7 files changed, 68 insertions(+), 49 deletions(-) diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index 4099fe56..7d96fb5f 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -35,6 +35,8 @@ IGNORE_INDEX = -100 LAYERNORM_NAMES = {"norm", "ln"} +LLAMABOARD_CONFIG = "llamaboard_config.yaml" + METHODS = ["full", "freeze", "lora"] MOD_SUPPORTED_MODELS = {"bloom", "falcon", "gemma", "llama", "mistral", "mixtral", "phi", "starcoder2"} @@ -47,10 +49,10 @@ SUBJECTS = ["Average", "STEM", "Social Sciences", "Humanities", "Other"] SUPPORTED_MODELS = OrderedDict() -TRAINER_CONFIG = "trainer_config.yaml" - TRAINER_LOG = "trainer_log.jsonl" +TRAINING_ARGS = "training_args.yaml" + TRAINING_STAGES = { "Supervised Fine-Tuning": "sft", "Reward Modeling": "rm", diff --git a/src/llamafactory/model/adapter.py b/src/llamafactory/model/adapter.py index 1a77d613..d17873f7 100644 --- a/src/llamafactory/model/adapter.py +++ b/src/llamafactory/model/adapter.py @@ -50,7 +50,7 @@ def init_adapter( logger.info("Upcasting trainable params to float32.") cast_trainable_params_to_fp32 = True - if finetuning_args.finetuning_type == "full" and is_trainable: + if is_trainable and finetuning_args.finetuning_type == "full": logger.info("Fine-tuning method: Full") forbidden_modules = set() @@ -67,7 +67,7 @@ def init_adapter( else: param.requires_grad_(False) - if finetuning_args.finetuning_type == "freeze" and is_trainable: + if is_trainable and finetuning_args.finetuning_type == "freeze": logger.info("Fine-tuning method: Freeze") if model_args.visual_inputs: diff --git a/src/llamafactory/webui/common.py b/src/llamafactory/webui/common.py index 304b56a5..37b38df0 100644 --- a/src/llamafactory/webui/common.py +++ b/src/llamafactory/webui/common.py @@ -50,13 +50,6 @@ def get_config_path() -> os.PathLike: return os.path.join(DEFAULT_CACHE_DIR, USER_CONFIG) -def get_arg_save_path(config_path: str) -> os.PathLike: - r""" - Gets the path to saved arguments. - """ - return os.path.join(DEFAULT_CONFIG_DIR, config_path) - - def load_config() -> Dict[str, Any]: r""" Loads user config if exists. @@ -77,24 +70,28 @@ def save_config(lang: str, model_name: Optional[str] = None, model_path: Optiona user_config["lang"] = lang or user_config["lang"] if model_name: user_config["last_model"] = model_name + + if model_name and model_path: user_config["path_dict"][model_name] = model_path + with open(get_config_path(), "w", encoding="utf-8") as f: safe_dump(user_config, f) -def get_model_path(model_name: str) -> Optional[str]: +def get_model_path(model_name: str) -> str: r""" Gets the model path according to the model name. """ user_config = load_config() - path_dict: Dict[DownloadSource, str] = SUPPORTED_MODELS.get(model_name, defaultdict(str)) - model_path = user_config["path_dict"].get(model_name, None) or path_dict.get(DownloadSource.DEFAULT, None) + path_dict: Dict["DownloadSource", str] = SUPPORTED_MODELS.get(model_name, defaultdict(str)) + model_path = user_config["path_dict"].get(model_name, "") or path_dict.get(DownloadSource.DEFAULT, "") if ( use_modelscope() and path_dict.get(DownloadSource.MODELSCOPE) and model_path == path_dict.get(DownloadSource.DEFAULT) ): # replace path model_path = path_dict.get(DownloadSource.MODELSCOPE) + return model_path diff --git a/src/llamafactory/webui/components/top.py b/src/llamafactory/webui/components/top.py index c794d0aa..fd0ead3d 100644 --- a/src/llamafactory/webui/components/top.py +++ b/src/llamafactory/webui/components/top.py @@ -36,7 +36,8 @@ def create_top() -> Dict[str, "Component"]: visual_inputs = gr.Checkbox(scale=1) model_name.change(get_model_info, [model_name], [model_path, template, visual_inputs], queue=False) - model_path.change(save_config, inputs=[lang, model_name, model_path], queue=False) + model_name.input(save_config, inputs=[lang, model_name], queue=False) + model_path.input(save_config, inputs=[lang, model_name, model_path], queue=False) finetuning_type.change(can_quantize, [finetuning_type], [quantization_bit], queue=False) checkpoint_path.focus(list_checkpoints, [model_name, finetuning_type], [checkpoint_path], queue=False) diff --git a/src/llamafactory/webui/components/train.py b/src/llamafactory/webui/components/train.py index 74f8ef2a..72dfc858 100644 --- a/src/llamafactory/webui/components/train.py +++ b/src/llamafactory/webui/components/train.py @@ -6,7 +6,7 @@ from ...extras.constants import TRAINING_STAGES from ...extras.misc import get_device_count from ...extras.packages import is_gradio_available from ..common import DEFAULT_DATA_DIR, list_checkpoints, list_datasets -from ..utils import change_stage, check_output_dir, list_config_paths, list_output_dirs +from ..utils import change_stage, list_config_paths, list_output_dirs from .data import create_preview_box @@ -319,7 +319,13 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: finetuning_type.change(list_output_dirs, [model_name, finetuning_type, current_time], [output_dir], queue=False) output_dir.change( list_output_dirs, [model_name, finetuning_type, current_time], [output_dir], concurrency_limit=None - ).then(check_output_dir, inputs=[lang, model_name, finetuning_type, output_dir], concurrency_limit=None) + ) + output_dir.input( + engine.runner.check_output_dir, + [lang, model_name, finetuning_type, output_dir], + list(input_elems) + [output_box], + concurrency_limit=None, + ) config_path.change(list_config_paths, [current_time], [config_path], queue=False) return elem_dict diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index c046152c..35014628 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -5,11 +5,11 @@ from typing import TYPE_CHECKING, Any, Dict, Generator, Optional from transformers.trainer import TRAINING_ARGS_NAME -from ..extras.constants import PEFT_METHODS, TRAINING_STAGES +from ..extras.constants import LLAMABOARD_CONFIG, PEFT_METHODS, TRAINING_STAGES from ..extras.misc import is_gpu_or_npu_available, torch_gc from ..extras.packages import is_gradio_available -from .common import DEFAULT_CACHE_DIR, get_save_dir, load_config -from .locales import ALERTS +from .common import DEFAULT_CACHE_DIR, DEFAULT_CONFIG_DIR, get_save_dir, load_config +from .locales import ALERTS, LOCALES from .utils import abort_leaf_process, gen_cmd, get_eval_results, get_trainer_info, load_args, save_args, save_cmd @@ -276,6 +276,10 @@ class Runner: else: self.do_train, self.running_data = do_train, data args = self._parse_train_args(data) if do_train else self._parse_eval_args(data) + + os.makedirs(args["output_dir"], exist_ok=True) + save_args(os.path.join(args["output_dir"], LLAMABOARD_CONFIG), self._form_config_dict(data)) + env = deepcopy(os.environ) env["LLAMABOARD_ENABLED"] = "1" if args.get("deepspeed", None) is not None: @@ -284,6 +288,16 @@ class Runner: self.trainer = Popen("llamafactory-cli train {}".format(save_cmd(args)), env=env, shell=True) yield from self.monitor() + def _form_config_dict(self, data: Dict["Component", Any]) -> Dict[str, Any]: + config_dict = {} + skip_ids = ["top.lang", "top.model_path", "train.output_dir", "train.config_path", "train.device_count"] + for elem, value in data.items(): + elem_id = self.manager.get_id_by_elem(elem) + if elem_id not in skip_ids: + config_dict[elem_id] = value + + return config_dict + def preview_train(self, data): yield from self._preview(data, do_train=True) @@ -349,28 +363,24 @@ class Runner: } yield return_dict - def save_args(self, data: dict): + def save_args(self, data): output_box = self.manager.get_elem_by_id("train.output_box") error = self._initialize(data, do_train=True, from_preview=True) if error: gr.Warning(error) return {output_box: error} - config_dict: Dict[str, Any] = {} lang = data[self.manager.get_elem_by_id("top.lang")] config_path = data[self.manager.get_elem_by_id("train.config_path")] - skip_ids = ["top.lang", "top.model_path", "train.output_dir", "train.config_path", "train.device_count"] - for elem, value in data.items(): - elem_id = self.manager.get_id_by_elem(elem) - if elem_id not in skip_ids: - config_dict[elem_id] = value + os.makedirs(DEFAULT_CONFIG_DIR, exist_ok=True) + save_path = os.path.join(DEFAULT_CONFIG_DIR, config_path) - save_path = save_args(config_path, config_dict) + save_args(save_path, self._form_config_dict(data)) return {output_box: ALERTS["info_config_saved"][lang] + save_path} def load_args(self, lang: str, config_path: str): output_box = self.manager.get_elem_by_id("train.output_box") - config_dict = load_args(config_path) + config_dict = load_args(os.path.join(DEFAULT_CONFIG_DIR, config_path)) if config_dict is None: gr.Warning(ALERTS["err_config_not_found"][lang]) return {output_box: ALERTS["err_config_not_found"][lang]} @@ -380,3 +390,17 @@ class Runner: output_dict[self.manager.get_elem_by_id(elem_id)] = value return output_dict + + def check_output_dir(self, lang: str, model_name: str, finetuning_type: str, output_dir: str): + output_box = self.manager.get_elem_by_id("train.output_box") + output_dict: Dict["Component", Any] = {output_box: LOCALES["output_box"][lang]["value"]} + if model_name and output_dir and os.path.isdir(get_save_dir(model_name, finetuning_type, output_dir)): + gr.Warning(ALERTS["warn_output_dir_exists"][lang]) + output_dict[output_box] = ALERTS["warn_output_dir_exists"][lang] + + output_dir = get_save_dir(model_name, finetuning_type, output_dir) + config_dict = load_args(os.path.join(output_dir, LLAMABOARD_CONFIG)) # load llamaboard config + for elem_id, value in config_dict.items(): + output_dict[self.manager.get_elem_by_id(elem_id)] = value + + return output_dict diff --git a/src/llamafactory/webui/utils.py b/src/llamafactory/webui/utils.py index 23e62dca..e39f2aa4 100644 --- a/src/llamafactory/webui/utils.py +++ b/src/llamafactory/webui/utils.py @@ -8,10 +8,10 @@ import psutil from transformers.trainer_utils import get_last_checkpoint from yaml import safe_dump, safe_load -from ..extras.constants import PEFT_METHODS, RUNNING_LOG, TRAINER_CONFIG, TRAINER_LOG, TRAINING_STAGES +from ..extras.constants import PEFT_METHODS, RUNNING_LOG, TRAINER_LOG, TRAINING_ARGS, TRAINING_STAGES from ..extras.packages import is_gradio_available, is_matplotlib_available from ..extras.ploting import gen_loss_plot -from .common import DEFAULT_CACHE_DIR, DEFAULT_CONFIG_DIR, get_arg_save_path, get_save_dir +from .common import DEFAULT_CACHE_DIR, DEFAULT_CONFIG_DIR, get_save_dir from .locales import ALERTS @@ -93,10 +93,10 @@ def save_cmd(args: Dict[str, Any]) -> str: output_dir = args["output_dir"] os.makedirs(output_dir, exist_ok=True) - with open(os.path.join(output_dir, TRAINER_CONFIG), "w", encoding="utf-8") as f: + with open(os.path.join(output_dir, TRAINING_ARGS), "w", encoding="utf-8") as f: safe_dump(clean_cmd(args), f) - return os.path.join(output_dir, TRAINER_CONFIG) + return os.path.join(output_dir, TRAINING_ARGS) def get_eval_results(path: os.PathLike) -> str: @@ -157,22 +157,19 @@ def load_args(config_path: str) -> Optional[Dict[str, Any]]: Loads saved arguments. """ try: - with open(get_arg_save_path(config_path), "r", encoding="utf-8") as f: + with open(config_path, "r", encoding="utf-8") as f: return safe_load(f) except Exception: return None -def save_args(config_path: str, config_dict: Dict[str, Any]) -> str: +def save_args(config_path: str, config_dict: Dict[str, Any]): r""" Saves arguments. """ - os.makedirs(DEFAULT_CONFIG_DIR, exist_ok=True) - with open(get_arg_save_path(config_path), "w", encoding="utf-8") as f: + with open(config_path, "w", encoding="utf-8") as f: safe_dump(config_dict, f) - return str(get_arg_save_path(config_path)) - def list_config_paths(current_time: str) -> "gr.Dropdown": r""" @@ -181,13 +178,13 @@ def list_config_paths(current_time: str) -> "gr.Dropdown": config_files = ["{}.yaml".format(current_time)] if os.path.isdir(DEFAULT_CONFIG_DIR): for file_name in os.listdir(DEFAULT_CONFIG_DIR): - if file_name.endswith(".yaml"): + if file_name.endswith(".yaml") and file_name not in config_files: config_files.append(file_name) return gr.Dropdown(choices=config_files) -def list_output_dirs(model_name: str, finetuning_type: str, current_time: str) -> "gr.Dropdown": +def list_output_dirs(model_name: Optional[str], finetuning_type: str, current_time: str) -> "gr.Dropdown": r""" Lists all the directories that can resume from. """ @@ -203,14 +200,6 @@ def list_output_dirs(model_name: str, finetuning_type: str, current_time: str) - return gr.Dropdown(choices=output_dirs) -def check_output_dir(lang: str, model_name: str, finetuning_type: str, output_dir: str) -> None: - r""" - Check if output dir exists. - """ - if model_name and output_dir and os.path.isdir(get_save_dir(model_name, finetuning_type, output_dir)): - gr.Warning(ALERTS["warn_output_dir_exists"][lang]) - - def create_ds_config() -> None: r""" Creates deepspeed config. From cfd62283a9772fc854b852d2a1b71699f79a0048 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Sat, 8 Jun 2024 00:45:02 +0800 Subject: [PATCH 105/169] fix #4139 --- src/llamafactory/model/adapter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llamafactory/model/adapter.py b/src/llamafactory/model/adapter.py index d17873f7..bd14a52f 100644 --- a/src/llamafactory/model/adapter.py +++ b/src/llamafactory/model/adapter.py @@ -239,7 +239,7 @@ def init_adapter( ) model = get_peft_model(model, lora_config) - if cast_trainable_params_to_fp32: + if is_trainable and cast_trainable_params_to_fp32: for param in filter(lambda p: p.requires_grad, model.parameters()): param.data = param.data.to(torch.float32) From 54cd743ebfbd296ae9eaf10c33f59e127f451785 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 00:47:23 +0800 Subject: [PATCH 106/169] reorganize adapter code --- src/llamafactory/hparams/model_args.py | 9 +- src/llamafactory/model/adapter.py | 408 +++++++++++++------------ 2 files changed, 224 insertions(+), 193 deletions(-) diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 20271173..6352a420 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -15,7 +15,12 @@ class ModelArguments: ) adapter_name_or_path: Optional[str] = field( default=None, - metadata={"help": "Path to the adapter weight or identifier from huggingface.co/models."}, + metadata={ + "help": ( + "Path to the adapter weight or identifier from huggingface.co/models. " + "Use commas to separate multiple adapters." + ) + }, ) cache_dir: Optional[str] = field( default=None, @@ -35,7 +40,7 @@ class ModelArguments: ) new_special_tokens: Optional[str] = field( default=None, - metadata={"help": "Special tokens to be added into the tokenizer."}, + metadata={"help": "Special tokens to be added into the tokenizer. Use commas to separate multiple tokens."}, ) model_revision: str = field( default="main", diff --git a/src/llamafactory/model/adapter.py b/src/llamafactory/model/adapter.py index bd14a52f..f4e501a7 100644 --- a/src/llamafactory/model/adapter.py +++ b/src/llamafactory/model/adapter.py @@ -21,6 +21,218 @@ if TYPE_CHECKING: logger = get_logger(__name__) +def _setup_full_tuning( + model: "PreTrainedModel", + model_args: "ModelArguments", + finetuning_args: "FinetuningArguments", + cast_trainable_params_to_fp32: bool, +) -> None: + logger.info("Fine-tuning method: Full") + forbidden_modules = set() + if model_args.visual_inputs and finetuning_args.freeze_vision_tower: + forbidden_modules.add("vision_tower") + + if model_args.visual_inputs and finetuning_args.train_mm_proj_only: + forbidden_modules.add("language_model") + + for name, param in model.named_parameters(): + if not any(forbidden_module in name for forbidden_module in forbidden_modules): + if cast_trainable_params_to_fp32: + param.data = param.data.to(torch.float32) + else: + param.requires_grad_(False) + + +def _setup_freeze_tuning( + model: "PreTrainedModel", + model_args: "ModelArguments", + finetuning_args: "FinetuningArguments", + cast_trainable_params_to_fp32: bool, +) -> None: + logger.info("Fine-tuning method: Freeze") + if model_args.visual_inputs: + config = model.config.text_config + else: + config = model.config + + num_layers = ( + getattr(config, "num_hidden_layers", None) + or getattr(config, "num_layers", None) + or getattr(config, "n_layer", None) + ) + if not num_layers: + raise ValueError("Current model does not support freeze tuning.") + + if finetuning_args.use_llama_pro: + if num_layers % finetuning_args.freeze_trainable_layers != 0: + raise ValueError( + "`num_layers` {} should be divisible by `num_layer_trainable` {}.".format( + num_layers, finetuning_args.freeze_trainable_layers + ) + ) + + stride = num_layers // finetuning_args.freeze_trainable_layers + trainable_layer_ids = range(stride - 1, num_layers + stride - 1, stride) + elif finetuning_args.freeze_trainable_layers > 0: # fine-tuning the last n layers if num_layer_trainable > 0 + trainable_layer_ids = range(max(0, num_layers - finetuning_args.freeze_trainable_layers), num_layers) + else: # fine-tuning the first n layers if num_layer_trainable < 0 + trainable_layer_ids = range(min(-finetuning_args.freeze_trainable_layers, num_layers)) + + hidden_modules = set() + non_hidden_modules = set() + for name, _ in model.named_parameters(): + if ".0." in name: + hidden_modules.add(name.split(".0.")[-1].split(".")[0]) + elif ".1." in name: # MoD starts from layer 1 + hidden_modules.add(name.split(".1.")[-1].split(".")[0]) + + if re.search(r"\.\d+\.", name) is None: + non_hidden_modules.add(name.split(".")[-2]) + + trainable_layers = [] + for module_name in finetuning_args.freeze_trainable_modules: + if module_name != "all" and module_name not in hidden_modules: + raise ValueError( + "Module {} is not found, please choose from {}".format(module_name, ", ".join(hidden_modules)) + ) + + for idx in trainable_layer_ids: + trainable_layers.append(".{:d}.{}".format(idx, module_name if module_name != "all" else "")) + + if finetuning_args.freeze_extra_modules: + for module_name in finetuning_args.freeze_extra_modules: + if module_name not in non_hidden_modules: + raise ValueError( + "Module {} is not found, please choose from {}".format(module_name, ", ".join(non_hidden_modules)) + ) + + trainable_layers.append(module_name) + + forbidden_modules = set() + if model_args.visual_inputs and finetuning_args.freeze_vision_tower: + forbidden_modules.add("vision_tower") + + for name, param in model.named_parameters(): + if any(trainable_layer in name for trainable_layer in trainable_layers) and not any( + forbidden_module in name for forbidden_module in forbidden_modules + ): + if cast_trainable_params_to_fp32: + param.data = param.data.to(torch.float32) + else: + param.requires_grad_(False) + + logger.info("Set trainable layers: {}".format(",".join(trainable_layers))) + + +def _setup_lora_tuning( + config: "PretrainedConfig", + model: "PreTrainedModel", + model_args: "ModelArguments", + finetuning_args: "FinetuningArguments", + is_trainable: bool, + cast_trainable_params_to_fp32: bool, +) -> "PeftModel": + logger.info("Fine-tuning method: {}".format("DoRA" if finetuning_args.use_dora else "LoRA")) + adapter_to_resume = None + + if model_args.adapter_name_or_path is not None: + is_mergeable = True + if getattr(model, "quantization_method", None): # merge lora in quantized model is unstable + assert len(model_args.adapter_name_or_path) == 1, "Quantized model only accepts a single adapter." + is_mergeable = False + + if is_deepspeed_zero3_enabled(): + assert len(model_args.adapter_name_or_path) == 1, "Cannot use multiple adapters in DeepSpeed ZeRO-3." + is_mergeable = False + + if model_args.use_unsloth: + assert len(model_args.adapter_name_or_path) == 1, "Unsloth model only accepts a single adapter." + is_mergeable = False + + if (is_trainable and not finetuning_args.create_new_adapter) or (not is_mergeable): + adapter_to_merge = model_args.adapter_name_or_path[:-1] + adapter_to_resume = model_args.adapter_name_or_path[-1] + else: + adapter_to_merge = model_args.adapter_name_or_path + + for adapter in adapter_to_merge: + model: "LoraModel" = PeftModel.from_pretrained(model, adapter, offload_folder=model_args.offload_folder) + model = model.merge_and_unload() + + if len(adapter_to_merge) > 0: + logger.info("Merged {} adapter(s).".format(len(adapter_to_merge))) + + if adapter_to_resume is not None: # resume lora training + if model_args.use_unsloth: + model = load_unsloth_peft_model(config, model_args, is_trainable=is_trainable) + else: + model = PeftModel.from_pretrained( + model, + adapter_to_resume, + is_trainable=is_trainable, + offload_folder=model_args.offload_folder, + ) + + if is_trainable and adapter_to_resume is None: # create new lora weights while training + if len(finetuning_args.lora_target) == 1 and finetuning_args.lora_target[0] == "all": + target_modules = find_all_linear_modules(model, finetuning_args.freeze_vision_tower) + else: + target_modules = finetuning_args.lora_target + + if finetuning_args.use_llama_pro: + target_modules = find_expanded_modules(model, target_modules, finetuning_args.freeze_trainable_layers) + + if model_args.visual_inputs and finetuning_args.freeze_vision_tower: + target_modules = "^(?!.*vision_tower).*(?:{}).*".format("|".join(target_modules)) + + if ( + finetuning_args.use_dora + and getattr(model, "quantization_method", None) is not None + and getattr(model, "quantization_method", None) != QuantizationMethod.BITS_AND_BYTES + ): + raise ValueError("DoRA is not compatible with PTQ-quantized models.") + + if model_args.resize_vocab and finetuning_args.additional_target is None: + input_embeddings = model.get_input_embeddings() + output_embeddings = model.get_output_embeddings() + module_names = set() + for name, module in model.named_modules(): + if module in [input_embeddings, output_embeddings]: + module_names.add(name.split(".")[-1]) + + finetuning_args.additional_target = module_names + logger.warning("Vocab has been resized, add {} to trainable params.".format(",".join(module_names))) + + peft_kwargs = { + "r": finetuning_args.lora_rank, + "target_modules": target_modules, + "lora_alpha": finetuning_args.lora_alpha, + "lora_dropout": finetuning_args.lora_dropout, + "use_rslora": finetuning_args.use_rslora, + "modules_to_save": finetuning_args.additional_target, + } + + if model_args.use_unsloth: + model = get_unsloth_peft_model(model, model_args, peft_kwargs) + else: + lora_config = LoraConfig( + task_type=TaskType.CAUSAL_LM, + inference_mode=False, + use_dora=finetuning_args.use_dora, + **peft_kwargs, + ) + model = get_peft_model(model, lora_config) + + if is_trainable and cast_trainable_params_to_fp32: + for param in filter(lambda p: p.requires_grad, model.parameters()): + param.data = param.data.to(torch.float32) + + if model_args.adapter_name_or_path is not None: + logger.info("Loaded adapter(s): {}".format(",".join(model_args.adapter_name_or_path))) + + return model + + def init_adapter( config: "PretrainedConfig", model: "PreTrainedModel", @@ -35,7 +247,6 @@ def init_adapter( Note that the trainable parameters must be cast to float32. """ - if (not is_trainable) and model_args.adapter_name_or_path is None: logger.info("Adapter is not found at evaluation, load the base model.") return model @@ -51,199 +262,14 @@ def init_adapter( cast_trainable_params_to_fp32 = True if is_trainable and finetuning_args.finetuning_type == "full": - logger.info("Fine-tuning method: Full") - - forbidden_modules = set() - if model_args.visual_inputs and finetuning_args.freeze_vision_tower: - forbidden_modules.add("vision_tower") - - if model_args.visual_inputs and finetuning_args.train_mm_proj_only: - forbidden_modules.add("language_model") - - for name, param in model.named_parameters(): - if not any(forbidden_module in name for forbidden_module in forbidden_modules): - if cast_trainable_params_to_fp32: - param.data = param.data.to(torch.float32) - else: - param.requires_grad_(False) + _setup_full_tuning(model, model_args, finetuning_args, cast_trainable_params_to_fp32) if is_trainable and finetuning_args.finetuning_type == "freeze": - logger.info("Fine-tuning method: Freeze") - - if model_args.visual_inputs: - config = model.config.text_config - else: - config = model.config - - num_layers = ( - getattr(config, "num_hidden_layers", None) - or getattr(config, "num_layers", None) - or getattr(config, "n_layer", None) - ) - if not num_layers: - raise ValueError("Current model does not support freeze tuning.") - - if finetuning_args.use_llama_pro: - if num_layers % finetuning_args.freeze_trainable_layers != 0: - raise ValueError( - "`num_layers` {} should be divisible by `num_layer_trainable` {}.".format( - num_layers, finetuning_args.freeze_trainable_layers - ) - ) - - stride = num_layers // finetuning_args.freeze_trainable_layers - trainable_layer_ids = range(stride - 1, num_layers + stride - 1, stride) - elif finetuning_args.freeze_trainable_layers > 0: # fine-tuning the last n layers if num_layer_trainable > 0 - trainable_layer_ids = range(max(0, num_layers - finetuning_args.freeze_trainable_layers), num_layers) - else: # fine-tuning the first n layers if num_layer_trainable < 0 - trainable_layer_ids = range(min(-finetuning_args.freeze_trainable_layers, num_layers)) - - hidden_modules = set() - non_hidden_modules = set() - for name, _ in model.named_parameters(): - if ".0." in name: - hidden_modules.add(name.split(".0.")[-1].split(".")[0]) - elif ".1." in name: # MoD starts from layer 1 - hidden_modules.add(name.split(".1.")[-1].split(".")[0]) - - if re.search(r"\.\d+\.", name) is None: - non_hidden_modules.add(name.split(".")[-2]) - - trainable_layers = [] - for module_name in finetuning_args.freeze_trainable_modules: - if module_name != "all" and module_name not in hidden_modules: - raise ValueError( - "Module {} is not found, please choose from {}".format(module_name, ", ".join(hidden_modules)) - ) - - for idx in trainable_layer_ids: - trainable_layers.append(".{:d}.{}".format(idx, module_name if module_name != "all" else "")) - - if finetuning_args.freeze_extra_modules: - for module_name in finetuning_args.freeze_extra_modules: - if module_name not in non_hidden_modules: - raise ValueError( - "Module {} is not found, please choose from {}".format( - module_name, ", ".join(non_hidden_modules) - ) - ) - - trainable_layers.append(module_name) - - forbidden_modules = set() - if model_args.visual_inputs and finetuning_args.freeze_vision_tower: - forbidden_modules.add("vision_tower") - - for name, param in model.named_parameters(): - if any(trainable_layer in name for trainable_layer in trainable_layers) and not any( - forbidden_module in name for forbidden_module in forbidden_modules - ): - if cast_trainable_params_to_fp32: - param.data = param.data.to(torch.float32) - else: - param.requires_grad_(False) - - logger.info("Set trainable layers: {}".format(",".join(map(str, trainable_layer_ids)))) + _setup_freeze_tuning(model, model_args, finetuning_args, cast_trainable_params_to_fp32) if finetuning_args.finetuning_type == "lora": - logger.info("Fine-tuning method: {}".format("DoRA" if finetuning_args.use_dora else "LoRA")) - adapter_to_resume = None - - if model_args.adapter_name_or_path is not None: - is_mergeable = True - if getattr(model, "quantization_method", None): # merge lora in quantized model is unstable - assert len(model_args.adapter_name_or_path) == 1, "Quantized model only accepts a single adapter." - is_mergeable = False - - if is_deepspeed_zero3_enabled(): - assert len(model_args.adapter_name_or_path) == 1, "Cannot use multiple adapters in DeepSpeed ZeRO-3." - is_mergeable = False - - if model_args.use_unsloth: - assert len(model_args.adapter_name_or_path) == 1, "Unsloth model only accepts a single adapter." - is_mergeable = False - - if (is_trainable and not finetuning_args.create_new_adapter) or (not is_mergeable): - adapter_to_merge = model_args.adapter_name_or_path[:-1] - adapter_to_resume = model_args.adapter_name_or_path[-1] - else: - adapter_to_merge = model_args.adapter_name_or_path - - for adapter in adapter_to_merge: - model: "LoraModel" = PeftModel.from_pretrained( - model, adapter, offload_folder=model_args.offload_folder - ) - model = model.merge_and_unload() - - if len(adapter_to_merge) > 0: - logger.info("Merged {} adapter(s).".format(len(adapter_to_merge))) - - if adapter_to_resume is not None: # resume lora training - if model_args.use_unsloth: - model = load_unsloth_peft_model(config, model_args, is_trainable=is_trainable) - else: - model = PeftModel.from_pretrained( - model, - adapter_to_resume, - is_trainable=is_trainable, - offload_folder=model_args.offload_folder, - ) - - if is_trainable and adapter_to_resume is None: # create new lora weights while training - if len(finetuning_args.lora_target) == 1 and finetuning_args.lora_target[0] == "all": - target_modules = find_all_linear_modules(model, finetuning_args.freeze_vision_tower) - else: - target_modules = finetuning_args.lora_target - - if finetuning_args.use_llama_pro: - target_modules = find_expanded_modules(model, target_modules, finetuning_args.freeze_trainable_layers) - - if model_args.visual_inputs and finetuning_args.freeze_vision_tower: - target_modules = "^(?!.*vision_tower).*(?:{}).*".format("|".join(target_modules)) - - if ( - finetuning_args.use_dora - and getattr(model, "quantization_method", None) is not None - and getattr(model, "quantization_method", None) != QuantizationMethod.BITS_AND_BYTES - ): - raise ValueError("DoRA is not compatible with PTQ-quantized models.") - - if model_args.resize_vocab and finetuning_args.additional_target is None: - input_embeddings = model.get_input_embeddings() - output_embeddings = model.get_output_embeddings() - module_names = set() - for name, module in model.named_modules(): - if module in [input_embeddings, output_embeddings]: - module_names.add(name.split(".")[-1]) - - finetuning_args.additional_target = module_names - logger.warning("Vocab has been resized, add {} to trainable params.".format(",".join(module_names))) - - peft_kwargs = { - "r": finetuning_args.lora_rank, - "target_modules": target_modules, - "lora_alpha": finetuning_args.lora_alpha, - "lora_dropout": finetuning_args.lora_dropout, - "use_rslora": finetuning_args.use_rslora, - "modules_to_save": finetuning_args.additional_target, - } - - if model_args.use_unsloth: - model = get_unsloth_peft_model(model, model_args, peft_kwargs) - else: - lora_config = LoraConfig( - task_type=TaskType.CAUSAL_LM, - inference_mode=False, - use_dora=finetuning_args.use_dora, - **peft_kwargs, - ) - model = get_peft_model(model, lora_config) - - if is_trainable and cast_trainable_params_to_fp32: - for param in filter(lambda p: p.requires_grad, model.parameters()): - param.data = param.data.to(torch.float32) - - if model_args.adapter_name_or_path is not None: - logger.info("Loaded adapter(s): {}".format(",".join(model_args.adapter_name_or_path))) + model = _setup_lora_tuning( + config, model, model_args, finetuning_args, is_trainable, cast_trainable_params_to_fp32 + ) return model From 4b55f35662c9f424f07196ada7f94746f78f95e7 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 00:58:10 +0800 Subject: [PATCH 107/169] Delete .readthedocs.yaml --- .readthedocs.yaml | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 .readthedocs.yaml diff --git a/.readthedocs.yaml b/.readthedocs.yaml deleted file mode 100644 index 3a9eaea1..00000000 --- a/.readthedocs.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Read the Docs configuration file -# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details - -version: 2 - -build: - os: ubuntu-22.04 - tools: - python: "3.8" - -sphinx: - configuration: docs/source/conf.py - -formats: - - pdf - -python: - install: - - requirements: docs/requirements-docs.txt From 1c7f0ab51906b20190f8d4db932623cff76efc01 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 01:35:58 +0800 Subject: [PATCH 108/169] init unittest --- README.md | 1 - README_zh.md | 1 - docker-compose.yml | 2 -- {tests => scripts}/test_toolcall.py | 2 +- tests/model/test_attn.py | 35 +++++++++++++++++++++++++++++ tests/test_throughput.py | 30 ------------------------- 6 files changed, 36 insertions(+), 35 deletions(-) rename {tests => scripts}/test_toolcall.py (97%) create mode 100644 tests/model/test_attn.py delete mode 100644 tests/test_throughput.py diff --git a/README.md b/README.md index 77d9c709..44897420 100644 --- a/README.md +++ b/README.md @@ -430,7 +430,6 @@ docker run --gpus=all \ -v ./hf_cache:/root/.cache/huggingface/ \ -v ./data:/app/data \ -v ./output:/app/output \ - -e CUDA_VISIBLE_DEVICES=0 \ -p 7860:7860 \ --shm-size 16G \ --name llama_factory \ diff --git a/README_zh.md b/README_zh.md index 9a52a963..8321d202 100644 --- a/README_zh.md +++ b/README_zh.md @@ -428,7 +428,6 @@ docker run --gpus=all \ -v ./hf_cache:/root/.cache/huggingface/ \ -v ./data:/app/data \ -v ./output:/app/output \ - -e CUDA_VISIBLE_DEVICES=0 \ -p 7860:7860 \ --shm-size 16G \ --name llama_factory \ diff --git a/docker-compose.yml b/docker-compose.yml index 333dc51e..9602a3e3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,8 +10,6 @@ services: - ./hf_cache:/root/.cache/huggingface/ - ./data:/app/data - ./output:/app/output - environment: - - CUDA_VISIBLE_DEVICES=0 ports: - "7860:7860" ipc: host diff --git a/tests/test_toolcall.py b/scripts/test_toolcall.py similarity index 97% rename from tests/test_toolcall.py rename to scripts/test_toolcall.py index d36e7fec..7e460017 100644 --- a/tests/test_toolcall.py +++ b/scripts/test_toolcall.py @@ -20,7 +20,7 @@ def calculate_gpa(grades: Sequence[str], hours: Sequence[int]) -> float: def main(): client = OpenAI( - api_key="0", + api_key="{}".format(os.environ.get("API_KEY", "0")), base_url="http://localhost:{}/v1".format(os.environ.get("API_PORT", 8000)), ) tools = [ diff --git a/tests/model/test_attn.py b/tests/model/test_attn.py new file mode 100644 index 00000000..12d920ef --- /dev/null +++ b/tests/model/test_attn.py @@ -0,0 +1,35 @@ +import os + +from transformers.utils import is_flash_attn_2_available, is_torch_sdpa_available + +from llamafactory.hparams import get_infer_args +from llamafactory.model import load_model, load_tokenizer + + +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-LlamaForCausalLM") + + +def test_attention(): + attention_available = ["off"] + if is_torch_sdpa_available(): + attention_available.append("sdpa") + + if is_flash_attn_2_available(): + attention_available.append("fa2") + + llama_attention_classes = { + "off": "LlamaAttention", + "sdpa": "LlamaSdpaAttention", + "fa2": "LlamaFlashAttention2", + } + for requested_attention in attention_available: + model_args, _, finetuning_args, _ = get_infer_args({ + "model_name_or_path": TINY_LLAMA, + "template": "llama2", + "flash_attn": requested_attention, + }) + tokenizer = load_tokenizer(model_args) + model = load_model(tokenizer["tokenizer"], model_args, finetuning_args) + for module in model.modules(): + if "Attention" in module.__class__.__name__: + assert module.__class__.__name__ == llama_attention_classes[requested_attention] diff --git a/tests/test_throughput.py b/tests/test_throughput.py deleted file mode 100644 index e8048910..00000000 --- a/tests/test_throughput.py +++ /dev/null @@ -1,30 +0,0 @@ -import os -import time - -from openai import OpenAI -from transformers.utils.versions import require_version - - -require_version("openai>=1.5.0", "To fix: pip install openai>=1.5.0") - - -def main(): - client = OpenAI( - api_key="0", - base_url="http://localhost:{}/v1".format(os.environ.get("API_PORT", 8000)), - ) - messages = [{"role": "user", "content": "Write a long essay about environment protection as long as possible."}] - num_tokens = 0 - start_time = time.time() - for _ in range(8): - result = client.chat.completions.create(messages=messages, model="test") - num_tokens += result.usage.completion_tokens - - elapsed_time = time.time() - start_time - print("Throughput: {:.2f} tokens/s".format(num_tokens / elapsed_time)) - # --infer_backend hf: 27.22 tokens/s (1.0x) - # --infer_backend vllm: 73.03 tokens/s (2.7x) - - -if __name__ == "__main__": - main() From aa2578bea072354656dbdb62b970e16a8b86f16b Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 01:48:30 +0800 Subject: [PATCH 109/169] add ci --- .github/workflows/tests.yml | 46 ++++++++++++++++++++++++++++++------- Makefile | 5 +++- 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f891f711..a8246986 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -2,28 +2,58 @@ name: tests on: push: - branches: [ "main" ] + branches: + - main + paths: + - "**.py" + - "requirements.txt" + - ".github/workflows/*.yml" pull_request: - branches: [ "main" ] + branches: + - main + paths: + - "**.py" + - "requirements.txt" + - ".github/workflows/*.yml" jobs: check_code_quality: - runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 - - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.8" - + cache: "pip" + cache-dependency-path: "setup.py" - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install ruff - + python -m pip install .[torch,metrics,quality] - name: Check quality run: | make style && make quality + + pytest: + needs: check_code_quality + strategy: + matrix: + python-version: ["3.8", "3.9"] + os: ["ubuntu-latest", "windows-latest"] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: "pip" + cache-dependency-path: "setup.py" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install .[torch,metrics,quality] + - name: Test with pytest + run: | + make test diff --git a/Makefile b/Makefile index 3a4a12c9..65be047b 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: quality style +.PHONY: quality style test check_dirs := scripts src tests @@ -9,3 +9,6 @@ quality: style: ruff check $(check_dirs) --fix ruff format $(check_dirs) + +test: + pytest tests/ From 7f20e4722ae6ac907b36a3219dcd09d2ff5d071a Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 01:57:36 +0800 Subject: [PATCH 110/169] fix ci --- .github/workflows/tests.yml | 6 +++--- setup.py | 2 +- tests/model/{test_attn.py => test_attention.py} | 14 ++++++++------ 3 files changed, 12 insertions(+), 10 deletions(-) rename tests/model/{test_attn.py => test_attention.py} (73%) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a8246986..a66b579b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -30,10 +30,10 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install .[torch,metrics,quality] + python -m pip install .[torch,dev] - name: Check quality run: | - make style && make quality + make style && make quality pytest: needs: check_code_quality @@ -53,7 +53,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install .[torch,metrics,quality] + python -m pip install .[torch,dev] - name: Test with pytest run: | make test diff --git a/setup.py b/setup.py index c32be8af..405ac46e 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ extra_require = { "aqlm": ["aqlm[gpu]>=1.1.0"], "qwen": ["transformers_stream_generator"], "modelscope": ["modelscope"], - "quality": ["ruff"], + "dev": ["ruff", "pytest"], } diff --git a/tests/model/test_attn.py b/tests/model/test_attention.py similarity index 73% rename from tests/model/test_attn.py rename to tests/model/test_attention.py index 12d920ef..6dd46050 100644 --- a/tests/model/test_attn.py +++ b/tests/model/test_attention.py @@ -23,13 +23,15 @@ def test_attention(): "fa2": "LlamaFlashAttention2", } for requested_attention in attention_available: - model_args, _, finetuning_args, _ = get_infer_args({ - "model_name_or_path": TINY_LLAMA, - "template": "llama2", - "flash_attn": requested_attention, - }) + model_args, _, finetuning_args, _ = get_infer_args( + { + "model_name_or_path": TINY_LLAMA, + "template": "llama2", + "flash_attn": requested_attention, + } + ) tokenizer = load_tokenizer(model_args) model = load_model(tokenizer["tokenizer"], model_args, finetuning_args) for module in model.modules(): if "Attention" in module.__class__.__name__: - assert module.__class__.__name__ == llama_attention_classes[requested_attention] + assert module.__class__.__name__ == llama_attention_classes[requested_attention] From 42d9b26fc81d66cb0485a2ae148c3e719df59b7d Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 02:00:44 +0800 Subject: [PATCH 111/169] fix ci --- .github/workflows/tests.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a66b579b..818d58fc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -39,8 +39,10 @@ jobs: needs: check_code_quality strategy: matrix: - python-version: ["3.8", "3.9"] - os: ["ubuntu-latest", "windows-latest"] + python-version: + - "3.8" + os: + - "ubuntu-latest" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 From 12d79f89c5082eb29842b501e1cb88433a248ba3 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 02:42:34 +0800 Subject: [PATCH 112/169] add ultrafeedback and fineweb #4085 #4132 --- .github/workflows/tests.yml | 24 +----------------------- README.md | 3 +++ README_zh.md | 3 +++ data/dataset_info.json | 31 +++++++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 23 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 818d58fc..32edf6a8 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,7 +17,7 @@ on: - ".github/workflows/*.yml" jobs: - check_code_quality: + tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -34,28 +34,6 @@ jobs: - name: Check quality run: | make style && make quality - - pytest: - needs: check_code_quality - strategy: - matrix: - python-version: - - "3.8" - os: - - "ubuntu-latest" - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v4 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - cache: "pip" - cache-dependency-path: "setup.py" - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python -m pip install .[torch,dev] - name: Test with pytest run: | make test diff --git a/README.md b/README.md index 44897420..fb6c5782 100644 --- a/README.md +++ b/README.md @@ -214,6 +214,8 @@ You also can add a custom chat template to [template.py](src/llamafactory/data/t - [Wikipedia (zh)](https://huggingface.co/datasets/pleisto/wikipedia-cn-20230720-filtered) - [Pile (en)](https://huggingface.co/datasets/EleutherAI/pile) - [SkyPile (zh)](https://huggingface.co/datasets/Skywork/SkyPile-150B) +- [FineWeb (en)](https://huggingface.co/datasets/HuggingFaceFW/fineweb) +- [FineWeb-Edu (en)](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu) - [The Stack (en)](https://huggingface.co/datasets/bigcode/the-stack) - [StarCoder (en)](https://huggingface.co/datasets/bigcode/starcoderdata) @@ -273,6 +275,7 @@ You also can add a custom chat template to [template.py](src/llamafactory/data/t

    Preference datasets - [DPO mixed (en&zh)](https://huggingface.co/datasets/hiyouga/DPO-En-Zh-20k) +- [UltraFeedback (en)](https://huggingface.co/datasets/HuggingFaceH4/ultrafeedback_binarized) - [Orca DPO Pairs (en)](https://huggingface.co/datasets/Intel/orca_dpo_pairs) - [HH-RLHF (en)](https://huggingface.co/datasets/Anthropic/hh-rlhf) - [Nectar (en)](https://huggingface.co/datasets/berkeley-nest/Nectar) diff --git a/README_zh.md b/README_zh.md index 8321d202..142254df 100644 --- a/README_zh.md +++ b/README_zh.md @@ -214,6 +214,8 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd - [Wikipedia (zh)](https://huggingface.co/datasets/pleisto/wikipedia-cn-20230720-filtered) - [Pile (en)](https://huggingface.co/datasets/EleutherAI/pile) - [SkyPile (zh)](https://huggingface.co/datasets/Skywork/SkyPile-150B) +- [FineWeb (en)](https://huggingface.co/datasets/HuggingFaceFW/fineweb) +- [FineWeb-Edu (en)](https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu) - [The Stack (en)](https://huggingface.co/datasets/bigcode/the-stack) - [StarCoder (en)](https://huggingface.co/datasets/bigcode/starcoderdata) @@ -273,6 +275,7 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd
    偏好数据集 - [DPO mixed (en&zh)](https://huggingface.co/datasets/hiyouga/DPO-En-Zh-20k) +- [UltraFeedback (en)](https://huggingface.co/datasets/HuggingFaceH4/ultrafeedback_binarized) - [Orca DPO Pairs (en)](https://huggingface.co/datasets/Intel/orca_dpo_pairs) - [HH-RLHF (en)](https://huggingface.co/datasets/Anthropic/hh-rlhf) - [Nectar (en)](https://huggingface.co/datasets/berkeley-nest/Nectar) diff --git a/data/dataset_info.json b/data/dataset_info.json index 2d9b0c83..8c5cbb45 100644 --- a/data/dataset_info.json +++ b/data/dataset_info.json @@ -391,6 +391,16 @@ "rejected": "rejected" } }, + "ultrafeedback": { + "hf_hub_url": "llamafactory/ultrafeedback_binarized", + "ms_hub_url": "llamafactory/ultrafeedback_binarized", + "ranking": true, + "columns": { + "prompt": "instruction", + "chosen": "chosen", + "rejected": "rejected" + } + }, "orca_pairs": { "hf_hub_url": "Intel/orca_dpo_pairs", "ranking": true, @@ -448,6 +458,15 @@ "assistant_tag": "assistant" } }, + "ultrafeedback_kto": { + "hf_hub_url": "argilla/ultrafeedback-binarized-preferences-cleaned-kto", + "ms_hub_url": "AI-ModelScope/ultrafeedback-binarized-preferences-cleaned-kto", + "columns": { + "prompt": "prompt", + "response": "completion", + "kto_tag": "label" + } + }, "wiki_demo": { "file_name": "wiki_demo.txt", "columns": { @@ -501,6 +520,18 @@ "prompt": "text" } }, + "fileweb": { + "hf_hub_url": "HuggingFaceFW/fineweb", + "columns": { + "prompt": "text" + } + }, + "fileweb_edu": { + "hf_hub_url": "HuggingFaceFW/fineweb-edu", + "columns": { + "prompt": "text" + } + }, "the_stack": { "hf_hub_url": "bigcode/the-stack", "ms_hub_url": "AI-ModelScope/the-stack", From 5aa4ce47567146cd97c61623018153b41d7c1278 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 05:20:54 +0800 Subject: [PATCH 113/169] release v0.8.0 --- src/llamafactory/data/template.py | 11 +--- src/llamafactory/extras/env.py | 2 +- tests/data/test_supervised.py | 44 +++++++++++++ .../model/{ => model_utils}/test_attention.py | 4 +- tests/model/test_freeze.py | 61 +++++++++++++++++++ tests/model/test_full.py | 33 ++++++++++ 6 files changed, 142 insertions(+), 13 deletions(-) create mode 100644 tests/data/test_supervised.py rename tests/model/{ => model_utils}/test_attention.py (88%) create mode 100644 tests/model/test_freeze.py create mode 100644 tests/model/test_full.py diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index 3dce5ec6..b600c567 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -700,17 +700,8 @@ _register_template( _register_template( name="llama2", format_user=StringFormatter(slots=[{"bos_token"}, "[INST] {{content}} [/INST]"]), + format_assistant=StringFormatter(slots=[" {{content}} ", {"eos_token"}]), format_system=StringFormatter(slots=["<>\n{{content}}\n<>\n\n"]), - default_system=( - "You are a helpful, respectful and honest assistant. " - "Always answer as helpfully as possible, while being safe. " - "Your answers should not include any harmful, unethical, " - "racist, sexist, toxic, dangerous, or illegal content. " - "Please ensure that your responses are socially unbiased and positive in nature.\n\n" - "If a question does not make any sense, or is not factually coherent, " - "explain why instead of answering something not correct. " - "If you don't know the answer to a question, please don't share false information." - ), ) diff --git a/src/llamafactory/extras/env.py b/src/llamafactory/extras/env.py index fdccf86b..cd81442d 100644 --- a/src/llamafactory/extras/env.py +++ b/src/llamafactory/extras/env.py @@ -12,7 +12,7 @@ from transformers.utils import is_bitsandbytes_available, is_torch_cuda_availabl from .packages import is_vllm_available -VERSION = "0.7.2.dev0" +VERSION = "0.8.0" def print_env() -> None: diff --git a/tests/data/test_supervised.py b/tests/data/test_supervised.py new file mode 100644 index 00000000..bb7f71df --- /dev/null +++ b/tests/data/test_supervised.py @@ -0,0 +1,44 @@ +import os + +import pytest +from datasets import load_dataset + +from llamafactory.data import get_dataset +from llamafactory.hparams import get_train_args +from llamafactory.model import load_tokenizer + + +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-LlamaForCausalLM") + +TRAINING_ARGS = { + "model_name_or_path": TINY_LLAMA, + "stage": "sft", + "do_train": True, + "finetuning_type": "full", + "dataset": "llamafactory/tiny_dataset", + "dataset_dir": "ONLINE", + "template": "llama3", + "cutoff_len": 1024, + "overwrite_cache": True, + "output_dir": "dummy_dir", + "overwrite_output_dir": True, + "fp16": True, +} + + +@pytest.mark.parametrize("test_num", [5]) +def test_supervised(test_num: int): + model_args, data_args, training_args, _, _ = get_train_args(TRAINING_ARGS) + tokenizer_module = load_tokenizer(model_args) + tokenizer = tokenizer_module["tokenizer"] + tokenized_data = get_dataset(model_args, data_args, training_args, stage="sft", **tokenizer_module) + + original_data = load_dataset(TRAINING_ARGS["dataset"], split="train") + for test_idx in range(test_num): + decode_result = tokenizer.decode(tokenized_data["input_ids"][test_idx]) + messages = [ + {"role": "user", "content": original_data[test_idx]["instruction"]}, + {"role": "assistant", "content": original_data[test_idx]["output"]}, + ] + templated_result = tokenizer.apply_chat_template(messages, tokenize=False) + assert decode_result == templated_result diff --git a/tests/model/test_attention.py b/tests/model/model_utils/test_attention.py similarity index 88% rename from tests/model/test_attention.py rename to tests/model/model_utils/test_attention.py index 6dd46050..4d414289 100644 --- a/tests/model/test_attention.py +++ b/tests/model/model_utils/test_attention.py @@ -30,8 +30,8 @@ def test_attention(): "flash_attn": requested_attention, } ) - tokenizer = load_tokenizer(model_args) - model = load_model(tokenizer["tokenizer"], model_args, finetuning_args) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args) for module in model.modules(): if "Attention" in module.__class__.__name__: assert module.__class__.__name__ == llama_attention_classes[requested_attention] diff --git a/tests/model/test_freeze.py b/tests/model/test_freeze.py new file mode 100644 index 00000000..c6cdec78 --- /dev/null +++ b/tests/model/test_freeze.py @@ -0,0 +1,61 @@ +import os + +import torch + +from llamafactory.hparams import get_train_args +from llamafactory.model import load_model, load_tokenizer + + +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-LlamaForCausalLM") + +TRAINING_ARGS = { + "model_name_or_path": TINY_LLAMA, + "stage": "sft", + "do_train": True, + "finetuning_type": "freeze", + "dataset": "llamafactory/tiny_dataset", + "dataset_dir": "ONLINE", + "template": "llama3", + "cutoff_len": 1024, + "overwrite_cache": True, + "output_dir": "dummy_dir", + "overwrite_output_dir": True, + "fp16": True, +} + + +def test_freeze_all_modules(): + model_args, _, _, finetuning_args, _ = get_train_args( + { + "freeze_trainable_layers": 1, + **TRAINING_ARGS, + } + ) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + for name, param in model.named_parameters(): + if name.startswith("model.layers.1."): + assert param.requires_grad is True + assert param.dtype == torch.float32 + else: + assert param.requires_grad is False + assert param.dtype == torch.float16 + + +def test_freeze_extra_modules(): + model_args, _, _, finetuning_args, _ = get_train_args( + { + "freeze_trainable_layers": 1, + "freeze_extra_modules": "embed_tokens,lm_head", + **TRAINING_ARGS, + } + ) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + for name, param in model.named_parameters(): + if name.startswith("model.layers.1.") or any(module in name for module in ["embed_tokens", "lm_head"]): + assert param.requires_grad is True + assert param.dtype == torch.float32 + else: + assert param.requires_grad is False + assert param.dtype == torch.float16 diff --git a/tests/model/test_full.py b/tests/model/test_full.py new file mode 100644 index 00000000..ef57a980 --- /dev/null +++ b/tests/model/test_full.py @@ -0,0 +1,33 @@ +import os + +import torch + +from llamafactory.hparams import get_train_args +from llamafactory.model import load_model, load_tokenizer + + +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-LlamaForCausalLM") + +TRAINING_ARGS = { + "model_name_or_path": TINY_LLAMA, + "stage": "sft", + "do_train": True, + "finetuning_type": "full", + "dataset": "llamafactory/tiny_dataset", + "dataset_dir": "ONLINE", + "template": "llama3", + "cutoff_len": 1024, + "overwrite_cache": True, + "output_dir": "dummy_dir", + "overwrite_output_dir": True, + "fp16": True, +} + + +def test_full(): + model_args, _, _, finetuning_args, _ = get_train_args(TRAINING_ARGS) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + for param in model.parameters(): + assert param.requires_grad is True + assert param.dtype == torch.float32 From 3ac11e77cccf686e0da499bd152997133b49a265 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 06:46:09 +0800 Subject: [PATCH 114/169] set dev version --- src/llamafactory/extras/env.py | 2 +- tests/model/test_lora.py | 72 ++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 tests/model/test_lora.py diff --git a/src/llamafactory/extras/env.py b/src/llamafactory/extras/env.py index cd81442d..2b9c6458 100644 --- a/src/llamafactory/extras/env.py +++ b/src/llamafactory/extras/env.py @@ -12,7 +12,7 @@ from transformers.utils import is_bitsandbytes_available, is_torch_cuda_availabl from .packages import is_vllm_available -VERSION = "0.8.0" +VERSION = "0.8.1.dev0" def print_env() -> None: diff --git a/tests/model/test_lora.py b/tests/model/test_lora.py new file mode 100644 index 00000000..1f2c02ae --- /dev/null +++ b/tests/model/test_lora.py @@ -0,0 +1,72 @@ +import os + +import torch + +from llamafactory.hparams import get_train_args +from llamafactory.model import load_model, load_tokenizer + + +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-LlamaForCausalLM") + +TRAINING_ARGS = { + "model_name_or_path": TINY_LLAMA, + "stage": "sft", + "do_train": True, + "finetuning_type": "lora", + "dataset": "llamafactory/tiny_dataset", + "dataset_dir": "ONLINE", + "template": "llama3", + "cutoff_len": 1024, + "overwrite_cache": True, + "output_dir": "dummy_dir", + "overwrite_output_dir": True, + "fp16": True, +} + + +def test_lora_all_modules(): + model_args, _, _, finetuning_args, _ = get_train_args( + { + "lora_target": "all", + **TRAINING_ARGS, + } + ) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + linear_modules = set() + for name, param in model.named_parameters(): + if any(module in name for module in ["lora_A", "lora_B"]): + linear_modules.add(name.split(".lora_", maxsplit=1)[0].split(".")[-1]) + assert param.requires_grad is True + assert param.dtype == torch.float32 + else: + assert param.requires_grad is False + assert param.dtype == torch.float16 + + assert linear_modules == {"q_proj", "k_proj", "v_proj", "o_proj", "up_proj", "gate_proj", "down_proj"} + + +def test_lora_extra_modules(): + model_args, _, _, finetuning_args, _ = get_train_args( + { + "lora_target": "all", + "additional_target": "embed_tokens,lm_head", + **TRAINING_ARGS, + } + ) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + extra_modules = set() + for name, param in model.named_parameters(): + if any(module in name for module in ["lora_A", "lora_B"]): + assert param.requires_grad is True + assert param.dtype == torch.float32 + elif "modules_to_save" in name: + extra_modules.add(name.split(".modules_to_save", maxsplit=1)[0].split(".")[-1]) + assert param.requires_grad is True + assert param.dtype == torch.float32 + else: + assert param.requires_grad is False + assert param.dtype == torch.float16 + + assert extra_modules == {"embed_tokens", "lm_head"} From 972ec9c668de1a9b6d872187dbc0c1d94f6fec6b Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 07:15:45 +0800 Subject: [PATCH 115/169] fix llamafactory-cli env --- src/llamafactory/extras/env.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/llamafactory/extras/env.py b/src/llamafactory/extras/env.py index 2b9c6458..1d4e43f1 100644 --- a/src/llamafactory/extras/env.py +++ b/src/llamafactory/extras/env.py @@ -6,10 +6,7 @@ import peft import torch import transformers import trl -from transformers.integrations import is_deepspeed_available -from transformers.utils import is_bitsandbytes_available, is_torch_cuda_available, is_torch_npu_available - -from .packages import is_vllm_available +from transformers.utils import is_torch_cuda_available, is_torch_npu_available VERSION = "0.8.1.dev0" @@ -37,19 +34,25 @@ def print_env() -> None: info["NPU type"] = torch.npu.get_device_name() info["CANN version"] = torch.version.cann - if is_deepspeed_available(): + try: import deepspeed # type: ignore info["DeepSpeed version"] = deepspeed.__version__ + except Exception: + pass - if is_bitsandbytes_available(): + try: import bitsandbytes info["Bitsandbytes version"] = bitsandbytes.__version__ + except Exception: + pass - if is_vllm_available(): + try: import vllm info["vLLM version"] = vllm.__version__ + except Exception: + pass print("\n" + "\n".join(["- {}: {}".format(key, value) for key, value in info.items()]) + "\n") From 4c4f950f3936edbce84796c9a5e11b61ea07864e Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 21:11:32 +0800 Subject: [PATCH 116/169] update git workflows --- .github/workflows/label_issue.yml | 17 +++++++++++++++++ .github/workflows/tests.yml | 17 ++++++++--------- 2 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/label_issue.yml diff --git a/.github/workflows/label_issue.yml b/.github/workflows/label_issue.yml new file mode 100644 index 00000000..b9a5543c --- /dev/null +++ b/.github/workflows/label_issue.yml @@ -0,0 +1,17 @@ +name: label_issue + +on: + issues: + types: + - opened + +jobs: + label_issue: + runs-on: ubuntu-latest + + steps: + - env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ISSUE_URL: ${{ github.event.issue.html_url }} + run: | + gh issue edit $ISSUE_URL --add-label "pending" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 32edf6a8..6ddcbc05 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -3,14 +3,7 @@ name: tests on: push: branches: - - main - paths: - - "**.py" - - "requirements.txt" - - ".github/workflows/*.yml" - pull_request: - branches: - - main + - $default-branch paths: - "**.py" - "requirements.txt" @@ -19,21 +12,27 @@ on: jobs: tests: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v4 + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.8" cache: "pip" cache-dependency-path: "setup.py" + - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install .[torch,dev] + - name: Check quality run: | make style && make quality + - name: Test with pytest run: | make test From 25c635ef2849fd173617b6a8d8d3f5d4f800a893 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 21:15:36 +0800 Subject: [PATCH 117/169] Update tests.yml --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6ddcbc05..f3ac96db 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -3,7 +3,7 @@ name: tests on: push: branches: - - $default-branch + - main paths: - "**.py" - "requirements.txt" From b61d25cd705db821664f87adf37d2ed56c68130f Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 8 Jun 2024 21:25:35 +0800 Subject: [PATCH 118/169] add pr ci --- .github/workflows/tests.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f3ac96db..96092662 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -8,6 +8,15 @@ on: - "**.py" - "requirements.txt" - ".github/workflows/*.yml" + pull_request: + types: + - review_requested + branches: + - main + paths: + - "**.py" + - "requirements.txt" + - ".github/workflows/*.yml" jobs: tests: From 483cdd9b6ad42bc43a97df8ce867e3a9ef9bf5bc Mon Sep 17 00:00:00 2001 From: "-.-" Date: Sat, 8 Jun 2024 23:51:56 +0800 Subject: [PATCH 119/169] fix README --- README.md | 2 +- README_zh.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fb6c5782..4dea65b9 100644 --- a/README.md +++ b/README.md @@ -335,7 +335,7 @@ huggingface-cli login ```bash git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory -pip install -e '.[torch,metrics]' +pip install -e ".[torch,metrics]" ``` Extra dependencies available: torch, torch_npu, metrics, deepspeed, bitsandbytes, vllm, galore, badam, gptq, awq, aqlm, qwen, modelscope, quality diff --git a/README_zh.md b/README_zh.md index 142254df..ab0e8cb7 100644 --- a/README_zh.md +++ b/README_zh.md @@ -335,7 +335,7 @@ huggingface-cli login ```bash git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory -pip install -e '.[torch,metrics]' +pip install -e ".[torch,metrics]" ``` 可选的额外依赖项:torch、torch_npu、metrics、deepspeed、bitsandbytes、vllm、galore、badam、gptq、awq、aqlm、qwen、modelscope、quality From c907d816670975daa900898660d3503708b7fc37 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 10 Jun 2024 21:24:15 +0800 Subject: [PATCH 120/169] fix #2666 --- src/llamafactory/model/adapter.py | 2 +- tests/data/test_supervised.py | 32 ++++++++++++++--------- tests/model/model_utils/test_attention.py | 15 +++++------ tests/model/test_freeze.py | 19 ++++---------- tests/model/test_full.py | 8 +++--- tests/model/test_lora.py | 19 ++++---------- 6 files changed, 41 insertions(+), 54 deletions(-) diff --git a/src/llamafactory/model/adapter.py b/src/llamafactory/model/adapter.py index f4e501a7..34b9eda6 100644 --- a/src/llamafactory/model/adapter.py +++ b/src/llamafactory/model/adapter.py @@ -209,6 +209,7 @@ def _setup_lora_tuning( "lora_alpha": finetuning_args.lora_alpha, "lora_dropout": finetuning_args.lora_dropout, "use_rslora": finetuning_args.use_rslora, + "use_dora": finetuning_args.use_dora, "modules_to_save": finetuning_args.additional_target, } @@ -218,7 +219,6 @@ def _setup_lora_tuning( lora_config = LoraConfig( task_type=TaskType.CAUSAL_LM, inference_mode=False, - use_dora=finetuning_args.use_dora, **peft_kwargs, ) model = get_peft_model(model, lora_config) diff --git a/tests/data/test_supervised.py b/tests/data/test_supervised.py index bb7f71df..63a3453f 100644 --- a/tests/data/test_supervised.py +++ b/tests/data/test_supervised.py @@ -1,4 +1,5 @@ import os +import random import pytest from datasets import load_dataset @@ -8,17 +9,17 @@ from llamafactory.hparams import get_train_args from llamafactory.model import load_tokenizer -TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-LlamaForCausalLM") +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") -TRAINING_ARGS = { +TRAIN_ARGS = { "model_name_or_path": TINY_LLAMA, "stage": "sft", "do_train": True, "finetuning_type": "full", - "dataset": "llamafactory/tiny_dataset", + "dataset": "llamafactory/tiny-supervised-dataset", "dataset_dir": "ONLINE", "template": "llama3", - "cutoff_len": 1024, + "cutoff_len": 8192, "overwrite_cache": True, "output_dir": "dummy_dir", "overwrite_output_dir": True, @@ -26,19 +27,24 @@ TRAINING_ARGS = { } -@pytest.mark.parametrize("test_num", [5]) -def test_supervised(test_num: int): - model_args, data_args, training_args, _, _ = get_train_args(TRAINING_ARGS) +@pytest.mark.parametrize("num_samples", [10]) +def test_supervised(num_samples: int): + model_args, data_args, training_args, _, _ = get_train_args(TRAIN_ARGS) tokenizer_module = load_tokenizer(model_args) tokenizer = tokenizer_module["tokenizer"] tokenized_data = get_dataset(model_args, data_args, training_args, stage="sft", **tokenizer_module) - original_data = load_dataset(TRAINING_ARGS["dataset"], split="train") - for test_idx in range(test_num): - decode_result = tokenizer.decode(tokenized_data["input_ids"][test_idx]) + original_data = load_dataset(TRAIN_ARGS["dataset"], split="train") + indexes = random.choices(range(len(original_data)), k=num_samples) + for index in indexes: + decoded_result = tokenizer.decode(tokenized_data["input_ids"][index]) + prompt = original_data[index]["instruction"] + if original_data[index]["input"]: + prompt += "\n" + original_data[index]["input"] + messages = [ - {"role": "user", "content": original_data[test_idx]["instruction"]}, - {"role": "assistant", "content": original_data[test_idx]["output"]}, + {"role": "user", "content": prompt}, + {"role": "assistant", "content": original_data[index]["output"]}, ] templated_result = tokenizer.apply_chat_template(messages, tokenize=False) - assert decode_result == templated_result + assert decoded_result == templated_result diff --git a/tests/model/model_utils/test_attention.py b/tests/model/model_utils/test_attention.py index 4d414289..751adda4 100644 --- a/tests/model/model_utils/test_attention.py +++ b/tests/model/model_utils/test_attention.py @@ -6,7 +6,12 @@ from llamafactory.hparams import get_infer_args from llamafactory.model import load_model, load_tokenizer -TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-LlamaForCausalLM") +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") + +INFER_ARGS = { + "model_name_or_path": TINY_LLAMA, + "template": "llama3", +} def test_attention(): @@ -23,13 +28,7 @@ def test_attention(): "fa2": "LlamaFlashAttention2", } for requested_attention in attention_available: - model_args, _, finetuning_args, _ = get_infer_args( - { - "model_name_or_path": TINY_LLAMA, - "template": "llama2", - "flash_attn": requested_attention, - } - ) + model_args, _, finetuning_args, _ = get_infer_args({"flash_attn": requested_attention, **INFER_ARGS}) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args) for module in model.modules(): diff --git a/tests/model/test_freeze.py b/tests/model/test_freeze.py index c6cdec78..97800696 100644 --- a/tests/model/test_freeze.py +++ b/tests/model/test_freeze.py @@ -6,14 +6,14 @@ from llamafactory.hparams import get_train_args from llamafactory.model import load_model, load_tokenizer -TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-LlamaForCausalLM") +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") -TRAINING_ARGS = { +TRAIN_ARGS = { "model_name_or_path": TINY_LLAMA, "stage": "sft", "do_train": True, "finetuning_type": "freeze", - "dataset": "llamafactory/tiny_dataset", + "dataset": "llamafactory/tiny-supervised-dataset", "dataset_dir": "ONLINE", "template": "llama3", "cutoff_len": 1024, @@ -25,12 +25,7 @@ TRAINING_ARGS = { def test_freeze_all_modules(): - model_args, _, _, finetuning_args, _ = get_train_args( - { - "freeze_trainable_layers": 1, - **TRAINING_ARGS, - } - ) + model_args, _, _, finetuning_args, _ = get_train_args({"freeze_trainable_layers": 1, **TRAIN_ARGS}) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) for name, param in model.named_parameters(): @@ -44,11 +39,7 @@ def test_freeze_all_modules(): def test_freeze_extra_modules(): model_args, _, _, finetuning_args, _ = get_train_args( - { - "freeze_trainable_layers": 1, - "freeze_extra_modules": "embed_tokens,lm_head", - **TRAINING_ARGS, - } + {"freeze_trainable_layers": 1, "freeze_extra_modules": "embed_tokens,lm_head", **TRAIN_ARGS} ) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) diff --git a/tests/model/test_full.py b/tests/model/test_full.py index ef57a980..6cb78f37 100644 --- a/tests/model/test_full.py +++ b/tests/model/test_full.py @@ -6,14 +6,14 @@ from llamafactory.hparams import get_train_args from llamafactory.model import load_model, load_tokenizer -TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-LlamaForCausalLM") +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") -TRAINING_ARGS = { +TRAIN_ARGS = { "model_name_or_path": TINY_LLAMA, "stage": "sft", "do_train": True, "finetuning_type": "full", - "dataset": "llamafactory/tiny_dataset", + "dataset": "llamafactory/tiny-supervised-dataset", "dataset_dir": "ONLINE", "template": "llama3", "cutoff_len": 1024, @@ -25,7 +25,7 @@ TRAINING_ARGS = { def test_full(): - model_args, _, _, finetuning_args, _ = get_train_args(TRAINING_ARGS) + model_args, _, _, finetuning_args, _ = get_train_args(TRAIN_ARGS) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) for param in model.parameters(): diff --git a/tests/model/test_lora.py b/tests/model/test_lora.py index 1f2c02ae..2e2b89d9 100644 --- a/tests/model/test_lora.py +++ b/tests/model/test_lora.py @@ -6,14 +6,14 @@ from llamafactory.hparams import get_train_args from llamafactory.model import load_model, load_tokenizer -TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-LlamaForCausalLM") +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") -TRAINING_ARGS = { +TRAIN_ARGS = { "model_name_or_path": TINY_LLAMA, "stage": "sft", "do_train": True, "finetuning_type": "lora", - "dataset": "llamafactory/tiny_dataset", + "dataset": "llamafactory/tiny-supervised-dataset", "dataset_dir": "ONLINE", "template": "llama3", "cutoff_len": 1024, @@ -25,12 +25,7 @@ TRAINING_ARGS = { def test_lora_all_modules(): - model_args, _, _, finetuning_args, _ = get_train_args( - { - "lora_target": "all", - **TRAINING_ARGS, - } - ) + model_args, _, _, finetuning_args, _ = get_train_args({"lora_target": "all", **TRAIN_ARGS}) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) linear_modules = set() @@ -48,11 +43,7 @@ def test_lora_all_modules(): def test_lora_extra_modules(): model_args, _, _, finetuning_args, _ = get_train_args( - { - "lora_target": "all", - "additional_target": "embed_tokens,lm_head", - **TRAINING_ARGS, - } + {"lora_target": "all", "additional_target": "embed_tokens,lm_head", **TRAIN_ARGS} ) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) From 0012762b04d4082a3a7d98889cc3024adc92fc44 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 10 Jun 2024 23:56:00 +0800 Subject: [PATCH 121/169] update evaluator --- src/llamafactory/eval/evaluator.py | 4 +- src/llamafactory/eval/template.py | 9 ++-- tests/eval/test_eval_template.py | 77 ++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 tests/eval/test_eval_template.py diff --git a/src/llamafactory/eval/evaluator.py b/src/llamafactory/eval/evaluator.py index 192f4815..5c6fb104 100644 --- a/src/llamafactory/eval/evaluator.py +++ b/src/llamafactory/eval/evaluator.py @@ -26,9 +26,7 @@ class Evaluator: self.template = get_template_and_fix_tokenizer(self.tokenizer, self.data_args.template) self.model = load_model(self.tokenizer, self.model_args, finetuning_args) self.eval_template = get_eval_template(self.eval_args.lang) - self.choice_inputs = [ - self.tokenizer.encode(self.eval_template.prefix + ch, add_special_tokens=False)[-1] for ch in CHOICES - ] + self.choice_inputs = [self.tokenizer.encode(ch, add_special_tokens=False)[-1] for ch in CHOICES] @torch.inference_mode() def batch_inference(self, batch_input: Dict[str, torch.Tensor]) -> List[str]: diff --git a/src/llamafactory/eval/template.py b/src/llamafactory/eval/template.py index a4a6ef0e..2cbb5aaf 100644 --- a/src/llamafactory/eval/template.py +++ b/src/llamafactory/eval/template.py @@ -10,7 +10,6 @@ class EvalTemplate: system: str choice: str answer: str - prefix: str def _parse_example(self, example: Dict[str, str]) -> Tuple[str, str]: r""" @@ -42,8 +41,8 @@ class EvalTemplate: eval_templates: Dict[str, "EvalTemplate"] = {} -def _register_eval_template(name: str, system: str, choice: str, answer: str, prefix: str) -> None: - eval_templates[name] = EvalTemplate(system=system, choice=choice, answer=answer, prefix=prefix) +def _register_eval_template(name: str, system: str, choice: str, answer: str) -> None: + eval_templates[name] = EvalTemplate(system=system, choice=choice, answer=answer) def get_eval_template(name: str) -> "EvalTemplate": @@ -56,8 +55,7 @@ _register_eval_template( name="en", system="The following are multiple choice questions (with answers) about {subject}.\n\n", choice="\n{choice}. {content}", - answer="\nAnswer: ", - prefix=" ", + answer="\nAnswer:", ) @@ -66,5 +64,4 @@ _register_eval_template( system="以下是中国关于{subject}考试的单项选择题,请选出其中的正确答案。\n\n", choice="\n{choice}. {content}", answer="\n答案:", - prefix=" ", ) diff --git a/tests/eval/test_eval_template.py b/tests/eval/test_eval_template.py new file mode 100644 index 00000000..f6a91a67 --- /dev/null +++ b/tests/eval/test_eval_template.py @@ -0,0 +1,77 @@ +from llamafactory.eval.template import get_eval_template + + +def test_eval_template_en(): + support_set = [ + { + "question": "Fewshot question", + "A": "Fewshot1", + "B": "Fewshot2", + "C": "Fewshot3", + "D": "Fewshot4", + "answer": "B", + } + ] + example = { + "question": "Target question", + "A": "Target1", + "B": "Target2", + "C": "Target3", + "D": "Target4", + "answer": "C", + } + template = get_eval_template(name="en") + messages = template.format_example(example, support_set=support_set, subject_name="SubName") + assert messages == [ + { + "role": "user", + "content": ( + "The following are multiple choice questions (with answers) about SubName.\n\n" + "Fewshot question\nA. Fewshot1\nB. Fewshot2\nC. Fewshot3\nD. Fewshot4\nAnswer:" + ), + }, + {"role": "assistant", "content": "B"}, + { + "role": "user", + "content": "Target question\nA. Target1\nB. Target2\nC. Target3\nD. Target4\nAnswer:", + }, + {"role": "assistant", "content": "C"}, + ] + + +def test_eval_template_zh(): + support_set = [ + { + "question": "示例问题", + "A": "示例答案1", + "B": "示例答案2", + "C": "示例答案3", + "D": "示例答案4", + "answer": "B", + } + ] + example = { + "question": "目标问题", + "A": "目标答案1", + "B": "目标答案2", + "C": "目标答案3", + "D": "目标答案4", + "answer": "C", + } + template = get_eval_template(name="zh") + messages = template.format_example(example, support_set=support_set, subject_name="主题") + assert messages == [ + { + "role": "user", + "content": ( + "以下是中国关于主题考试的单项选择题,请选出其中的正确答案。\n\n" + "示例问题\nA. 示例答案1\nB. 示例答案2\nC. 示例答案3\nD. 示例答案4\n答案:" + ), + }, + {"role": "assistant", "content": "B"}, + { + "role": "user", + "content": "目标问题\nA. 目标答案1\nB. 目标答案2\nC. 目标答案3\nD. 目标答案4\n答案:", + }, + {"role": "assistant", "content": "C"}, + ] From 949e9908ad634874cf5449ee9904745c7acda611 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 11 Jun 2024 00:19:17 +0800 Subject: [PATCH 122/169] fix #4145 Fix the docker image --- Dockerfile | 38 ++++++++++++++++++++++++++++++++++---- README.md | 36 ++++++++++++++++++------------------ README_zh.md | 34 ++++++++++++++++++---------------- docker-compose.yml | 10 ++++++++-- 4 files changed, 78 insertions(+), 40 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0a35e355..45849601 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,44 @@ -FROM nvcr.io/nvidia/pytorch:24.01-py3 +# Use the NVIDIA official image with PyTorch 2.3.0 +# https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel-24-02.html +FROM nvcr.io/nvidia/pytorch:24.02-py3 +# Define installation arguments +ARG INSTALL_BNB=false +ARG INSTALL_VLLM=false +ARG INSTALL_DEEPSPEED=false +ARG PIP_INDEX=https://pypi.org/simple + +# Set the working directory WORKDIR /app +# Install the requirements COPY requirements.txt /app/ -RUN pip install -r requirements.txt +RUN pip config set global.index-url $PIP_INDEX +RUN python -m pip install --upgrade pip +RUN python -m pip install -r requirements.txt +# Copy the rest of the application into the image COPY . /app/ -RUN pip install -e .[metrics,bitsandbytes,qwen] +# Install the LLaMA Factory +RUN EXTRA_PACKAGES="metrics"; \ + if [ "$INSTALL_BNB" = "true" ]; then \ + EXTRA_PACKAGES="${EXTRA_PACKAGES},bitsandbytes"; \ + fi; \ + if [ "$INSTALL_VLLM" = "true" ]; then \ + EXTRA_PACKAGES="${EXTRA_PACKAGES},vllm"; \ + fi; \ + if [ "$INSTALL_DEEPSPEED" = "true" ]; then \ + EXTRA_PACKAGES="${EXTRA_PACKAGES},deepspeed"; \ + fi; \ + pip install -e .[$EXTRA_PACKAGES] && \ + pip uninstall -y transformer-engine + +# Set up volumes VOLUME [ "/root/.cache/huggingface/", "/app/data", "/app/output" ] + +# Expose port 7860 for the LLaMA Board EXPOSE 7860 -CMD [ "llamafactory-cli", "webui" ] +# Expose port 8000 for the API service +EXPOSE 8000 diff --git a/README.md b/README.md index 4dea65b9..35dacd2e 100644 --- a/README.md +++ b/README.md @@ -405,9 +405,9 @@ Please refer to [data/README.md](data/README.md) for checking the details about Use the following 3 commands to run LoRA **fine-tuning**, **inference** and **merging** of the Llama3-8B-Instruct model, respectively. ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml -CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat examples/inference/llama3_lora_sft.yaml -CUDA_VISIBLE_DEVICES=0 llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml +llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml +llamafactory-cli chat examples/inference/llama3_lora_sft.yaml +llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml ``` See [examples/README.md](examples/README.md) for advanced usage (including distributed training). @@ -417,33 +417,33 @@ See [examples/README.md](examples/README.md) for advanced usage (including distr ### Fine-Tuning with LLaMA Board GUI (powered by [Gradio](https://github.com/gradio-app/gradio)) -#### Use local environment - ```bash -CUDA_VISIBLE_DEVICES=0 GRADIO_SHARE=1 llamafactory-cli webui +llamafactory-cli webui ``` -
    - -#### Use Docker +### Build Docker ```bash -docker build -f ./Dockerfile -t llama-factory:latest . -docker run --gpus=all \ +docker build -f ./Dockerfile \ + --build-arg INSTALL_BNB=false \ + --build-arg INSTALL_VLLM=false \ + --build-arg INSTALL_DEEPSPEED=false \ + --build-arg PIP_INDEX=https://pypi.org/simple \ + -t llamafactory:latest . + +docker run -it --gpus=all \ -v ./hf_cache:/root/.cache/huggingface/ \ -v ./data:/app/data \ -v ./output:/app/output \ -p 7860:7860 \ + -p 8000:8000 \ --shm-size 16G \ - --name llama_factory \ - -d llama-factory:latest + --name llamafactory \ + llamafactory:latest ``` -#### Use Docker Compose - -```bash -docker compose -f ./docker-compose.yml up -d -``` +> [!TIP] +> Use Docker Compose to build image via `docker compose up -d`.
    Details about volume diff --git a/README_zh.md b/README_zh.md index ab0e8cb7..0ddb8b19 100644 --- a/README_zh.md +++ b/README_zh.md @@ -405,9 +405,9 @@ Docker 镜像: 下面三行命令分别对 Llama3-8B-Instruct 模型进行 LoRA **微调**、**推理**和**合并**。 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml -CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat examples/inference/llama3_lora_sft.yaml -CUDA_VISIBLE_DEVICES=0 llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml +llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml +llamafactory-cli chat examples/inference/llama3_lora_sft.yaml +llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml ``` 高级用法请参考 [examples/README_zh.md](examples/README_zh.md)(包括多 GPU 微调)。 @@ -417,31 +417,33 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli export examples/merge_lora/llama3_lora_s ### LLaMA Board 可视化微调(由 [Gradio](https://github.com/gradio-app/gradio) 驱动) -#### 使用本地环境 - ```bash -CUDA_VISIBLE_DEVICES=0 GRADIO_SHARE=1 llamafactory-cli webui +llamafactory-cli webui ``` -#### 使用 Docker +### 构建 Docker ```bash -docker build -f ./Dockerfile -t llama-factory:latest . -docker run --gpus=all \ +docker build -f ./Dockerfile \ + --build-arg INSTALL_BNB=false \ + --build-arg INSTALL_VLLM=false \ + --build-arg INSTALL_DEEPSPEED=false \ + --build-arg PIP_INDEX=https://pypi.org/simple \ + -t llamafactory:latest . + +docker run -it --gpus=all \ -v ./hf_cache:/root/.cache/huggingface/ \ -v ./data:/app/data \ -v ./output:/app/output \ -p 7860:7860 \ + -p 8000:8000 \ --shm-size 16G \ - --name llama_factory \ - -d llama-factory:latest + --name llamafactory \ + llamafactory:latest ``` -#### 使用 Docker Compose - -```bash -docker compose -f ./docker-compose.yml up -d -``` +> [!TIP] +> 通过 `docker compose up -d` 使用 Docker Compose 构建镜像。
    数据卷详情 diff --git a/docker-compose.yml b/docker-compose.yml index 9602a3e3..b3e4a34d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,17 +1,23 @@ version: '3.8' services: - llama-factory: + llamafactory: build: dockerfile: Dockerfile context: . - container_name: llama_factory + args: + INSTALL_BNB: false + INSTALL_VLLM: false + INSTALL_DEEPSPEED: false + PIP_INDEX: https://pypi.org/simple + container_name: llamafactory volumes: - ./hf_cache:/root/.cache/huggingface/ - ./data:/app/data - ./output:/app/output ports: - "7860:7860" + - "8000:8000" ipc: host deploy: resources: From a793e8456b664ea0b48f0ba162999f18d06b4c2f Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 11 Jun 2024 00:37:17 +0800 Subject: [PATCH 123/169] fix #4160 The split heads should be concatenated in dim=2 --- src/llamafactory/model/model_utils/longlora.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/llamafactory/model/model_utils/longlora.py b/src/llamafactory/model/model_utils/longlora.py index c8dc52f5..cd468979 100644 --- a/src/llamafactory/model/model_utils/longlora.py +++ b/src/llamafactory/model/model_utils/longlora.py @@ -96,7 +96,8 @@ def llama_attention_forward( ( attn_output[:, :, : self.num_heads // 2], attn_output[:, :, self.num_heads // 2 :].roll(groupsz // 2, dims=1), - ) + ), + dim=2, ) attn_output = attn_output.reshape(bsz, q_len, self.hidden_size) @@ -194,7 +195,8 @@ def llama_flash_attention_2_forward( ( attn_output[:, :, : self.num_heads // 2], attn_output[:, :, self.num_heads // 2 :].roll(groupsz // 2, dims=1), - ) + ), + dim=2, ) attn_output = attn_output.reshape(bsz, q_len, self.hidden_size).contiguous() @@ -293,7 +295,8 @@ def llama_sdpa_attention_forward( ( attn_output[:, :, : self.num_heads // 2], attn_output[:, :, self.num_heads // 2 :].roll(groupsz // 2, dims=1), - ) + ), + dim=2, ) attn_output = attn_output.reshape(bsz, q_len, self.hidden_size) @@ -303,7 +306,7 @@ def llama_sdpa_attention_forward( def _apply_llama_patch() -> None: - require_version("transformers==4.40.2", "To fix: pip install transformers==4.40.2") + require_version("transformers==4.41.2", "To fix: pip install transformers==4.41.2") LlamaAttention.forward = llama_attention_forward LlamaFlashAttention2.forward = llama_flash_attention_2_forward LlamaSdpaAttention.forward = llama_sdpa_attention_forward From 2b6ebd6b51133cf114d6f0e8605ad2bb26aa6d65 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 11 Jun 2024 00:44:26 +0800 Subject: [PATCH 124/169] release v0.8.1 --- src/llamafactory/extras/env.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llamafactory/extras/env.py b/src/llamafactory/extras/env.py index 1d4e43f1..8c34fd96 100644 --- a/src/llamafactory/extras/env.py +++ b/src/llamafactory/extras/env.py @@ -9,7 +9,7 @@ import trl from transformers.utils import is_torch_cuda_available, is_torch_npu_available -VERSION = "0.8.1.dev0" +VERSION = "0.8.1" def print_env() -> None: From 91e62a098fd997d0d1d12baef64d089aabc01fba Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 11 Jun 2024 00:50:53 +0800 Subject: [PATCH 125/169] set dev version --- src/llamafactory/extras/env.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llamafactory/extras/env.py b/src/llamafactory/extras/env.py index 8c34fd96..a8cb799d 100644 --- a/src/llamafactory/extras/env.py +++ b/src/llamafactory/extras/env.py @@ -9,7 +9,7 @@ import trl from transformers.utils import is_torch_cuda_available, is_torch_npu_available -VERSION = "0.8.1" +VERSION = "0.8.2.dev0" def print_env() -> None: From 3f24337a8a995b145b1e8075bc23878eaa363844 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 11 Jun 2024 01:04:16 +0800 Subject: [PATCH 126/169] tiny fix --- src/llamafactory/model/model_utils/longlora.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/llamafactory/model/model_utils/longlora.py b/src/llamafactory/model/model_utils/longlora.py index cd468979..4a8c562a 100644 --- a/src/llamafactory/model/model_utils/longlora.py +++ b/src/llamafactory/model/model_utils/longlora.py @@ -182,11 +182,9 @@ def llama_flash_attention_2_forward( query_states, key_states, value_states = shift(query_states), shift(key_states), shift(value_states) if attention_mask is not None: attention_mask = attention_mask[:, :groupsz].repeat(num_groups, 1) - else: - groupsz = q_len attn_output: torch.Tensor = self._flash_attention_forward( - query_states, key_states, value_states, attention_mask, groupsz, dropout=dropout_rate + query_states, key_states, value_states, attention_mask, query_states.size(1), dropout=dropout_rate ) if getattr(self.config, "group_size_ratio", None) and self.training: # shift back From 5f7b3b3ff6a0965bb5036868f7ca5612780d6766 Mon Sep 17 00:00:00 2001 From: Alfredo Luque Date: Tue, 11 Jun 2024 00:07:06 +0000 Subject: [PATCH 127/169] add manifest so requirements.txt in sdist --- MANIFEST.in | 1 + 1 file changed, 1 insertion(+) create mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 00000000..82c51f63 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include LICENSE requirements.txt From 90e14a960d1437a16d35dbabbb8aa50714583d3a Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 11 Jun 2024 12:48:53 +0800 Subject: [PATCH 128/169] tiny fix --- src/llamafactory/hparams/parser.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/llamafactory/hparams/parser.py b/src/llamafactory/hparams/parser.py index ff1fbf5d..ec5dd62c 100644 --- a/src/llamafactory/hparams/parser.py +++ b/src/llamafactory/hparams/parser.py @@ -171,9 +171,6 @@ def get_train_args(args: Optional[Dict[str, Any]] = None) -> _TRAIN_CLS: if training_args.do_train and model_args.quantization_device_map == "auto": raise ValueError("Cannot use device map for quantized models in training.") - if finetuning_args.use_dora and model_args.use_unsloth: - raise ValueError("Unsloth does not support DoRA.") - if finetuning_args.pure_bf16: if not is_torch_bf16_gpu_available(): raise ValueError("This device does not support `pure_bf16`.") From 89f2bd8c8c035181927bd530a7ffc733407d674c Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 11 Jun 2024 15:38:38 +0800 Subject: [PATCH 129/169] fix #4198 --- src/llamafactory/hparams/model_args.py | 12 ++++++++++ src/llamafactory/model/patcher.py | 2 +- src/llamafactory/train/trainer_utils.py | 32 +++++++++++-------------- 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 6352a420..71467770 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -1,6 +1,8 @@ from dataclasses import asdict, dataclass, field from typing import Any, Dict, Literal, Optional +from typing_extensions import Self + @dataclass class ModelArguments: @@ -216,3 +218,13 @@ class ModelArguments: def to_dict(self) -> Dict[str, Any]: return asdict(self) + + @classmethod + def copyfrom(cls, old_arg: Self, **kwargs) -> Self: + arg_dict = old_arg.to_dict() + arg_dict.update(**kwargs) + new_arg = cls(**arg_dict) + new_arg.compute_dtype = old_arg.compute_dtype + new_arg.device_map = old_arg.device_map + new_arg.model_max_length = old_arg.model_max_length + return new_arg diff --git a/src/llamafactory/model/patcher.py b/src/llamafactory/model/patcher.py index 87c92315..18221a10 100644 --- a/src/llamafactory/model/patcher.py +++ b/src/llamafactory/model/patcher.py @@ -79,7 +79,7 @@ def patch_config( if "device_map" not in init_kwargs and model_args.device_map: init_kwargs["device_map"] = model_args.device_map - if init_kwargs["device_map"] == "auto": + if init_kwargs.get("device_map", None) == "auto": init_kwargs["offload_folder"] = model_args.offload_folder diff --git a/src/llamafactory/train/trainer_utils.py b/src/llamafactory/train/trainer_utils.py index 0ddcdb11..7e9cc881 100644 --- a/src/llamafactory/train/trainer_utils.py +++ b/src/llamafactory/train/trainer_utils.py @@ -83,15 +83,12 @@ def create_ref_model( The valuehead parameter is randomly initialized since it is useless for PPO training. """ if finetuning_args.ref_model is not None: - ref_model_args_dict = model_args.to_dict() - ref_model_args_dict.update( - dict( - model_name_or_path=finetuning_args.ref_model, - adapter_name_or_path=finetuning_args.ref_model_adapters, - quantization_bit=finetuning_args.ref_model_quantization_bit, - ) + ref_model_args = ModelArguments.copyfrom( + model_args, + model_name_or_path=finetuning_args.ref_model, + adapter_name_or_path=finetuning_args.ref_model_adapters, + quantization_bit=finetuning_args.ref_model_quantization_bit, ) - ref_model_args = ModelArguments(**ref_model_args_dict) ref_finetuning_args = FinetuningArguments() tokenizer = load_tokenizer(ref_model_args)["tokenizer"] ref_model = load_model( @@ -102,9 +99,11 @@ def create_ref_model( if finetuning_args.finetuning_type == "lora": ref_model = None else: - tokenizer = load_tokenizer(model_args)["tokenizer"] + ref_model_args = ModelArguments.copyfrom(model_args) + ref_finetuning_args = FinetuningArguments() + tokenizer = load_tokenizer(ref_model_args)["tokenizer"] ref_model = load_model( - tokenizer, model_args, finetuning_args, is_trainable=False, add_valuehead=add_valuehead + tokenizer, ref_model_args, ref_finetuning_args, is_trainable=False, add_valuehead=add_valuehead ) logger.info("Created reference model from the model itself.") @@ -139,15 +138,12 @@ def create_reward_model( logger.info("Loaded adapter weights of reward model from {}".format(finetuning_args.reward_model)) return None else: - reward_model_args_dict = model_args.to_dict() - reward_model_args_dict.update( - dict( - model_name_or_path=finetuning_args.reward_model, - adapter_name_or_path=finetuning_args.reward_model_adapters, - quantization_bit=finetuning_args.reward_model_quantization_bit, - ) + reward_model_args = ModelArguments.copyfrom( + model_args, + model_name_or_path=finetuning_args.reward_model, + adapter_name_or_path=finetuning_args.reward_model_adapters, + quantization_bit=finetuning_args.reward_model_quantization_bit, ) - reward_model_args = ModelArguments(**reward_model_args_dict) reward_finetuning_args = FinetuningArguments() tokenizer = load_tokenizer(reward_model_args)["tokenizer"] reward_model = load_model( From 53b74361d3d76c602f80854320efc555164afe44 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 11 Jun 2024 15:40:21 +0800 Subject: [PATCH 130/169] Update bug-report.yml --- .github/ISSUE_TEMPLATE/bug-report.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 1d962200..768adea6 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -38,7 +38,9 @@ body: 请合理使用 Markdown 标签来格式化您的文本。 placeholder: | + ```bash llamafactory-cli train ... + ``` - type: textarea id: expected-behavior From 6979f3f8480755604d8aea8164f6418126e094c5 Mon Sep 17 00:00:00 2001 From: d <913015993@qq.com> Date: Tue, 11 Jun 2024 16:21:48 +0800 Subject: [PATCH 131/169] =?UTF-8?q?=E7=BB=8F=E8=BF=87=E5=A4=A7=E9=87=8F?= =?UTF-8?q?=E7=9A=84=E5=A2=9E=E9=87=8F=E9=A2=84=E8=AE=AD=E7=BB=83=EF=BC=8C?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=AF=B9=E6=AF=94=E8=AF=95=E9=AA=8C=EF=BC=8C?= =?UTF-8?q?=E5=8F=91=E7=8E=B0=E8=BF=99=E4=B8=AAbug=EF=BC=9Allama3=E5=9C=A8?= =?UTF-8?q?=E9=A2=84=E8=AE=AD=E7=BB=83=E6=97=B6=E4=BD=BF=E7=94=A8=E7=9A=84?= =?UTF-8?q?tokenizer.eos=5Ftoke=E6=98=AF'<|end=5Fof=5Ftext|>'=20=EF=BC=8C?= =?UTF-8?q?=E8=BF=99=E9=87=8C=E5=9C=A8=E6=AF=8F=E6=9D=A1=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=90=8E=E9=9D=A2=E4=B9=9F=E5=BE=97=E7=94=A8=E8=BF=99=E4=B8=AA?= =?UTF-8?q?=EF=BC=8C=E8=80=8C=E4=B8=8D=E6=98=AF'<|eot=5Fid|>'=EF=BC=8C?= =?UTF-8?q?=E5=90=A6=E5=88=99=E5=BE=88=E5=AE=B9=E6=98=93=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E4=B8=A5=E9=87=8D=E7=9A=84=E6=80=A7=E8=83=BD=E4=B8=8B=E9=99=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/llamafactory/data/processors/pretrain.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/llamafactory/data/processors/pretrain.py b/src/llamafactory/data/processors/pretrain.py index 87727b55..4050f74c 100644 --- a/src/llamafactory/data/processors/pretrain.py +++ b/src/llamafactory/data/processors/pretrain.py @@ -12,7 +12,8 @@ def preprocess_pretrain_dataset( examples: Dict[str, List[Any]], tokenizer: "PreTrainedTokenizer", data_args: "DataArguments" ) -> Dict[str, List[List[int]]]: # build grouped texts with format `X1 X2 X3 ...` if packing is enabled - text_examples = [messages[0]["content"] + tokenizer.eos_token for messages in examples["prompt"]] + eos_token = '<|end_of_text|>' if data_args.template == 'llama3' else tokenizer.eos_token + text_examples = [messages[0]["content"] + eos_token for messages in examples["prompt"]] if not data_args.packing: if data_args.template == "gemma": From cca6f351081903ca3b5f79f10accc1bbbae0ee61 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Tue, 11 Jun 2024 16:52:36 +0800 Subject: [PATCH 132/169] fix deepspeed version --- src/llamafactory/model/model_utils/moe.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/llamafactory/model/model_utils/moe.py b/src/llamafactory/model/model_utils/moe.py index e554e45a..8a73c844 100644 --- a/src/llamafactory/model/model_utils/moe.py +++ b/src/llamafactory/model/model_utils/moe.py @@ -1,5 +1,6 @@ -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Sequence +import torch from transformers.integrations import is_deepspeed_zero3_enabled from transformers.utils.versions import require_version @@ -10,6 +11,13 @@ if TYPE_CHECKING: from ...hparams import ModelArguments +def _set_z3_leaf_modules(model: "PreTrainedModel", leaf_modules: Sequence["torch.nn.Module"]) -> None: + require_version("deepspeed>=0.13.0", "To fix: pip install deepspeed>=0.13.0") + from deepspeed.utils import set_z3_leaf_modules # type: ignore + + set_z3_leaf_modules(model, leaf_modules) + + def add_z3_leaf_module(model: "PreTrainedModel") -> None: r""" Sets module as a leaf module to skip partitioning in deepspeed zero3. @@ -17,33 +25,30 @@ def add_z3_leaf_module(model: "PreTrainedModel") -> None: if not is_deepspeed_zero3_enabled(): return - require_version("deepspeed>=0.13.0", "To fix: pip install deepspeed>=0.13.0") - from deepspeed.utils import set_z3_leaf_modules # type: ignore - if getattr(model.config, "model_type", None) == "dbrx": from transformers.models.dbrx.modeling_dbrx import DbrxFFN - set_z3_leaf_modules(model, [DbrxFFN]) + _set_z3_leaf_modules(model, [DbrxFFN]) if getattr(model.config, "model_type", None) == "jamba": from transformers.models.jamba.modeling_jamba import JambaSparseMoeBlock - set_z3_leaf_modules(model, [JambaSparseMoeBlock]) + _set_z3_leaf_modules(model, [JambaSparseMoeBlock]) if getattr(model.config, "model_type", None) == "jetmoe": from transformers.models.jetmoe.modeling_jetmoe import JetMoeMoA, JetMoeMoE - set_z3_leaf_modules(model, [JetMoeMoA, JetMoeMoE]) + _set_z3_leaf_modules(model, [JetMoeMoA, JetMoeMoE]) if getattr(model.config, "model_type", None) == "mixtral": from transformers.models.mixtral.modeling_mixtral import MixtralSparseMoeBlock - set_z3_leaf_modules(model, [MixtralSparseMoeBlock]) + _set_z3_leaf_modules(model, [MixtralSparseMoeBlock]) if getattr(model.config, "model_type", None) == "qwen2moe": from transformers.models.qwen2_moe.modeling_qwen2_moe import Qwen2MoeSparseMoeBlock - set_z3_leaf_modules(model, [Qwen2MoeSparseMoeBlock]) + _set_z3_leaf_modules(model, [Qwen2MoeSparseMoeBlock]) def configure_moe(config: "PretrainedConfig", model_args: "ModelArguments", is_trainable: bool) -> None: From 0c292332374fb96c3fc753abde42d070a0c1dca8 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Tue, 11 Jun 2024 17:02:14 +0800 Subject: [PATCH 133/169] Update pretrain.py --- src/llamafactory/data/processors/pretrain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llamafactory/data/processors/pretrain.py b/src/llamafactory/data/processors/pretrain.py index 4050f74c..832c987e 100644 --- a/src/llamafactory/data/processors/pretrain.py +++ b/src/llamafactory/data/processors/pretrain.py @@ -12,7 +12,7 @@ def preprocess_pretrain_dataset( examples: Dict[str, List[Any]], tokenizer: "PreTrainedTokenizer", data_args: "DataArguments" ) -> Dict[str, List[List[int]]]: # build grouped texts with format `X1 X2 X3 ...` if packing is enabled - eos_token = '<|end_of_text|>' if data_args.template == 'llama3' else tokenizer.eos_token + eos_token = "<|end_of_text|>" if data_args.template == "llama3" else tokenizer.eos_token text_examples = [messages[0]["content"] + eos_token for messages in examples["prompt"]] if not data_args.packing: From 557891debb8a64b73eea012f99780a7b76424cd5 Mon Sep 17 00:00:00 2001 From: codingma Date: Wed, 12 Jun 2024 10:39:05 +0800 Subject: [PATCH 134/169] update wechat_npu.jpg --- assets/wechat_npu.jpg | Bin 151211 -> 131079 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/wechat_npu.jpg b/assets/wechat_npu.jpg index 97b6d5ddda47a3d90b1d56964b644298d8f14b06..761f53ac7285306707eba8faf49882c78febed12 100644 GIT binary patch literal 131079 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 literal 151211 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 z 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

  • v>qP_wd8?4uS8Ly~c__PIWezROl4?-?sMu4ILm1 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 Date: Wed, 12 Jun 2024 16:49:12 +0900 Subject: [PATCH 135/169] Support vllm==0.5.0 --- src/llamafactory/chat/vllm_engine.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/llamafactory/chat/vllm_engine.py b/src/llamafactory/chat/vllm_engine.py index 87ce8684..d096f6eb 100644 --- a/src/llamafactory/chat/vllm_engine.py +++ b/src/llamafactory/chat/vllm_engine.py @@ -13,7 +13,10 @@ from .base_engine import BaseEngine, Response if is_vllm_available(): from vllm import AsyncEngineArgs, AsyncLLMEngine, RequestOutput, SamplingParams from vllm.lora.request import LoRARequest - from vllm.sequence import MultiModalData + try: + from vllm.multimodal import MultiModalData # vllm==0.5.0 + except ImportError: + from vllm.sequence import MultiModalData # vllm<0.5.0 if TYPE_CHECKING: From 577de2fa078ee62d61bca24b75fa59590e2ef66b Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 12 Jun 2024 16:50:11 +0800 Subject: [PATCH 136/169] fix #4242 --- Dockerfile | 2 +- src/llamafactory/chat/vllm_engine.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 45849601..3932ff30 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,7 +32,7 @@ RUN EXTRA_PACKAGES="metrics"; \ EXTRA_PACKAGES="${EXTRA_PACKAGES},deepspeed"; \ fi; \ pip install -e .[$EXTRA_PACKAGES] && \ - pip uninstall -y transformer-engine + pip uninstall -y transformer-engine flash-attn # Set up volumes VOLUME [ "/root/.cache/huggingface/", "/app/data", "/app/output" ] diff --git a/src/llamafactory/chat/vllm_engine.py b/src/llamafactory/chat/vllm_engine.py index d096f6eb..d2850a6e 100644 --- a/src/llamafactory/chat/vllm_engine.py +++ b/src/llamafactory/chat/vllm_engine.py @@ -13,10 +13,11 @@ from .base_engine import BaseEngine, Response if is_vllm_available(): from vllm import AsyncEngineArgs, AsyncLLMEngine, RequestOutput, SamplingParams from vllm.lora.request import LoRARequest + try: - from vllm.multimodal import MultiModalData # vllm==0.5.0 + from vllm.multimodal import MultiModalData # type: ignore (for vllm>=0.5.0) except ImportError: - from vllm.sequence import MultiModalData # vllm<0.5.0 + from vllm.sequence import MultiModalData # for vllm<0.5.0 if TYPE_CHECKING: From 2ce2e5bc478f6ffcafe8e6451b1fef4e8994694c Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 12 Jun 2024 17:39:12 +0800 Subject: [PATCH 137/169] update readme --- README.md | 2 +- README_zh.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 35dacd2e..a773a5f4 100644 --- a/README.md +++ b/README.md @@ -443,7 +443,7 @@ docker run -it --gpus=all \ ``` > [!TIP] -> Use Docker Compose to build image via `docker compose up -d`. +> Use Docker Compose to build image via `docker-compose up -d`.
    Details about volume diff --git a/README_zh.md b/README_zh.md index 0ddb8b19..7a9cb159 100644 --- a/README_zh.md +++ b/README_zh.md @@ -443,7 +443,7 @@ docker run -it --gpus=all \ ``` > [!TIP] -> 通过 `docker compose up -d` 使用 Docker Compose 构建镜像。 +> 通过 `docker-compose up -d` 使用 Docker Compose 构建镜像。
    数据卷详情 From 8fb6366ebec432c1333c80eb51007460ac5896bd Mon Sep 17 00:00:00 2001 From: hzhaoy Date: Wed, 12 Jun 2024 18:29:03 +0800 Subject: [PATCH 138/169] adapt vllm==0.5.0 --- src/llamafactory/chat/vllm_engine.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/llamafactory/chat/vllm_engine.py b/src/llamafactory/chat/vllm_engine.py index d2850a6e..34126adf 100644 --- a/src/llamafactory/chat/vllm_engine.py +++ b/src/llamafactory/chat/vllm_engine.py @@ -1,10 +1,12 @@ import uuid from typing import TYPE_CHECKING, AsyncGenerator, AsyncIterator, Dict, List, Optional, Sequence, Union +from packaging import version + from ..data import get_template_and_fix_tokenizer from ..extras.logging import get_logger from ..extras.misc import get_device_count -from ..extras.packages import is_vllm_available +from ..extras.packages import is_vllm_available, _get_package_version from ..model import load_config, load_tokenizer from ..model.model_utils.visual import LlavaMultiModalProjectorForYiVLForVLLM from .base_engine import BaseEngine, Response @@ -14,10 +16,10 @@ if is_vllm_available(): from vllm import AsyncEngineArgs, AsyncLLMEngine, RequestOutput, SamplingParams from vllm.lora.request import LoRARequest - try: - from vllm.multimodal import MultiModalData # type: ignore (for vllm>=0.5.0) - except ImportError: - from vllm.sequence import MultiModalData # for vllm<0.5.0 + if _get_package_version("vllm") >= version.parse("0.5.0"): + from vllm.multimodal.image import ImagePixelData + else: + from vllm.sequence import MultiModalData if TYPE_CHECKING: @@ -110,7 +112,10 @@ class VllmEngine(BaseEngine): if self.processor is not None and image is not None: # add image features image_processor: "BaseImageProcessor" = getattr(self.processor, "image_processor") pixel_values = image_processor(image, return_tensors="pt")["pixel_values"] - multi_modal_data = MultiModalData(type=MultiModalData.Type.IMAGE, data=pixel_values) + if _get_package_version("vllm") >= version.parse("0.5.0"): + multi_modal_data = ImagePixelData(pixel_values) + else: + multi_modal_data = MultiModalData(type=MultiModalData.Type.IMAGE, data=pixel_values) else: multi_modal_data = None From 947a34f53b74e4cd2b964941cf1580bcabde2228 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 00:07:48 +0800 Subject: [PATCH 139/169] fix docker compose usage --- README.md | 10 ++++++++-- README_zh.md | 10 ++++++++-- docker-compose.yml | 5 +++-- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a773a5f4..65964560 100644 --- a/README.md +++ b/README.md @@ -423,6 +423,8 @@ llamafactory-cli webui ### Build Docker +#### Use Docker + ```bash docker build -f ./Dockerfile \ --build-arg INSTALL_BNB=false \ @@ -442,8 +444,12 @@ docker run -it --gpus=all \ llamafactory:latest ``` -> [!TIP] -> Use Docker Compose to build image via `docker-compose up -d`. +#### Use Docker Compose + +```bash +docker-compose up -d +docker-compose exec -it llamafactory bash +```
    Details about volume diff --git a/README_zh.md b/README_zh.md index 7a9cb159..7962a6d1 100644 --- a/README_zh.md +++ b/README_zh.md @@ -423,6 +423,8 @@ llamafactory-cli webui ### 构建 Docker +#### 使用 Docker + ```bash docker build -f ./Dockerfile \ --build-arg INSTALL_BNB=false \ @@ -442,8 +444,12 @@ docker run -it --gpus=all \ llamafactory:latest ``` -> [!TIP] -> 通过 `docker-compose up -d` 使用 Docker Compose 构建镜像。 +#### 使用 Docker Compose + +```bash +docker-compose up -d +docker-compose exec -it llamafactory bash +```
    数据卷详情 diff --git a/docker-compose.yml b/docker-compose.yml index b3e4a34d..c5dc34e9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: llamafactory: build: @@ -19,6 +17,9 @@ services: - "7860:7860" - "8000:8000" ipc: host + tty: true + stdin_open: true + command: bash deploy: resources: reservations: From 713fde4259233af645bade7790211064a07a2a6f Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 00:48:44 +0800 Subject: [PATCH 140/169] fix lint --- README.md | 2 +- README_zh.md | 2 +- src/llamafactory/hparams/finetuning_args.py | 17 ++++++++--------- src/llamafactory/hparams/model_args.py | 12 ++++++++---- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 65964560..994a62c6 100644 --- a/README.md +++ b/README.md @@ -448,7 +448,7 @@ docker run -it --gpus=all \ ```bash docker-compose up -d -docker-compose exec -it llamafactory bash +docker-compose exec llamafactory bash ```
    Details about volume diff --git a/README_zh.md b/README_zh.md index 7962a6d1..fa395c6b 100644 --- a/README_zh.md +++ b/README_zh.md @@ -448,7 +448,7 @@ docker run -it --gpus=all \ ```bash docker-compose up -d -docker-compose exec -it llamafactory bash +docker-compose exec llamafactory bash ```
    数据卷详情 diff --git a/src/llamafactory/hparams/finetuning_args.py b/src/llamafactory/hparams/finetuning_args.py index 08af31e4..facbe792 100644 --- a/src/llamafactory/hparams/finetuning_args.py +++ b/src/llamafactory/hparams/finetuning_args.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Literal, Optional +from typing import List, Literal, Optional @dataclass @@ -319,20 +319,19 @@ class FinetuningArguments(FreezeArguments, LoraArguments, RLHFArguments, GaloreA return [item.strip() for item in arg.split(",")] return arg - self.freeze_trainable_modules = split_arg(self.freeze_trainable_modules) - self.freeze_extra_modules = split_arg(self.freeze_extra_modules) - self.lora_alpha = self.lora_alpha or self.lora_rank * 2 - self.lora_target = split_arg(self.lora_target) - self.additional_target = split_arg(self.additional_target) - self.galore_target = split_arg(self.galore_target) + self.freeze_trainable_modules: List[str] = split_arg(self.freeze_trainable_modules) + self.freeze_extra_modules: Optional[List[str]] = split_arg(self.freeze_extra_modules) + self.lora_alpha: int = self.lora_alpha or self.lora_rank * 2 + self.lora_target: List[str] = split_arg(self.lora_target) + self.additional_target: Optional[List[str]] = split_arg(self.additional_target) + self.galore_target: List[str] = split_arg(self.galore_target) self.freeze_vision_tower = self.freeze_vision_tower or self.train_mm_proj_only + self.use_ref_model = self.pref_loss not in ["orpo", "simpo"] assert self.finetuning_type in ["lora", "freeze", "full"], "Invalid fine-tuning method." assert self.ref_model_quantization_bit in [None, 8, 4], "We only accept 4-bit or 8-bit quantization." assert self.reward_model_quantization_bit in [None, 8, 4], "We only accept 4-bit or 8-bit quantization." - self.use_ref_model = self.pref_loss not in ["orpo", "simpo"] - if self.stage == "ppo" and self.reward_model is None: raise ValueError("`reward_model` is necessary for PPO training.") diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 71467770..359beafd 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -1,9 +1,13 @@ from dataclasses import asdict, dataclass, field -from typing import Any, Dict, Literal, Optional +from typing import TYPE_CHECKING, Any, Dict, Literal, Optional, Union from typing_extensions import Self +if TYPE_CHECKING: + import torch + + @dataclass class ModelArguments: r""" @@ -194,9 +198,9 @@ class ModelArguments: ) def __post_init__(self): - self.compute_dtype = None - self.device_map = None - self.model_max_length = None + self.compute_dtype: Optional["torch.dtype"] = None + self.device_map: Optional[Union[str, Dict[str, Any]]] = None + self.model_max_length: Optional[int] = None if self.split_special_tokens and self.use_fast_tokenizer: raise ValueError("`split_special_tokens` is only supported for slow tokenizers.") From c7a5620ccc72b7574255ea764693ccb866c48263 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 01:00:56 +0800 Subject: [PATCH 141/169] add neo-sft dataset --- README.md | 1 + README_zh.md | 1 + data/dataset_info.json | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/README.md b/README.md index 994a62c6..5bbaf2d7 100644 --- a/README.md +++ b/README.md @@ -259,6 +259,7 @@ You also can add a custom chat template to [template.py](src/llamafactory/data/t - [Cosmopedia (en)](https://huggingface.co/datasets/HuggingFaceTB/cosmopedia) - [STEM (zh)](https://huggingface.co/datasets/hfl/stem_zh_instruction) - [Ruozhiba (zh)](https://huggingface.co/datasets/hfl/ruozhiba_gpt4_turbo) +- [Neo-sft (zh)](https://huggingface.co/datasets/m-a-p/neo_sft_phase2) - [LLaVA mixed (en&zh)](https://huggingface.co/datasets/BUAADreamer/llava-en-zh-300k) - [Open Assistant (de)](https://huggingface.co/datasets/mayflowergmbh/oasst_de) - [Dolly 15k (de)](https://huggingface.co/datasets/mayflowergmbh/dolly-15k_de) diff --git a/README_zh.md b/README_zh.md index fa395c6b..fb616909 100644 --- a/README_zh.md +++ b/README_zh.md @@ -259,6 +259,7 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd - [Cosmopedia (en)](https://huggingface.co/datasets/HuggingFaceTB/cosmopedia) - [STEM (zh)](https://huggingface.co/datasets/hfl/stem_zh_instruction) - [Ruozhiba (zh)](https://huggingface.co/datasets/hfl/ruozhiba_gpt4_turbo) +- [Neo-sft (zh)](https://huggingface.co/datasets/m-a-p/neo_sft_phase2) - [LLaVA mixed (en&zh)](https://huggingface.co/datasets/BUAADreamer/llava-en-zh-300k) - [Open Assistant (de)](https://huggingface.co/datasets/mayflowergmbh/oasst_de) - [Dolly 15k (de)](https://huggingface.co/datasets/mayflowergmbh/dolly-15k_de) diff --git a/data/dataset_info.json b/data/dataset_info.json index 8c5cbb45..1d226b3a 100644 --- a/data/dataset_info.json +++ b/data/dataset_info.json @@ -248,6 +248,10 @@ "ruozhiba_gpt4": { "hf_hub_url": "hfl/ruozhiba_gpt4_turbo" }, + "neo_sft": { + "hf_hub_url": "m-a-p/neo_sft_phase2", + "formatting": "sharegpt" + }, "llava_1k_en": { "hf_hub_url": "BUAADreamer/llava-en-zh-2k", "subset": "en", From 2ed8270112755971e3f2dfd2f29c5939b077330a Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 01:58:16 +0800 Subject: [PATCH 142/169] clean code --- src/llamafactory/chat/vllm_engine.py | 12 +++++----- src/llamafactory/extras/packages.py | 22 +++++-------------- .../model/model_utils/attention.py | 7 +++--- src/llamafactory/train/sft/metric.py | 3 ++- 4 files changed, 17 insertions(+), 27 deletions(-) diff --git a/src/llamafactory/chat/vllm_engine.py b/src/llamafactory/chat/vllm_engine.py index 34126adf..e4c05478 100644 --- a/src/llamafactory/chat/vllm_engine.py +++ b/src/llamafactory/chat/vllm_engine.py @@ -1,12 +1,10 @@ import uuid from typing import TYPE_CHECKING, AsyncGenerator, AsyncIterator, Dict, List, Optional, Sequence, Union -from packaging import version - from ..data import get_template_and_fix_tokenizer from ..extras.logging import get_logger from ..extras.misc import get_device_count -from ..extras.packages import is_vllm_available, _get_package_version +from ..extras.packages import is_vllm_available, is_vllm_version_greater_than_0_5 from ..model import load_config, load_tokenizer from ..model.model_utils.visual import LlavaMultiModalProjectorForYiVLForVLLM from .base_engine import BaseEngine, Response @@ -16,7 +14,7 @@ if is_vllm_available(): from vllm import AsyncEngineArgs, AsyncLLMEngine, RequestOutput, SamplingParams from vllm.lora.request import LoRARequest - if _get_package_version("vllm") >= version.parse("0.5.0"): + if is_vllm_version_greater_than_0_5(): from vllm.multimodal.image import ImagePixelData else: from vllm.sequence import MultiModalData @@ -112,9 +110,9 @@ class VllmEngine(BaseEngine): if self.processor is not None and image is not None: # add image features image_processor: "BaseImageProcessor" = getattr(self.processor, "image_processor") pixel_values = image_processor(image, return_tensors="pt")["pixel_values"] - if _get_package_version("vllm") >= version.parse("0.5.0"): - multi_modal_data = ImagePixelData(pixel_values) - else: + if is_vllm_version_greater_than_0_5(): + multi_modal_data = ImagePixelData(image=pixel_values) + else: # TODO: remove vllm 0.4.3 support multi_modal_data = MultiModalData(type=MultiModalData.Type.IMAGE, data=pixel_values) else: multi_modal_data = None diff --git a/src/llamafactory/extras/packages.py b/src/llamafactory/extras/packages.py index 4c9e6492..0746bb4f 100644 --- a/src/llamafactory/extras/packages.py +++ b/src/llamafactory/extras/packages.py @@ -1,5 +1,6 @@ import importlib.metadata import importlib.util +from functools import lru_cache from typing import TYPE_CHECKING from packaging import version @@ -24,10 +25,6 @@ def is_fastapi_available(): return _is_package_available("fastapi") -def is_flash_attn2_available(): - return _is_package_available("flash_attn") and _get_package_version("flash_attn") > version.parse("2.0.0") - - def is_galore_available(): return _is_package_available("galore_torch") @@ -36,18 +33,10 @@ def is_gradio_available(): return _is_package_available("gradio") -def is_jieba_available(): - return _is_package_available("jieba") - - def is_matplotlib_available(): return _is_package_available("matplotlib") -def is_nltk_available(): - return _is_package_available("nltk") - - def is_pillow_available(): return _is_package_available("PIL") @@ -60,10 +49,6 @@ def is_rouge_available(): return _is_package_available("rouge_chinese") -def is_sdpa_available(): - return _get_package_version("torch") > version.parse("2.1.1") - - def is_starlette_available(): return _is_package_available("sse_starlette") @@ -74,3 +59,8 @@ def is_uvicorn_available(): def is_vllm_available(): return _is_package_available("vllm") + + +@lru_cache +def is_vllm_version_greater_than_0_5(): + return _get_package_version("vllm") >= version.parse("0.5.0") diff --git a/src/llamafactory/model/model_utils/attention.py b/src/llamafactory/model/model_utils/attention.py index b52ddc86..2bd36fdc 100644 --- a/src/llamafactory/model/model_utils/attention.py +++ b/src/llamafactory/model/model_utils/attention.py @@ -1,7 +1,8 @@ from typing import TYPE_CHECKING +from transformers.utils import is_flash_attn_2_available, is_torch_sdpa_available + from ...extras.logging import get_logger -from ...extras.packages import is_flash_attn2_available, is_sdpa_available if TYPE_CHECKING: @@ -21,13 +22,13 @@ def configure_attn_implementation(config: "PretrainedConfig", model_args: "Model requested_attn_implementation = "eager" elif model_args.flash_attn == "sdpa": - if not is_sdpa_available(): + if not is_torch_sdpa_available(): logger.warning("torch>=2.1.1 is required for SDPA attention.") return requested_attn_implementation = "sdpa" elif model_args.flash_attn == "fa2": - if not is_flash_attn2_available(): + if not is_flash_attn_2_available(): logger.warning("FlashAttention-2 is not installed.") return diff --git a/src/llamafactory/train/sft/metric.py b/src/llamafactory/train/sft/metric.py index b135fcfb..6ed356c1 100644 --- a/src/llamafactory/train/sft/metric.py +++ b/src/llamafactory/train/sft/metric.py @@ -2,9 +2,10 @@ from dataclasses import dataclass from typing import TYPE_CHECKING, Dict, Sequence, Tuple, Union import numpy as np +from transformers.utils import is_jieba_available, is_nltk_available from ...extras.constants import IGNORE_INDEX -from ...extras.packages import is_jieba_available, is_nltk_available, is_rouge_available +from ...extras.packages import is_rouge_available if TYPE_CHECKING: From cf9f2d6c42b5a37038c9eededbb767eae6a3f67d Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 02:25:50 +0800 Subject: [PATCH 143/169] fix #4209 DeepSpeed ZeRO3 has inflight param error when calling model.eval() --- src/llamafactory/train/dpo/trainer.py | 7 +++++-- src/llamafactory/train/kto/trainer.py | 7 +++++-- src/llamafactory/train/ppo/trainer.py | 2 ++ src/llamafactory/train/trainer_utils.py | 13 ------------- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/llamafactory/train/dpo/trainer.py b/src/llamafactory/train/dpo/trainer.py index d860b29a..5bdb9c43 100644 --- a/src/llamafactory/train/dpo/trainer.py +++ b/src/llamafactory/train/dpo/trainer.py @@ -1,3 +1,4 @@ +import warnings from collections import defaultdict from contextlib import nullcontext from types import MethodType @@ -10,7 +11,7 @@ from trl import DPOTrainer from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX -from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_batch_logps, get_ref_context +from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_batch_logps if TYPE_CHECKING: @@ -61,6 +62,8 @@ class CustomDPOTrainer(DPOTrainer): if not hasattr(self, "accelerator"): raise AttributeError("Please update `transformers`.") + warnings.simplefilter("ignore") # remove gc warnings on ref model + if ref_model is not None: if self.is_deepspeed_enabled: if not ( @@ -176,7 +179,7 @@ class CustomDPOTrainer(DPOTrainer): if self.ref_model is None: ref_model = model - ref_context = get_ref_context(self.accelerator, model) + ref_context = self.accelerator.unwrap_model(model).disable_adapter() else: ref_model = self.ref_model ref_context = nullcontext() diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index 22a84e4a..3b4488fc 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -1,3 +1,4 @@ +import warnings from collections import defaultdict from contextlib import nullcontext from types import MethodType @@ -9,7 +10,7 @@ from trl import KTOTrainer from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX -from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_batch_logps, get_ref_context +from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_batch_logps if TYPE_CHECKING: @@ -60,6 +61,8 @@ class CustomKTOTrainer(KTOTrainer): if not hasattr(self, "accelerator"): raise AttributeError("Please update `transformers`.") + warnings.simplefilter("ignore") # remove gc warnings on ref model + if ref_model is not None: if self.is_deepspeed_enabled: if not ( @@ -143,7 +146,7 @@ class CustomKTOTrainer(KTOTrainer): """ if self.ref_model is None: ref_model = model - ref_context = get_ref_context(self.accelerator, model) + ref_context = self.accelerator.unwrap_model(model).disable_adapter() else: ref_model = self.ref_model ref_context = nullcontext() diff --git a/src/llamafactory/train/ppo/trainer.py b/src/llamafactory/train/ppo/trainer.py index 2e1288e4..737c45a3 100644 --- a/src/llamafactory/train/ppo/trainer.py +++ b/src/llamafactory/train/ppo/trainer.py @@ -1,6 +1,7 @@ import math import os import sys +import warnings from types import MethodType from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple @@ -136,6 +137,7 @@ class CustomPPOTrainer(PPOTrainer, Trainer): device_type = unwrapped_model.pretrained_model.device.type self.amp_context = torch.autocast(device_type, dtype=model_args.compute_dtype) + warnings.simplefilter("ignore") # remove gc warnings on ref model if finetuning_args.reward_model_type == "full": if self.is_deepspeed_enabled: diff --git a/src/llamafactory/train/trainer_utils.py b/src/llamafactory/train/trainer_utils.py index 7e9cc881..48944a63 100644 --- a/src/llamafactory/train/trainer_utils.py +++ b/src/llamafactory/train/trainer_utils.py @@ -1,4 +1,3 @@ -from contextlib import contextmanager from typing import TYPE_CHECKING, Callable, Dict, List, Optional, Tuple, Union import torch @@ -19,7 +18,6 @@ if is_galore_available(): if TYPE_CHECKING: - from accelerate import Accelerator from transformers import PreTrainedModel, Seq2SeqTrainingArguments from trl import AutoModelForCausalLMWithValueHead @@ -154,17 +152,6 @@ def create_reward_model( return reward_model -@contextmanager -def get_ref_context(accelerator: "Accelerator", model: "PreTrainedModel"): - r""" - Gets adapter context for the reference model. - """ - with accelerator.unwrap_model(model).disable_adapter(): - model.eval() - yield - model.train() - - def _get_decay_parameter_names(model: "PreTrainedModel") -> List[str]: r""" Returns a list of names of parameters with weight decay. (weights in non-layernorm layers) From 9419f96609d791397f02b411966cd1ef779f2f97 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 02:31:45 +0800 Subject: [PATCH 144/169] update wechat --- assets/wechat.jpg | Bin 145964 -> 147680 bytes assets/wechat_npu.jpg | Bin 131079 -> 151685 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/wechat.jpg b/assets/wechat.jpg index e0e89b78501fdb9bef08244d9bba87b7397bda0d..47523aee5cf06f2a718c5af27e99ab02b359e0bb 100644 GIT binary patch literal 147680 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

    GyF^0ZNhet{{xX)xJsAbY=YZkms_t@*Jr_T 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

    nrtE_fbBH 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 MLMfsL{iA393xNvqy#N3J diff --git a/assets/wechat_npu.jpg b/assets/wechat_npu.jpg index 761f53ac7285306707eba8faf49882c78febed12..cf7019b5dae1c033fff2ead808b38e0963dfec64 100644 GIT binary patch literal 151685 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᩠qT{d1dI$4A|yFqB*f2>jX%n5<$l#L$5% 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 From 6baafd4eb3147ad9f7d2952b8eb27c5486940f36 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 02:48:21 +0800 Subject: [PATCH 145/169] fix #4221 --- src/llamafactory/data/aligner.py | 8 ++++++-- src/llamafactory/data/loader.py | 11 ++++++----- src/llamafactory/data/preprocess.py | 3 +-- src/llamafactory/data/processors/feedback.py | 3 +-- src/llamafactory/data/processors/pairwise.py | 3 +-- src/llamafactory/data/processors/pretrain.py | 2 +- src/llamafactory/data/processors/supervised.py | 3 +-- src/llamafactory/data/processors/unsupervised.py | 3 +-- src/llamafactory/train/sft/metric.py | 2 +- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/llamafactory/data/aligner.py b/src/llamafactory/data/aligner.py index 434956af..3e9d5c46 100644 --- a/src/llamafactory/data/aligner.py +++ b/src/llamafactory/data/aligner.py @@ -10,6 +10,7 @@ from .data_utils import Role if TYPE_CHECKING: from datasets import Dataset, IterableDataset + from transformers import Seq2SeqTrainingArguments from ..hparams import DataArguments from .parser import DatasetAttr @@ -175,7 +176,10 @@ def convert_sharegpt( def align_dataset( - dataset: Union["Dataset", "IterableDataset"], dataset_attr: "DatasetAttr", data_args: "DataArguments" + dataset: Union["Dataset", "IterableDataset"], + dataset_attr: "DatasetAttr", + data_args: "DataArguments", + training_args: "Seq2SeqTrainingArguments", ) -> Union["Dataset", "IterableDataset"]: r""" Aligned dataset: @@ -208,7 +212,7 @@ def align_dataset( if not data_args.streaming: kwargs = dict( num_proc=data_args.preprocessing_num_workers, - load_from_cache_file=(not data_args.overwrite_cache), + load_from_cache_file=(not data_args.overwrite_cache) or (training_args.local_process_index != 0), desc="Converting format of dataset", ) diff --git a/src/llamafactory/data/loader.py b/src/llamafactory/data/loader.py index 2c236c76..ba426f81 100644 --- a/src/llamafactory/data/loader.py +++ b/src/llamafactory/data/loader.py @@ -18,8 +18,7 @@ from .template import get_template_and_fix_tokenizer if TYPE_CHECKING: from datasets import Dataset, IterableDataset - from transformers import ProcessorMixin, Seq2SeqTrainingArguments - from transformers.tokenization_utils import PreTrainedTokenizer + from transformers import PreTrainedTokenizer, ProcessorMixin, Seq2SeqTrainingArguments from ..hparams import DataArguments, ModelArguments from .parser import DatasetAttr @@ -32,6 +31,7 @@ def load_single_dataset( dataset_attr: "DatasetAttr", model_args: "ModelArguments", data_args: "DataArguments", + training_args: "Seq2SeqTrainingArguments", ) -> Union["Dataset", "IterableDataset"]: logger.info("Loading dataset {}...".format(dataset_attr)) data_path, data_name, data_dir, data_files = None, None, None, None @@ -123,7 +123,7 @@ def load_single_dataset( max_samples = min(data_args.max_samples, len(dataset)) dataset = dataset.select(range(max_samples)) - return align_dataset(dataset, dataset_attr, data_args) + return align_dataset(dataset, dataset_attr, data_args, training_args) def get_dataset( @@ -157,7 +157,8 @@ def get_dataset( if (stage == "rm" and dataset_attr.ranking is False) or (stage != "rm" and dataset_attr.ranking is True): raise ValueError("The dataset is not applicable in the current training stage.") - all_datasets.append(load_single_dataset(dataset_attr, model_args, data_args)) + all_datasets.append(load_single_dataset(dataset_attr, model_args, data_args, training_args)) + dataset = merge_dataset(all_datasets, data_args, training_args) with training_args.main_process_first(desc="pre-process dataset"): @@ -169,7 +170,7 @@ def get_dataset( if not data_args.streaming: kwargs = dict( num_proc=data_args.preprocessing_num_workers, - load_from_cache_file=(not data_args.overwrite_cache), + load_from_cache_file=(not data_args.overwrite_cache) or (training_args.local_process_index != 0), desc="Running tokenizer on dataset", ) diff --git a/src/llamafactory/data/preprocess.py b/src/llamafactory/data/preprocess.py index 97789c39..875f55d6 100644 --- a/src/llamafactory/data/preprocess.py +++ b/src/llamafactory/data/preprocess.py @@ -13,8 +13,7 @@ from .processors.unsupervised import preprocess_unsupervised_dataset, print_unsu if TYPE_CHECKING: - from transformers import ProcessorMixin, Seq2SeqTrainingArguments - from transformers.tokenization_utils import PreTrainedTokenizer + from transformers import PreTrainedTokenizer, ProcessorMixin, Seq2SeqTrainingArguments from ..hparams import DataArguments from .template import Template diff --git a/src/llamafactory/data/processors/feedback.py b/src/llamafactory/data/processors/feedback.py index 98d83658..5fba452c 100644 --- a/src/llamafactory/data/processors/feedback.py +++ b/src/llamafactory/data/processors/feedback.py @@ -6,8 +6,7 @@ from .processor_utils import get_paligemma_token_type_ids, get_pixel_values if TYPE_CHECKING: - from transformers import ProcessorMixin - from transformers.tokenization_utils import PreTrainedTokenizer + from transformers import PreTrainedTokenizer, ProcessorMixin from ...hparams import DataArguments from ..template import Template diff --git a/src/llamafactory/data/processors/pairwise.py b/src/llamafactory/data/processors/pairwise.py index fe984efa..db52c6a7 100644 --- a/src/llamafactory/data/processors/pairwise.py +++ b/src/llamafactory/data/processors/pairwise.py @@ -6,8 +6,7 @@ from .processor_utils import get_paligemma_token_type_ids, get_pixel_values if TYPE_CHECKING: - from transformers import ProcessorMixin - from transformers.tokenization_utils import PreTrainedTokenizer + from transformers import PreTrainedTokenizer, ProcessorMixin from ...hparams import DataArguments from ..template import Template diff --git a/src/llamafactory/data/processors/pretrain.py b/src/llamafactory/data/processors/pretrain.py index 832c987e..a10ccabd 100644 --- a/src/llamafactory/data/processors/pretrain.py +++ b/src/llamafactory/data/processors/pretrain.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Any, Dict, List if TYPE_CHECKING: - from transformers.tokenization_utils import PreTrainedTokenizer + from transformers import PreTrainedTokenizer from ...hparams import DataArguments diff --git a/src/llamafactory/data/processors/supervised.py b/src/llamafactory/data/processors/supervised.py index 19d60280..f59f5371 100644 --- a/src/llamafactory/data/processors/supervised.py +++ b/src/llamafactory/data/processors/supervised.py @@ -7,8 +7,7 @@ from .processor_utils import get_paligemma_token_type_ids, get_pixel_values, gre if TYPE_CHECKING: - from transformers import ProcessorMixin - from transformers.tokenization_utils import PreTrainedTokenizer + from transformers import PreTrainedTokenizer, ProcessorMixin from ...hparams import DataArguments from ..template import Template diff --git a/src/llamafactory/data/processors/unsupervised.py b/src/llamafactory/data/processors/unsupervised.py index f711eeac..38497a15 100644 --- a/src/llamafactory/data/processors/unsupervised.py +++ b/src/llamafactory/data/processors/unsupervised.py @@ -6,8 +6,7 @@ from .processor_utils import get_paligemma_token_type_ids, get_pixel_values if TYPE_CHECKING: - from transformers import ProcessorMixin - from transformers.tokenization_utils import PreTrainedTokenizer + from transformers import PreTrainedTokenizer, ProcessorMixin from ...hparams import DataArguments from ..template import Template diff --git a/src/llamafactory/train/sft/metric.py b/src/llamafactory/train/sft/metric.py index 6ed356c1..923238d6 100644 --- a/src/llamafactory/train/sft/metric.py +++ b/src/llamafactory/train/sft/metric.py @@ -9,7 +9,7 @@ from ...extras.packages import is_rouge_available if TYPE_CHECKING: - from transformers.tokenization_utils import PreTrainedTokenizer + from transformers import PreTrainedTokenizer if is_jieba_available(): From b6e008c152421db668c971b0828cbee6a80b16bc Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 03:15:06 +0800 Subject: [PATCH 146/169] update examples --- README.md | 2 +- README_zh.md | 2 +- examples/README.md | 126 ++++++++--------- examples/README_zh.md | 128 ++++++++---------- .../extras/fsdp_qlora/llama3_lora_sft.yaml | 4 +- .../extras/llama_pro/llama3_freeze_sft.yaml | 1 + examples/extras/loraplus/llama3_lora_sft.yaml | 1 + examples/extras/mod/llama3_full_sft.yaml | 1 + examples/lora_multi_gpu/llama3_lora_sft.yaml | 41 ------ .../llama3_full_predict.yaml | 0 .../llama3_full_sft_ds3.yaml} | 0 .../llama3_lora_dpo.yaml | 1 + .../llama3_lora_eval.yaml | 0 .../llama3_lora_kto.yaml | 2 + .../llama3_lora_ppo.yaml | 1 + .../llama3_lora_predict.yaml | 1 + .../llama3_lora_pretrain.yaml | 1 + .../llama3_lora_reward.yaml | 1 + .../llama3_lora_sft.yaml | 1 + .../llama3_lora_sft_ds0.yaml} | 4 +- .../llama3_lora_sft_ds3.yaml} | 4 +- .../llama3_preprocess.yaml | 0 .../llava1_5_lora_sft.yaml | 1 + .../llama3_lora_sft_aqlm.yaml | 1 + .../llama3_lora_sft_awq.yaml | 1 + .../llama3_lora_sft_bitsandbytes.yaml | 1 + .../llama3_lora_sft_gptq.yaml | 1 + 27 files changed, 128 insertions(+), 199 deletions(-) delete mode 100644 examples/lora_multi_gpu/llama3_lora_sft.yaml rename examples/{full_multi_gpu => train_full}/llama3_full_predict.yaml (100%) rename examples/{full_multi_gpu/llama3_full_sft.yaml => train_full/llama3_full_sft_ds3.yaml} (100%) rename examples/{lora_single_gpu => train_lora}/llama3_lora_dpo.yaml (96%) rename examples/{lora_single_gpu => train_lora}/llama3_lora_eval.yaml (100%) rename examples/{lora_single_gpu => train_lora}/llama3_lora_kto.yaml (94%) rename examples/{lora_single_gpu => train_lora}/llama3_lora_ppo.yaml (96%) rename examples/{lora_single_gpu => train_lora}/llama3_lora_predict.yaml (95%) rename examples/{lora_single_gpu => train_lora}/llama3_lora_pretrain.yaml (96%) rename examples/{lora_single_gpu => train_lora}/llama3_lora_reward.yaml (96%) rename examples/{lora_single_gpu => train_lora}/llama3_lora_sft.yaml (96%) rename examples/{lora_multi_npu/llama3_lora_sft_ds.yaml => train_lora/llama3_lora_sft_ds0.yaml} (98%) rename examples/{lora_multi_gpu/llama3_lora_sft_ds.yaml => train_lora/llama3_lora_sft_ds3.yaml} (98%) rename examples/{lora_single_gpu => train_lora}/llama3_preprocess.yaml (100%) rename examples/{lora_single_gpu => train_lora}/llava1_5_lora_sft.yaml (96%) rename examples/{qlora_single_gpu => train_qlora}/llama3_lora_sft_aqlm.yaml (96%) rename examples/{qlora_single_gpu => train_qlora}/llama3_lora_sft_awq.yaml (96%) rename examples/{qlora_single_gpu => train_qlora}/llama3_lora_sft_bitsandbytes.yaml (96%) rename examples/{qlora_single_gpu => train_qlora}/llama3_lora_sft_gptq.yaml (96%) diff --git a/README.md b/README.md index 5bbaf2d7..5dd10d5a 100644 --- a/README.md +++ b/README.md @@ -406,7 +406,7 @@ Please refer to [data/README.md](data/README.md) for checking the details about Use the following 3 commands to run LoRA **fine-tuning**, **inference** and **merging** of the Llama3-8B-Instruct model, respectively. ```bash -llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml +llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml llamafactory-cli chat examples/inference/llama3_lora_sft.yaml llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml ``` diff --git a/README_zh.md b/README_zh.md index fb616909..76bd2d89 100644 --- a/README_zh.md +++ b/README_zh.md @@ -406,7 +406,7 @@ Docker 镜像: 下面三行命令分别对 Llama3-8B-Instruct 模型进行 LoRA **微调**、**推理**和**合并**。 ```bash -llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml +llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml llamafactory-cli chat examples/inference/llama3_lora_sft.yaml llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml ``` diff --git a/examples/README.md b/examples/README.md index f985d552..3372afb9 100644 --- a/examples/README.md +++ b/examples/README.md @@ -4,59 +4,57 @@ Make sure to execute these commands in the `LLaMA-Factory` directory. ## Table of Contents -- [LoRA Fine-Tuning on A Single GPU](#lora-fine-tuning-on-a-single-gpu) -- [QLoRA Fine-Tuning on a Single GPU](#qlora-fine-tuning-on-a-single-gpu) -- [LoRA Fine-Tuning on Multiple GPUs](#lora-fine-tuning-on-multiple-gpus) -- [LoRA Fine-Tuning on Multiple NPUs](#lora-fine-tuning-on-multiple-npus) -- [Full-Parameter Fine-Tuning on Multiple GPUs](#full-parameter-fine-tuning-on-multiple-gpus) +- [LoRA Fine-Tuning](#lora-fine-tuning) +- [QLoRA Fine-Tuning](#qlora-fine-tuning) +- [Full-Parameter Fine-Tuning](#full-parameter-fine-tuning) - [Merging LoRA Adapters and Quantization](#merging-lora-adapters-and-quantization) - [Inferring LoRA Fine-Tuned Models](#inferring-lora-fine-tuned-models) - [Extras](#extras) ## Examples -### LoRA Fine-Tuning on A Single GPU +### LoRA Fine-Tuning #### (Continuous) Pre-Training ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_pretrain.yaml +llamafactory-cli train examples/train_lora/llama3_lora_pretrain.yaml ``` #### Supervised Fine-Tuning ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml +llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml ``` #### Multimodal Supervised Fine-Tuning ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llava1_5_lora_sft.yaml +llamafactory-cli train examples/train_lora/llava1_5_lora_sft.yaml ``` #### Reward Modeling ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_reward.yaml +llamafactory-cli train examples/train_lora/llama3_lora_reward.yaml ``` #### PPO Training ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_ppo.yaml +llamafactory-cli train examples/train_lora/llama3_lora_ppo.yaml ``` #### DPO/ORPO/SimPO Training ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_dpo.yaml +llamafactory-cli train examples/train_lora/llama3_lora_dpo.yaml ``` #### KTO Training ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_kto.yaml +llamafactory-cli train examples/train_lora/llama3_lora_kto.yaml ``` #### Preprocess Dataset @@ -64,95 +62,79 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lo It is useful for large dataset, use `tokenized_path` in config to load the preprocessed dataset. ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_preprocess.yaml +llamafactory-cli train examples/train_lora/llama3_preprocess.yaml ``` #### Evaluating on MMLU/CMMLU/C-Eval Benchmarks ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli eval examples/lora_single_gpu/llama3_lora_eval.yaml +llamafactory-cli eval examples/train_lora/llama3_lora_eval.yaml ``` #### Batch Predicting and Computing BLEU and ROUGE Scores ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_predict.yaml -``` - -### QLoRA Fine-Tuning on a Single GPU - -#### Supervised Fine-Tuning with 4/8-bit Bitsandbytes Quantization (Recommended) - -```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml -``` - -#### Supervised Fine-Tuning with 4/8-bit GPTQ Quantization - -```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml -``` - -#### Supervised Fine-Tuning with 4-bit AWQ Quantization - -```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_lora_sft_awq.yaml -``` - -#### Supervised Fine-Tuning with 2-bit AQLM Quantization - -```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml -``` - -### LoRA Fine-Tuning on Multiple GPUs - -#### Supervised Fine-Tuning on Single Node - -```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml +llamafactory-cli train examples/train_lora/llama3_lora_predict.yaml ``` #### Supervised Fine-Tuning on Multiple Nodes ```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml -CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml ``` #### Supervised Fine-Tuning with DeepSpeed ZeRO-3 (Weight Sharding) ```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft_ds.yaml +FORCE_TORCHRUN=1 llamafactory-cli train examples/train_lora/llama3_lora_sft_ds.yaml ``` -### LoRA Fine-Tuning on Multiple NPUs +### QLoRA Fine-Tuning -#### Supervised Fine-Tuning with DeepSpeed ZeRO-0 +#### Supervised Fine-Tuning with 4/8-bit Bitsandbytes Quantization (Recommended) ```bash -ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_npu/llama3_lora_sft_ds.yaml +CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/train_qlora/llama3_lora_sft_bitsandbytes.yaml ``` -### Full-Parameter Fine-Tuning on Multiple GPUs +#### Supervised Fine-Tuning with 4/8-bit GPTQ Quantization + +```bash +CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/train_qlora/llama3_lora_sft_gptq.yaml +``` + +#### Supervised Fine-Tuning with 4-bit AWQ Quantization + +```bash +CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/train_qlora/llama3_lora_sft_awq.yaml +``` + +#### Supervised Fine-Tuning with 2-bit AQLM Quantization + +```bash +CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/train_qlora/llama3_lora_sft_aqlm.yaml +``` + +### Full-Parameter Fine-Tuning #### Supervised Fine-Tuning on Single Node ```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml +FORCE_TORCHRUN=1 llamafactory-cli train examples/train_full/llama3_full_sft.yaml ``` #### Supervised Fine-Tuning on Multiple Nodes ```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml -CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft.yaml ``` #### Batch Predicting and Computing BLEU and ROUGE Scores ```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llama3_full_predict.yaml +llamafactory-cli train examples/train_full/llama3_full_predict.yaml ``` ### Merging LoRA Adapters and Quantization @@ -162,35 +144,33 @@ CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llam Note: DO NOT use quantized model or `quantization_bit` when merging LoRA adapters. ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml +llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml ``` #### Quantizing Model using AutoGPTQ ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli export examples/merge_lora/llama3_gptq.yaml +llamafactory-cli export examples/merge_lora/llama3_gptq.yaml ``` ### Inferring LoRA Fine-Tuned Models -Use `CUDA_VISIBLE_DEVICES=0,1` to infer models on multiple devices. - #### Use CLI ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat examples/inference/llama3_lora_sft.yaml +llamafactory-cli chat examples/inference/llama3_lora_sft.yaml ``` #### Use Web UI ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli webchat examples/inference/llama3_lora_sft.yaml +llamafactory-cli webchat examples/inference/llama3_lora_sft.yaml ``` #### Launch OpenAI-style API ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli api examples/inference/llama3_lora_sft.yaml +llamafactory-cli api examples/inference/llama3_lora_sft.yaml ``` ### Extras @@ -198,32 +178,32 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli api examples/inference/llama3_lora_sft.y #### Full-Parameter Fine-Tuning using GaLore ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/extras/galore/llama3_full_sft.yaml +llamafactory-cli train examples/extras/galore/llama3_full_sft.yaml ``` #### Full-Parameter Fine-Tuning using BAdam ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/extras/badam/llama3_full_sft.yaml +llamafactory-cli train examples/extras/badam/llama3_full_sft.yaml ``` #### LoRA+ Fine-Tuning ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/extras/loraplus/llama3_lora_sft.yaml +llamafactory-cli train examples/extras/loraplus/llama3_lora_sft.yaml ``` #### Mixture-of-Depths Fine-Tuning ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/extras/mod/llama3_full_sft.yaml +llamafactory-cli train examples/extras/mod/llama3_full_sft.yaml ``` #### LLaMA-Pro Fine-Tuning ```bash bash examples/extras/llama_pro/expand.sh -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/extras/llama_pro/llama3_freeze_sft.yaml +llamafactory-cli train examples/extras/llama_pro/llama3_freeze_sft.yaml ``` #### FSDP+QLoRA Fine-Tuning diff --git a/examples/README_zh.md b/examples/README_zh.md index cf5bbf49..64c31fbd 100644 --- a/examples/README_zh.md +++ b/examples/README_zh.md @@ -4,59 +4,57 @@ ## 目录 -- [单 GPU LoRA 微调](#单-gpu-lora-微调) -- [单 GPU QLoRA 微调](#单-gpu-qlora-微调) -- [多 GPU LoRA 微调](#多-gpu-lora-微调) -- [多 NPU LoRA 微调](#多-npu-lora-微调) -- [多 GPU 全参数微调](#多-gpu-全参数微调) +- [LoRA 微调](#lora-微调) +- [QLoRA 微调](#qlora-微调) +- [全参数微调](#全参数微调) - [合并 LoRA 适配器与模型量化](#合并-lora-适配器与模型量化) - [推理 LoRA 模型](#推理-lora-模型) - [杂项](#杂项) ## 示例 -### 单 GPU LoRA 微调 +### LoRA 微调 #### (增量)预训练 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_pretrain.yaml +llamafactory-cli train examples/train_lora/llama3_lora_pretrain.yaml ``` #### 指令监督微调 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml +llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml ``` #### 多模态指令监督微调 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llava1_5_lora_sft.yaml +llamafactory-cli train examples/train_lora/llava1_5_lora_sft.yaml ``` #### 奖励模型训练 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_reward.yaml +llamafactory-cli train examples/train_lora/llama3_lora_reward.yaml ``` #### PPO 训练 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_ppo.yaml +llamafactory-cli train examples/train_lora/llama3_lora_ppo.yaml ``` #### DPO/ORPO/SimPO 训练 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_dpo.yaml +llamafactory-cli train examples/train_lora/llama3_lora_dpo.yaml ``` #### KTO 训练 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_kto.yaml +llamafactory-cli train examples/train_lora/llama3_lora_kto.yaml ``` #### 预处理数据集 @@ -64,95 +62,79 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lo 对于大数据集有帮助,在配置中使用 `tokenized_path` 以加载预处理后的数据集。 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_preprocess.yaml +llamafactory-cli train examples/train_lora/llama3_preprocess.yaml ``` #### 在 MMLU/CMMLU/C-Eval 上评估 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli eval examples/lora_single_gpu/llama3_lora_eval.yaml +llamafactory-cli eval examples/train_lora/llama3_lora_eval.yaml ``` #### 批量预测并计算 BLEU 和 ROUGE 分数 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_predict.yaml +llamafactory-cli train examples/train_lora/llama3_lora_predict.yaml ``` -### 单 GPU QLoRA 微调 - -#### 基于 4/8 比特 Bitsandbytes 量化进行指令监督微调(推荐) +#### 多机指令监督微调 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml -``` - -#### 基于 4/8 比特 GPTQ 量化进行指令监督微调 - -```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml -``` - -#### 基于 4 比特 AWQ 量化进行指令监督微调 - -```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_lora_sft_awq.yaml -``` - -#### 基于 2 比特 AQLM 量化进行指令监督微调 - -```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml -``` - -### 多 GPU LoRA 微调 - -#### 在单机上进行指令监督微调 - -```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml -``` - -#### 在多机上进行指令监督微调 - -```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml -CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml ``` #### 使用 DeepSpeed ZeRO-3 平均分配显存 ```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_gpu/llama3_lora_sft_ds.yaml +FORCE_TORCHRUN=1 llamafactory-cli train examples/train_lora/llama3_lora_sft_ds.yaml ``` -### 多 NPU LoRA 微调 +### QLoRA 微调 -#### 使用 DeepSpeed ZeRO-0 进行指令监督微调 +#### 基于 4/8 比特 Bitsandbytes 量化进行指令监督微调(推荐) ```bash -ASCEND_RT_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/lora_multi_npu/llama3_lora_sft_ds.yaml +llamafactory-cli train examples/train_qlora/llama3_lora_sft_bitsandbytes.yaml ``` -### 多 GPU 全参数微调 +#### 基于 4/8 比特 GPTQ 量化进行指令监督微调 + +```bash +llamafactory-cli train examples/train_qlora/llama3_lora_sft_gptq.yaml +``` + +#### 基于 4 比特 AWQ 量化进行指令监督微调 + +```bash +llamafactory-cli train examples/train_qlora/llama3_lora_sft_awq.yaml +``` + +#### 基于 2 比特 AQLM 量化进行指令监督微调 + +```bash +llamafactory-cli train examples/train_qlora/llama3_lora_sft_aqlm.yaml +``` + +### 全参数微调 #### 在单机上进行指令监督微调 ```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml +FORCE_TORCHRUN=1 llamafactory-cli train examples/train_full/llama3_full_sft.yaml ``` #### 在多机上进行指令监督微调 ```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml -CUDA_VISIBLE_DEVICES=0,1,2,3 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/full_multi_gpu/llama3_full_sft.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft.yaml ``` #### 批量预测并计算 BLEU 和 ROUGE 分数 ```bash -CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llama3_full_predict.yaml +llamafactory-cli train examples/train_full/llama3_full_predict.yaml ``` ### 合并 LoRA 适配器与模型量化 @@ -162,35 +144,33 @@ CUDA_VISIBLE_DEVICES=0,1,2,3 llamafactory-cli train examples/full_multi_gpu/llam 注:请勿使用量化后的模型或 `quantization_bit` 参数来合并 LoRA 适配器。 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml +llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml ``` #### 使用 AutoGPTQ 量化模型 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli export examples/merge_lora/llama3_gptq.yaml +llamafactory-cli export examples/merge_lora/llama3_gptq.yaml ``` ### 推理 LoRA 模型 -使用 `CUDA_VISIBLE_DEVICES=0,1` 进行多卡推理。 - #### 使用命令行接口 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat examples/inference/llama3_lora_sft.yaml +llamafactory-cli chat examples/inference/llama3_lora_sft.yaml ``` #### 使用浏览器界面 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli webchat examples/inference/llama3_lora_sft.yaml +llamafactory-cli webchat examples/inference/llama3_lora_sft.yaml ``` #### 启动 OpenAI 风格 API ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli api examples/inference/llama3_lora_sft.yaml +llamafactory-cli api examples/inference/llama3_lora_sft.yaml ``` ### 杂项 @@ -198,32 +178,32 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli api examples/inference/llama3_lora_sft.y #### 使用 GaLore 进行全参数训练 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/extras/galore/llama3_full_sft.yaml +llamafactory-cli train examples/extras/galore/llama3_full_sft.yaml ``` #### 使用 BAdam 进行全参数训练 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/extras/badam/llama3_full_sft.yaml +llamafactory-cli train examples/extras/badam/llama3_full_sft.yaml ``` #### LoRA+ 微调 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/extras/loraplus/llama3_lora_sft.yaml +llamafactory-cli train examples/extras/loraplus/llama3_lora_sft.yaml ``` #### 深度混合微调 ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/extras/mod/llama3_full_sft.yaml +llamafactory-cli train examples/extras/mod/llama3_full_sft.yaml ``` #### LLaMA-Pro 微调 ```bash bash examples/extras/llama_pro/expand.sh -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/extras/llama_pro/llama3_freeze_sft.yaml +llamafactory-cli train examples/extras/llama_pro/llama3_freeze_sft.yaml ``` #### FSDP+QLoRA 微调 diff --git a/examples/extras/fsdp_qlora/llama3_lora_sft.yaml b/examples/extras/fsdp_qlora/llama3_lora_sft.yaml index 084269ef..cc773991 100644 --- a/examples/extras/fsdp_qlora/llama3_lora_sft.yaml +++ b/examples/extras/fsdp_qlora/llama3_lora_sft.yaml @@ -8,9 +8,6 @@ do_train: true finetuning_type: lora lora_target: all -### ddp -ddp_timeout: 180000000 - ### dataset dataset: identity,alpaca_en_demo template: llama3 @@ -34,6 +31,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/extras/llama_pro/llama3_freeze_sft.yaml b/examples/extras/llama_pro/llama3_freeze_sft.yaml index 444a1113..f92d6945 100644 --- a/examples/extras/llama_pro/llama3_freeze_sft.yaml +++ b/examples/extras/llama_pro/llama3_freeze_sft.yaml @@ -32,6 +32,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/extras/loraplus/llama3_lora_sft.yaml b/examples/extras/loraplus/llama3_lora_sft.yaml index 1ba654ec..57383ae0 100644 --- a/examples/extras/loraplus/llama3_lora_sft.yaml +++ b/examples/extras/loraplus/llama3_lora_sft.yaml @@ -31,6 +31,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/extras/mod/llama3_full_sft.yaml b/examples/extras/mod/llama3_full_sft.yaml index df03c1e0..085febfc 100644 --- a/examples/extras/mod/llama3_full_sft.yaml +++ b/examples/extras/mod/llama3_full_sft.yaml @@ -31,6 +31,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 pure_bf16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/lora_multi_gpu/llama3_lora_sft.yaml b/examples/lora_multi_gpu/llama3_lora_sft.yaml deleted file mode 100644 index 348e53b9..00000000 --- a/examples/lora_multi_gpu/llama3_lora_sft.yaml +++ /dev/null @@ -1,41 +0,0 @@ -### model -model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct - -### method -stage: sft -do_train: true -finetuning_type: lora -lora_target: all - -### ddp -ddp_timeout: 180000000 - -### dataset -dataset: identity,alpaca_en_demo -template: llama3 -cutoff_len: 1024 -max_samples: 1000 -overwrite_cache: true -preprocessing_num_workers: 16 - -### output -output_dir: saves/llama3-8b/lora/sft -logging_steps: 10 -save_steps: 500 -plot_loss: true -overwrite_output_dir: true - -### train -per_device_train_batch_size: 1 -gradient_accumulation_steps: 2 -learning_rate: 1.0e-4 -num_train_epochs: 3.0 -lr_scheduler_type: cosine -warmup_ratio: 0.1 -fp16: true - -### eval -val_size: 0.1 -per_device_eval_batch_size: 1 -eval_strategy: steps -eval_steps: 500 diff --git a/examples/full_multi_gpu/llama3_full_predict.yaml b/examples/train_full/llama3_full_predict.yaml similarity index 100% rename from examples/full_multi_gpu/llama3_full_predict.yaml rename to examples/train_full/llama3_full_predict.yaml diff --git a/examples/full_multi_gpu/llama3_full_sft.yaml b/examples/train_full/llama3_full_sft_ds3.yaml similarity index 100% rename from examples/full_multi_gpu/llama3_full_sft.yaml rename to examples/train_full/llama3_full_sft_ds3.yaml diff --git a/examples/lora_single_gpu/llama3_lora_dpo.yaml b/examples/train_lora/llama3_lora_dpo.yaml similarity index 96% rename from examples/lora_single_gpu/llama3_lora_dpo.yaml rename to examples/train_lora/llama3_lora_dpo.yaml index 78344330..db25fb51 100644 --- a/examples/lora_single_gpu/llama3_lora_dpo.yaml +++ b/examples/train_lora/llama3_lora_dpo.yaml @@ -32,6 +32,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/lora_single_gpu/llama3_lora_eval.yaml b/examples/train_lora/llama3_lora_eval.yaml similarity index 100% rename from examples/lora_single_gpu/llama3_lora_eval.yaml rename to examples/train_lora/llama3_lora_eval.yaml diff --git a/examples/lora_single_gpu/llama3_lora_kto.yaml b/examples/train_lora/llama3_lora_kto.yaml similarity index 94% rename from examples/lora_single_gpu/llama3_lora_kto.yaml rename to examples/train_lora/llama3_lora_kto.yaml index d5234c0a..f730c82e 100644 --- a/examples/lora_single_gpu/llama3_lora_kto.yaml +++ b/examples/train_lora/llama3_lora_kto.yaml @@ -6,6 +6,7 @@ stage: kto do_train: true finetuning_type: lora lora_target: all +pref_beta: 0.1 ### dataset dataset: kto_en_demo @@ -30,6 +31,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/lora_single_gpu/llama3_lora_ppo.yaml b/examples/train_lora/llama3_lora_ppo.yaml similarity index 96% rename from examples/lora_single_gpu/llama3_lora_ppo.yaml rename to examples/train_lora/llama3_lora_ppo.yaml index 98c842f9..e574014e 100644 --- a/examples/lora_single_gpu/llama3_lora_ppo.yaml +++ b/examples/train_lora/llama3_lora_ppo.yaml @@ -31,6 +31,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### generate max_new_tokens: 512 diff --git a/examples/lora_single_gpu/llama3_lora_predict.yaml b/examples/train_lora/llama3_lora_predict.yaml similarity index 95% rename from examples/lora_single_gpu/llama3_lora_predict.yaml rename to examples/train_lora/llama3_lora_predict.yaml index a127d248..148c8635 100644 --- a/examples/lora_single_gpu/llama3_lora_predict.yaml +++ b/examples/train_lora/llama3_lora_predict.yaml @@ -22,3 +22,4 @@ overwrite_output_dir: true ### eval per_device_eval_batch_size: 1 predict_with_generate: true +ddp_timeout: 180000000 diff --git a/examples/lora_single_gpu/llama3_lora_pretrain.yaml b/examples/train_lora/llama3_lora_pretrain.yaml similarity index 96% rename from examples/lora_single_gpu/llama3_lora_pretrain.yaml rename to examples/train_lora/llama3_lora_pretrain.yaml index db435ca9..839b3e51 100644 --- a/examples/lora_single_gpu/llama3_lora_pretrain.yaml +++ b/examples/train_lora/llama3_lora_pretrain.yaml @@ -29,6 +29,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/lora_single_gpu/llama3_lora_reward.yaml b/examples/train_lora/llama3_lora_reward.yaml similarity index 96% rename from examples/lora_single_gpu/llama3_lora_reward.yaml rename to examples/train_lora/llama3_lora_reward.yaml index 1ce42ea4..79559d19 100644 --- a/examples/lora_single_gpu/llama3_lora_reward.yaml +++ b/examples/train_lora/llama3_lora_reward.yaml @@ -30,6 +30,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/lora_single_gpu/llama3_lora_sft.yaml b/examples/train_lora/llama3_lora_sft.yaml similarity index 96% rename from examples/lora_single_gpu/llama3_lora_sft.yaml rename to examples/train_lora/llama3_lora_sft.yaml index 651b636f..fe30c575 100644 --- a/examples/lora_single_gpu/llama3_lora_sft.yaml +++ b/examples/train_lora/llama3_lora_sft.yaml @@ -30,6 +30,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/lora_multi_npu/llama3_lora_sft_ds.yaml b/examples/train_lora/llama3_lora_sft_ds0.yaml similarity index 98% rename from examples/lora_multi_npu/llama3_lora_sft_ds.yaml rename to examples/train_lora/llama3_lora_sft_ds0.yaml index a0ec8aa1..08b638e6 100644 --- a/examples/lora_multi_npu/llama3_lora_sft_ds.yaml +++ b/examples/train_lora/llama3_lora_sft_ds0.yaml @@ -6,9 +6,6 @@ stage: sft do_train: true finetuning_type: lora lora_target: all - -### ddp -ddp_timeout: 180000000 deepspeed: examples/deepspeed/ds_z0_config.json ### dataset @@ -34,6 +31,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml b/examples/train_lora/llama3_lora_sft_ds3.yaml similarity index 98% rename from examples/lora_multi_gpu/llama3_lora_sft_ds.yaml rename to examples/train_lora/llama3_lora_sft_ds3.yaml index 1c432fa7..b7266d61 100644 --- a/examples/lora_multi_gpu/llama3_lora_sft_ds.yaml +++ b/examples/train_lora/llama3_lora_sft_ds3.yaml @@ -6,9 +6,6 @@ stage: sft do_train: true finetuning_type: lora lora_target: all - -### ddp -ddp_timeout: 180000000 deepspeed: examples/deepspeed/ds_z3_config.json ### dataset @@ -34,6 +31,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/lora_single_gpu/llama3_preprocess.yaml b/examples/train_lora/llama3_preprocess.yaml similarity index 100% rename from examples/lora_single_gpu/llama3_preprocess.yaml rename to examples/train_lora/llama3_preprocess.yaml diff --git a/examples/lora_single_gpu/llava1_5_lora_sft.yaml b/examples/train_lora/llava1_5_lora_sft.yaml similarity index 96% rename from examples/lora_single_gpu/llava1_5_lora_sft.yaml rename to examples/train_lora/llava1_5_lora_sft.yaml index df510a93..55ac31fa 100644 --- a/examples/lora_single_gpu/llava1_5_lora_sft.yaml +++ b/examples/train_lora/llava1_5_lora_sft.yaml @@ -31,6 +31,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml b/examples/train_qlora/llama3_lora_sft_aqlm.yaml similarity index 96% rename from examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml rename to examples/train_qlora/llama3_lora_sft_aqlm.yaml index d54d6af6..7b6767d5 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_aqlm.yaml +++ b/examples/train_qlora/llama3_lora_sft_aqlm.yaml @@ -30,6 +30,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml b/examples/train_qlora/llama3_lora_sft_awq.yaml similarity index 96% rename from examples/qlora_single_gpu/llama3_lora_sft_awq.yaml rename to examples/train_qlora/llama3_lora_sft_awq.yaml index 5cef178a..a2a26e4b 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_awq.yaml +++ b/examples/train_qlora/llama3_lora_sft_awq.yaml @@ -30,6 +30,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml b/examples/train_qlora/llama3_lora_sft_bitsandbytes.yaml similarity index 96% rename from examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml rename to examples/train_qlora/llama3_lora_sft_bitsandbytes.yaml index b308dcab..cc773991 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_bitsandbytes.yaml +++ b/examples/train_qlora/llama3_lora_sft_bitsandbytes.yaml @@ -31,6 +31,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 diff --git a/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml b/examples/train_qlora/llama3_lora_sft_gptq.yaml similarity index 96% rename from examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml rename to examples/train_qlora/llama3_lora_sft_gptq.yaml index b950042e..ad3d854c 100644 --- a/examples/qlora_single_gpu/llama3_lora_sft_gptq.yaml +++ b/examples/train_qlora/llama3_lora_sft_gptq.yaml @@ -30,6 +30,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 From a19cdd39feafa91fdacae4818393f82e9724c53f Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 03:16:20 +0800 Subject: [PATCH 147/169] Update llama3_full_sft_ds3.yaml --- examples/train_full/llama3_full_sft_ds3.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/examples/train_full/llama3_full_sft_ds3.yaml b/examples/train_full/llama3_full_sft_ds3.yaml index 40b62f24..40afd2ee 100644 --- a/examples/train_full/llama3_full_sft_ds3.yaml +++ b/examples/train_full/llama3_full_sft_ds3.yaml @@ -5,9 +5,6 @@ model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct stage: sft do_train: true finetuning_type: full - -### ddp -ddp_timeout: 180000000 deepspeed: examples/deepspeed/ds_z3_config.json ### dataset @@ -33,6 +30,7 @@ num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 fp16: true +ddp_timeout: 180000000 ### eval val_size: 0.1 From c94e6c9411cc1165ea8180d377611a3ae47956e6 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 03:19:18 +0800 Subject: [PATCH 148/169] add quant check in webui export tab --- src/llamafactory/webui/components/export.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/llamafactory/webui/components/export.py b/src/llamafactory/webui/components/export.py index 7e1493c8..9d756a38 100644 --- a/src/llamafactory/webui/components/export.py +++ b/src/llamafactory/webui/components/export.py @@ -21,6 +21,13 @@ if TYPE_CHECKING: GPTQ_BITS = ["8", "4", "3", "2"] +def can_quantize(checkpoint_path: Union[str, List[str]]) -> "gr.Dropdown": + if isinstance(checkpoint_path, list) and len(checkpoint_path) != 0: + return gr.Dropdown(value="none", interactive=False) + else: + return gr.Dropdown(interactive=True) + + def save_model( lang: str, model_name: str, @@ -96,6 +103,9 @@ def create_export_tab(engine: "Engine") -> Dict[str, "Component"]: export_dir = gr.Textbox() export_hub_model_id = gr.Textbox() + checkpoint_path: gr.Dropdown = engine.manager.get_elem_by_id("top.checkpoint_path") + checkpoint_path.change(can_quantize, [checkpoint_path], [export_quantization_bit], queue=False) + export_btn = gr.Button() info_box = gr.Textbox(show_label=False, interactive=False) From 892e561c28cbbab1ee38a8022ddd9b397c873563 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 03:26:10 +0800 Subject: [PATCH 149/169] update examples --- examples/README.md | 10 ++++++---- examples/README_zh.md | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/examples/README.md b/examples/README.md index 3372afb9..180d5f7b 100644 --- a/examples/README.md +++ b/examples/README.md @@ -11,6 +11,8 @@ Make sure to execute these commands in the `LLaMA-Factory` directory. - [Inferring LoRA Fine-Tuned Models](#inferring-lora-fine-tuned-models) - [Extras](#extras) +Use `CUDA_VISIBLE_DEVICES` (GPU) or `ASCEND_RT_VISIBLE_DEVICES` (NPU) to choose computing devices. + ## Examples ### LoRA Fine-Tuning @@ -87,7 +89,7 @@ FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llama #### Supervised Fine-Tuning with DeepSpeed ZeRO-3 (Weight Sharding) ```bash -FORCE_TORCHRUN=1 llamafactory-cli train examples/train_lora/llama3_lora_sft_ds.yaml +FORCE_TORCHRUN=1 llamafactory-cli train examples/train_lora/llama3_lora_sft_ds3.yaml ``` ### QLoRA Fine-Tuning @@ -121,14 +123,14 @@ CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/train_qlora/llama3_lora_s #### Supervised Fine-Tuning on Single Node ```bash -FORCE_TORCHRUN=1 llamafactory-cli train examples/train_full/llama3_full_sft.yaml +FORCE_TORCHRUN=1 llamafactory-cli train examples/train_full/llama3_full_sft_ds3.yaml ``` #### Supervised Fine-Tuning on Multiple Nodes ```bash -FORCE_TORCHRUN=1 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft.yaml -FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft_ds3.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft_ds3.yaml ``` #### Batch Predicting and Computing BLEU and ROUGE Scores diff --git a/examples/README_zh.md b/examples/README_zh.md index 64c31fbd..b6168a95 100644 --- a/examples/README_zh.md +++ b/examples/README_zh.md @@ -11,6 +11,8 @@ - [推理 LoRA 模型](#推理-lora-模型) - [杂项](#杂项) +使用 `CUDA_VISIBLE_DEVICES`(GPU)或 `ASCEND_RT_VISIBLE_DEVICES`(NPU)选择计算设备。 + ## 示例 ### LoRA 微调 @@ -87,7 +89,7 @@ FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llama #### 使用 DeepSpeed ZeRO-3 平均分配显存 ```bash -FORCE_TORCHRUN=1 llamafactory-cli train examples/train_lora/llama3_lora_sft_ds.yaml +FORCE_TORCHRUN=1 llamafactory-cli train examples/train_lora/llama3_lora_sft_ds3.yaml ``` ### QLoRA 微调 @@ -121,14 +123,14 @@ llamafactory-cli train examples/train_qlora/llama3_lora_sft_aqlm.yaml #### 在单机上进行指令监督微调 ```bash -FORCE_TORCHRUN=1 llamafactory-cli train examples/train_full/llama3_full_sft.yaml +FORCE_TORCHRUN=1 llamafactory-cli train examples/train_full/llama3_full_sft_ds3.yaml ``` #### 在多机上进行指令监督微调 ```bash -FORCE_TORCHRUN=1 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft.yaml -FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=0 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft_ds3.yaml +FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=192.168.0.1 MASTER_PORT=29500 llamafactory-cli train examples/train_full/llama3_full_sft_ds3.yaml ``` #### 批量预测并计算 BLEU 和 ROUGE 分数 From 2d43b8bb49057e14a9f79146acdcc0cfa94bcc5a Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 13 Jun 2024 16:02:21 +0800 Subject: [PATCH 150/169] Update README.md --- examples/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/README.md b/examples/README.md index 180d5f7b..a6d78936 100644 --- a/examples/README.md +++ b/examples/README.md @@ -97,25 +97,25 @@ FORCE_TORCHRUN=1 llamafactory-cli train examples/train_lora/llama3_lora_sft_ds3. #### Supervised Fine-Tuning with 4/8-bit Bitsandbytes Quantization (Recommended) ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/train_qlora/llama3_lora_sft_bitsandbytes.yaml +llamafactory-cli train examples/train_qlora/llama3_lora_sft_bitsandbytes.yaml ``` #### Supervised Fine-Tuning with 4/8-bit GPTQ Quantization ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/train_qlora/llama3_lora_sft_gptq.yaml +llamafactory-cli train examples/train_qlora/llama3_lora_sft_gptq.yaml ``` #### Supervised Fine-Tuning with 4-bit AWQ Quantization ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/train_qlora/llama3_lora_sft_awq.yaml +llamafactory-cli train examples/train_qlora/llama3_lora_sft_awq.yaml ``` #### Supervised Fine-Tuning with 2-bit AQLM Quantization ```bash -CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/train_qlora/llama3_lora_sft_aqlm.yaml +llamafactory-cli train examples/train_qlora/llama3_lora_sft_aqlm.yaml ``` ### Full-Parameter Fine-Tuning From b27269bd2b52fb9d43cde8a8b7f293099b0127a2 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 15 Jun 2024 04:05:54 +0800 Subject: [PATCH 151/169] add test cases --- src/llamafactory/chat/vllm_engine.py | 2 +- src/llamafactory/hparams/model_args.py | 8 +-- src/llamafactory/model/adapter.py | 43 +++++++------ src/llamafactory/model/patcher.py | 5 +- src/llamafactory/train/ppo/trainer.py | 3 +- tests/model/test_base.py | 32 ++++++++++ tests/model/test_freeze.py | 22 ++++++- tests/model/test_full.py | 20 ++++++- tests/model/test_lora.py | 83 +++++++++++++++++++++++++- 9 files changed, 184 insertions(+), 34 deletions(-) create mode 100644 tests/model/test_base.py diff --git a/src/llamafactory/chat/vllm_engine.py b/src/llamafactory/chat/vllm_engine.py index e4c05478..f0812a99 100644 --- a/src/llamafactory/chat/vllm_engine.py +++ b/src/llamafactory/chat/vllm_engine.py @@ -52,7 +52,7 @@ class VllmEngine(BaseEngine): "model": model_args.model_name_or_path, "trust_remote_code": True, "download_dir": model_args.cache_dir, - "dtype": model_args.vllm_dtype, + "dtype": model_args.infer_dtype, "max_model_len": model_args.vllm_maxlen, "tensor_parallel_size": get_device_count() or 1, "gpu_memory_utilization": model_args.vllm_gpu_util, diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 359beafd..bbac2e4b 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -136,10 +136,6 @@ class ModelArguments: default=8, metadata={"help": "Maximum rank of all LoRAs in the vLLM engine."}, ) - vllm_dtype: Literal["auto", "float16", "bfloat16", "float32"] = field( - default="auto", - metadata={"help": "Data type for model weights and activations in the vLLM engine."}, - ) offload_folder: str = field( default="offload", metadata={"help": "Path to offload model weights."}, @@ -148,6 +144,10 @@ class ModelArguments: default=True, metadata={"help": "Whether or not to use KV cache in generation."}, ) + infer_dtype: Literal["auto", "float16", "bfloat16", "float32"] = field( + default="auto", + metadata={"help": "Data type for model weights and activations at inference."} + ) hf_hub_token: Optional[str] = field( default=None, metadata={"help": "Auth token to log in with Hugging Face Hub."}, diff --git a/src/llamafactory/model/adapter.py b/src/llamafactory/model/adapter.py index 34b9eda6..c37f6009 100644 --- a/src/llamafactory/model/adapter.py +++ b/src/llamafactory/model/adapter.py @@ -25,8 +25,12 @@ def _setup_full_tuning( model: "PreTrainedModel", model_args: "ModelArguments", finetuning_args: "FinetuningArguments", + is_trainable: bool, cast_trainable_params_to_fp32: bool, ) -> None: + if not is_trainable: + return + logger.info("Fine-tuning method: Full") forbidden_modules = set() if model_args.visual_inputs and finetuning_args.freeze_vision_tower: @@ -47,8 +51,12 @@ def _setup_freeze_tuning( model: "PreTrainedModel", model_args: "ModelArguments", finetuning_args: "FinetuningArguments", + is_trainable: bool, cast_trainable_params_to_fp32: bool, ) -> None: + if not is_trainable: + return + logger.info("Fine-tuning method: Freeze") if model_args.visual_inputs: config = model.config.text_config @@ -132,7 +140,9 @@ def _setup_lora_tuning( is_trainable: bool, cast_trainable_params_to_fp32: bool, ) -> "PeftModel": - logger.info("Fine-tuning method: {}".format("DoRA" if finetuning_args.use_dora else "LoRA")) + if is_trainable: + logger.info("Fine-tuning method: {}".format("DoRA" if finetuning_args.use_dora else "LoRA")) + adapter_to_resume = None if model_args.adapter_name_or_path is not None: @@ -173,6 +183,8 @@ def _setup_lora_tuning( offload_folder=model_args.offload_folder, ) + logger.info("Loaded adapter(s): {}".format(",".join(model_args.adapter_name_or_path))) + if is_trainable and adapter_to_resume is None: # create new lora weights while training if len(finetuning_args.lora_target) == 1 and finetuning_args.lora_target[0] == "all": target_modules = find_all_linear_modules(model, finetuning_args.freeze_vision_tower) @@ -227,9 +239,6 @@ def _setup_lora_tuning( for param in filter(lambda p: p.requires_grad, model.parameters()): param.data = param.data.to(torch.float32) - if model_args.adapter_name_or_path is not None: - logger.info("Loaded adapter(s): {}".format(",".join(model_args.adapter_name_or_path))) - return model @@ -247,29 +256,27 @@ def init_adapter( Note that the trainable parameters must be cast to float32. """ - if (not is_trainable) and model_args.adapter_name_or_path is None: - logger.info("Adapter is not found at evaluation, load the base model.") - return model + if is_trainable and getattr(model, "quantization_method", None) and finetuning_args.finetuning_type != "lora": + raise ValueError("Quantized models can only be used for the LoRA tuning.") - if finetuning_args.finetuning_type != "lora" and getattr(model, "quantization_method", None): - raise ValueError("You can only use lora for quantized models.") - - if is_deepspeed_zero3_enabled() or is_fsdp_enabled() or finetuning_args.pure_bf16 or finetuning_args.use_badam: + if not is_trainable: + cast_trainable_params_to_fp32 = False + elif is_deepspeed_zero3_enabled() or is_fsdp_enabled() or finetuning_args.pure_bf16 or finetuning_args.use_badam: logger.info("ZeRO3/FSDP/PureBF16/BAdam detected, remaining trainable params as their original precision.") cast_trainable_params_to_fp32 = False else: logger.info("Upcasting trainable params to float32.") cast_trainable_params_to_fp32 = True - if is_trainable and finetuning_args.finetuning_type == "full": - _setup_full_tuning(model, model_args, finetuning_args, cast_trainable_params_to_fp32) - - if is_trainable and finetuning_args.finetuning_type == "freeze": - _setup_freeze_tuning(model, model_args, finetuning_args, cast_trainable_params_to_fp32) - - if finetuning_args.finetuning_type == "lora": + if finetuning_args.finetuning_type == "full": + _setup_full_tuning(model, model_args, finetuning_args, is_trainable, cast_trainable_params_to_fp32) + elif finetuning_args.finetuning_type == "freeze": + _setup_freeze_tuning(model, model_args, finetuning_args, is_trainable, cast_trainable_params_to_fp32) + elif finetuning_args.finetuning_type == "lora": model = _setup_lora_tuning( config, model, model_args, finetuning_args, is_trainable, cast_trainable_params_to_fp32 ) + else: + raise NotImplementedError("Unknown finetuning type: {}.".format(finetuning_args.finetuning_type)) return model diff --git a/src/llamafactory/model/patcher.py b/src/llamafactory/model/patcher.py index 18221a10..b97ff433 100644 --- a/src/llamafactory/model/patcher.py +++ b/src/llamafactory/model/patcher.py @@ -44,7 +44,10 @@ def patch_config( is_trainable: bool, ) -> None: if model_args.compute_dtype is None: # priority: bf16 > fp16 > fp32 - model_args.compute_dtype = infer_optim_dtype(model_dtype=getattr(config, "torch_dtype", None)) + if model_args.infer_dtype == "auto": + model_args.compute_dtype = infer_optim_dtype(model_dtype=getattr(config, "torch_dtype", None)) + else: + model_args.compute_dtype = getattr(torch, model_args.infer_dtype) if is_torch_npu_available(): use_jit_compile = os.environ.get("JIT_COMPILE", "0").lower() in ["true", "1"] diff --git a/src/llamafactory/train/ppo/trainer.py b/src/llamafactory/train/ppo/trainer.py index 737c45a3..45f47455 100644 --- a/src/llamafactory/train/ppo/trainer.py +++ b/src/llamafactory/train/ppo/trainer.py @@ -135,8 +135,7 @@ class CustomPPOTrainer(PPOTrainer, Trainer): unwrapped_model: "AutoModelForCausalLMWithValueHead" = self.accelerator.unwrap_model(self.model) self.is_chatglm_model = getattr(unwrapped_model.config, "model_type", None) == "chatglm" - device_type = unwrapped_model.pretrained_model.device.type - self.amp_context = torch.autocast(device_type, dtype=model_args.compute_dtype) + self.amp_context = torch.autocast(self.current_device.type, dtype=self.model_args.compute_dtype) warnings.simplefilter("ignore") # remove gc warnings on ref model if finetuning_args.reward_model_type == "full": diff --git a/tests/model/test_base.py b/tests/model/test_base.py new file mode 100644 index 00000000..32a3918e --- /dev/null +++ b/tests/model/test_base.py @@ -0,0 +1,32 @@ +import os + +import torch +from transformers import AutoModelForCausalLM + +from llamafactory.hparams import get_infer_args +from llamafactory.model import load_model, load_tokenizer + + +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") + +INFER_ARGS = { + "model_name_or_path": TINY_LLAMA, + "template": "llama3", + "infer_dtype": "float16", +} + + +def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module"): + state_dict_a = model_a.state_dict() + state_dict_b = model_b.state_dict() + assert set(state_dict_a.keys()) == set(state_dict_b.keys()) + for name in state_dict_a.keys(): + assert torch.allclose(state_dict_a[name], state_dict_b[name]) is True + + +def test_base(): + model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False) + ref_model = AutoModelForCausalLM.from_pretrained(TINY_LLAMA, torch_dtype=model.dtype, device_map=model.device) + compare_model(model, ref_model) diff --git a/tests/model/test_freeze.py b/tests/model/test_freeze.py index 97800696..a0618315 100644 --- a/tests/model/test_freeze.py +++ b/tests/model/test_freeze.py @@ -2,7 +2,7 @@ import os import torch -from llamafactory.hparams import get_train_args +from llamafactory.hparams import get_infer_args, get_train_args from llamafactory.model import load_model, load_tokenizer @@ -23,8 +23,15 @@ TRAIN_ARGS = { "fp16": True, } +INFER_ARGS = { + "model_name_or_path": TINY_LLAMA, + "finetuning_type": "freeze", + "template": "llama3", + "infer_dtype": "float16", +} -def test_freeze_all_modules(): + +def test_freeze_train_all_modules(): model_args, _, _, finetuning_args, _ = get_train_args({"freeze_trainable_layers": 1, **TRAIN_ARGS}) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) @@ -37,7 +44,7 @@ def test_freeze_all_modules(): assert param.dtype == torch.float16 -def test_freeze_extra_modules(): +def test_freeze_train_extra_modules(): model_args, _, _, finetuning_args, _ = get_train_args( {"freeze_trainable_layers": 1, "freeze_extra_modules": "embed_tokens,lm_head", **TRAIN_ARGS} ) @@ -50,3 +57,12 @@ def test_freeze_extra_modules(): else: assert param.requires_grad is False assert param.dtype == torch.float16 + + +def test_freeze_inference(): + model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False) + for param in model.parameters(): + assert param.requires_grad is False + assert param.dtype == torch.float16 diff --git a/tests/model/test_full.py b/tests/model/test_full.py index 6cb78f37..802b987c 100644 --- a/tests/model/test_full.py +++ b/tests/model/test_full.py @@ -2,7 +2,7 @@ import os import torch -from llamafactory.hparams import get_train_args +from llamafactory.hparams import get_infer_args, get_train_args from llamafactory.model import load_model, load_tokenizer @@ -23,11 +23,27 @@ TRAIN_ARGS = { "fp16": True, } +INFER_ARGS = { + "model_name_or_path": TINY_LLAMA, + "finetuning_type": "full", + "template": "llama3", + "infer_dtype": "float16", +} -def test_full(): + +def test_full_train(): model_args, _, _, finetuning_args, _ = get_train_args(TRAIN_ARGS) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) for param in model.parameters(): assert param.requires_grad is True assert param.dtype == torch.float32 + + +def test_full_inference(): + model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False) + for param in model.parameters(): + assert param.requires_grad is False + assert param.dtype == torch.float16 diff --git a/tests/model/test_lora.py b/tests/model/test_lora.py index 2e2b89d9..3e2503f1 100644 --- a/tests/model/test_lora.py +++ b/tests/model/test_lora.py @@ -1,13 +1,18 @@ import os +from typing import Sequence import torch +from peft import LoraModel, PeftModel +from transformers import AutoModelForCausalLM -from llamafactory.hparams import get_train_args +from llamafactory.hparams import get_infer_args, get_train_args from llamafactory.model import load_model, load_tokenizer TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") +TINY_LLAMA_ADAPTER = os.environ.get("TINY_LLAMA_ADAPTER", "llamafactory/tiny-random-Llama-3-lora") + TRAIN_ARGS = { "model_name_or_path": TINY_LLAMA, "stage": "sft", @@ -23,8 +28,32 @@ TRAIN_ARGS = { "fp16": True, } +INFER_ARGS = { + "model_name_or_path": TINY_LLAMA, + "adapter_name_or_path": TINY_LLAMA_ADAPTER, + "finetuning_type": "lora", + "template": "llama3", + "infer_dtype": "float16", +} -def test_lora_all_modules(): + +def load_reference_model() -> "torch.nn.Module": + model = AutoModelForCausalLM.from_pretrained(TINY_LLAMA) + return PeftModel.from_pretrained(model, TINY_LLAMA_ADAPTER) + + +def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module", diff_keys: Sequence[str] = []): + state_dict_a = model_a.state_dict() + state_dict_b = model_b.state_dict() + assert set(state_dict_a.keys()) == set(state_dict_b.keys()) + for name in state_dict_a.keys(): + if any(key in name for key in diff_keys): + assert torch.allclose(state_dict_a[name], state_dict_b[name]) is False + else: + assert torch.allclose(state_dict_a[name], state_dict_b[name]) is True + + +def test_lora_train_all_modules(): model_args, _, _, finetuning_args, _ = get_train_args({"lora_target": "all", **TRAIN_ARGS}) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) @@ -41,7 +70,7 @@ def test_lora_all_modules(): assert linear_modules == {"q_proj", "k_proj", "v_proj", "o_proj", "up_proj", "gate_proj", "down_proj"} -def test_lora_extra_modules(): +def test_lora_train_extra_modules(): model_args, _, _, finetuning_args, _ = get_train_args( {"lora_target": "all", "additional_target": "embed_tokens,lm_head", **TRAIN_ARGS} ) @@ -61,3 +90,51 @@ def test_lora_extra_modules(): assert param.dtype == torch.float16 assert extra_modules == {"embed_tokens", "lm_head"} + + +def test_lora_train_old_adapters(): + model_args, _, _, finetuning_args, _ = get_train_args( + {"adapter_name_or_path": TINY_LLAMA_ADAPTER, "create_new_adapter": False, **TRAIN_ARGS} + ) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + + base_model = AutoModelForCausalLM.from_pretrained(TINY_LLAMA, torch_dtype=model.dtype, device_map=model.device) + ref_model = PeftModel.from_pretrained(base_model, TINY_LLAMA_ADAPTER, is_trainable=True) + for param in filter(lambda p: p.requires_grad, ref_model.parameters()): + param.data = param.data.to(torch.float32) + + compare_model(model, ref_model) + + +def test_lora_train_new_adapters(): + model_args, _, _, finetuning_args, _ = get_train_args( + {"adapter_name_or_path": TINY_LLAMA_ADAPTER, "create_new_adapter": True, **TRAIN_ARGS} + ) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + + base_model = AutoModelForCausalLM.from_pretrained(TINY_LLAMA, torch_dtype=model.dtype, device_map=model.device) + ref_model = PeftModel.from_pretrained(base_model, TINY_LLAMA_ADAPTER, is_trainable=True) + for param in filter(lambda p: p.requires_grad, ref_model.parameters()): + param.data = param.data.to(torch.float32) + + compare_model( + model, ref_model, diff_keys=["q_proj", "k_proj", "v_proj", "o_proj", "up_proj", "gate_proj", "down_proj"] + ) + + +def test_lora_inference(): + model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False) + + base_model = AutoModelForCausalLM.from_pretrained(TINY_LLAMA, torch_dtype=model.dtype, device_map=model.device) + ref_model: "LoraModel" = PeftModel.from_pretrained(base_model, TINY_LLAMA_ADAPTER) + ref_model = ref_model.merge_and_unload() + compare_model(model, ref_model) + + for name, param in model.named_parameters(): + assert param.requires_grad is False + assert param.dtype == torch.float16 + assert "lora" not in name From 78589cf90c6e12e612f269b1c771f19f3dad83d2 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 15 Jun 2024 04:34:55 +0800 Subject: [PATCH 152/169] fix #4295 --- src/llamafactory/train/sft/trainer.py | 10 +++++++--- src/llamafactory/train/sft/workflow.py | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/llamafactory/train/sft/trainer.py b/src/llamafactory/train/sft/trainer.py index c063b214..6bf5b7c0 100644 --- a/src/llamafactory/train/sft/trainer.py +++ b/src/llamafactory/train/sft/trainer.py @@ -13,6 +13,7 @@ from ..trainer_utils import create_custom_optimzer, create_custom_scheduler if TYPE_CHECKING: + from torch.utils.data import Dataset from transformers import ProcessorMixin from transformers.trainer import PredictionOutput @@ -94,7 +95,7 @@ class CustomSeq2SeqTrainer(Seq2SeqTrainer): padded_tensor[:, -src_tensor.shape[-1] :] = src_tensor # adopt left-padding return padded_tensor.contiguous() # in contiguous memory - def save_predictions(self, predict_results: "PredictionOutput") -> None: + def save_predictions(self, dataset: "Dataset", predict_results: "PredictionOutput") -> None: r""" Saves model predictions to `output_dir`. @@ -120,6 +121,9 @@ class CustomSeq2SeqTrainer(Seq2SeqTrainer): (preds[i][pad_len[0] :], preds[i][: pad_len[0]]), axis=-1 ) # move pad token to last + decoded_inputs = self.tokenizer.batch_decode( + dataset["input_ids"], skip_special_tokens=True, clean_up_tokenization_spaces=False + ) decoded_labels = self.tokenizer.batch_decode( labels, skip_special_tokens=True, clean_up_tokenization_spaces=False ) @@ -127,6 +131,6 @@ class CustomSeq2SeqTrainer(Seq2SeqTrainer): with open(output_prediction_file, "w", encoding="utf-8") as writer: res: List[str] = [] - for label, pred in zip(decoded_labels, decoded_preds): - res.append(json.dumps({"label": label, "predict": pred}, ensure_ascii=False)) + for text, label, pred in zip(decoded_inputs, decoded_labels, decoded_preds): + res.append(json.dumps({"prompt": text, "label": label, "predict": pred}, ensure_ascii=False)) writer.write("\n".join(res)) diff --git a/src/llamafactory/train/sft/workflow.py b/src/llamafactory/train/sft/workflow.py index f09b5173..a989b3f7 100644 --- a/src/llamafactory/train/sft/workflow.py +++ b/src/llamafactory/train/sft/workflow.py @@ -93,7 +93,7 @@ def run_sft( predict_results.metrics.pop("predict_loss", None) trainer.log_metrics("predict", predict_results.metrics) trainer.save_metrics("predict", predict_results.metrics) - trainer.save_predictions(predict_results) + trainer.save_predictions(dataset, predict_results) # Create model card create_modelcard_and_push(trainer, model_args, data_args, training_args, finetuning_args) From 9092f963dba6f2e0eeade53b5b35e6b770f8348e Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 15 Jun 2024 04:47:13 +0800 Subject: [PATCH 153/169] fix #4292 --- src/llamafactory/webui/common.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/llamafactory/webui/common.py b/src/llamafactory/webui/common.py index 37b38df0..3b8d5378 100644 --- a/src/llamafactory/webui/common.py +++ b/src/llamafactory/webui/common.py @@ -39,7 +39,11 @@ def get_save_dir(*paths: str) -> os.PathLike: r""" Gets the path to saved model checkpoints. """ - paths = (path.replace(os.path.sep, "").replace(" ", "").strip() for path in paths) + if os.path.sep in paths[-1]: + logger.warning("Found complex path, some features may be not available.") + return paths[-1] + + paths = (path.replace(" ", "").strip() for path in paths) return os.path.join(DEFAULT_SAVE_DIR, *paths) From d519b4d76d39b21a21b1d2f6f7ce6b3af9525d03 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 15 Jun 2024 04:57:19 +0800 Subject: [PATCH 154/169] disable DP --- src/llamafactory/hparams/parser.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/llamafactory/hparams/parser.py b/src/llamafactory/hparams/parser.py index ec5dd62c..3476a726 100644 --- a/src/llamafactory/hparams/parser.py +++ b/src/llamafactory/hparams/parser.py @@ -8,6 +8,7 @@ import transformers from transformers import HfArgumentParser, Seq2SeqTrainingArguments from transformers.integrations import is_deepspeed_zero3_enabled from transformers.trainer_utils import get_last_checkpoint +from transformers.training_args import ParallelMode from transformers.utils import is_torch_bf16_gpu_available from transformers.utils.versions import require_version @@ -162,6 +163,9 @@ def get_train_args(args: Optional[Dict[str, Any]] = None) -> _TRAIN_CLS: ): raise ValueError("PPO only accepts wandb or tensorboard logger.") + if training_args.parallel_mode == ParallelMode.NOT_DISTRIBUTED: + raise ValueError("Please launch distributed training with `llamafactory-cli` or `torchrun`.") + if training_args.max_steps == -1 and data_args.streaming: raise ValueError("Please specify `max_steps` in streaming mode.") @@ -181,14 +185,14 @@ def get_train_args(args: Optional[Dict[str, Any]] = None) -> _TRAIN_CLS: if ( finetuning_args.use_galore and finetuning_args.galore_layerwise - and training_args.parallel_mode.value == "distributed" + and training_args.parallel_mode == ParallelMode.DISTRIBUTED ): raise ValueError("Distributed training does not support layer-wise GaLore.") if ( finetuning_args.use_badam and finetuning_args.badam_mode == "layer" - and training_args.parallel_mode.value == "distributed" + and training_args.parallel_mode == ParallelMode.DISTRIBUTED ): raise ValueError("Layer-wise BAdam does not yet support distributed training, use ratio-wise BAdam.") @@ -230,7 +234,7 @@ def get_train_args(args: Optional[Dict[str, Any]] = None) -> _TRAIN_CLS: # Post-process training arguments if ( - training_args.parallel_mode.value == "distributed" + training_args.parallel_mode == ParallelMode.DISTRIBUTED and training_args.ddp_find_unused_parameters is None and finetuning_args.finetuning_type == "lora" ): @@ -290,7 +294,7 @@ def get_train_args(args: Optional[Dict[str, Any]] = None) -> _TRAIN_CLS: training_args.local_rank, training_args.device, training_args.n_gpu, - training_args.parallel_mode.value == "distributed", + training_args.parallel_mode == ParallelMode.DISTRIBUTED, str(model_args.compute_dtype), ) ) From f1aa6a411a55efea1064ea74b936ac8a3d856f8c Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 15 Jun 2024 05:11:33 +0800 Subject: [PATCH 155/169] fix #4271 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 405ac46e..1756551e 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ extra_require = { "torch": ["torch>=1.13.1"], "torch-npu": ["torch==2.1.0", "torch-npu==2.1.0.post3", "decorator"], "metrics": ["nltk", "jieba", "rouge-chinese"], - "deepspeed": ["deepspeed>=0.10.0,<=0.14.0"], + "deepspeed": ["deepspeed>=0.10.0"], "bitsandbytes": ["bitsandbytes>=0.39.0"], "vllm": ["vllm>=0.4.3"], "galore": ["galore-torch"], From acd84ce5350ef985e3712a40442c6f7a54d08d40 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 15 Jun 2024 05:13:16 +0800 Subject: [PATCH 156/169] update readme --- README.md | 2 +- README_zh.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5dd10d5a..cae79694 100644 --- a/README.md +++ b/README.md @@ -463,7 +463,7 @@ docker-compose exec llamafactory bash ### Deploy with OpenAI-style API and vLLM ```bash -CUDA_VISIBLE_DEVICES=0,1 API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml +API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml ``` > [!TIP] diff --git a/README_zh.md b/README_zh.md index 76bd2d89..af3ff8f0 100644 --- a/README_zh.md +++ b/README_zh.md @@ -463,7 +463,7 @@ docker-compose exec llamafactory bash ### 利用 vLLM 部署 OpenAI API ```bash -CUDA_VISIBLE_DEVICES=0,1 API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml +API_PORT=8000 llamafactory-cli api examples/inference/llama3_vllm.yaml ``` > [!TIP] From d87108daa68bd40174b262be1ca65fe6e1b7ab56 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 15 Jun 2024 17:54:33 +0800 Subject: [PATCH 157/169] add license --- evaluation/ceval/ceval.py | 1 + evaluation/cmmlu/cmmlu.py | 1 + evaluation/mmlu/mmlu.py | 1 + scripts/cal_flops.py | 23 +++++++++-- scripts/cal_lr.py | 23 +++++++++-- scripts/cal_ppl.py | 19 ++++++++- scripts/length_cdf.py | 19 ++++++++- scripts/llama_pro.py | 23 +++++++++-- scripts/llamafy_baichuan2.py | 22 ++++++++-- scripts/llamafy_qwen.py | 21 ++++++++-- scripts/loftq_init.py | 23 +++++++++-- scripts/test_toolcall.py | 15 +++++++ setup.py | 14 +++++++ src/api.py | 14 +++++++ src/llamafactory/__init__.py | 14 +++++++ src/llamafactory/api/app.py | 14 +++++++ src/llamafactory/api/chat.py | 14 +++++++ src/llamafactory/api/common.py | 14 +++++++ src/llamafactory/api/protocol.py | 14 +++++++ src/llamafactory/chat/__init__.py | 14 +++++++ src/llamafactory/chat/base_engine.py | 14 +++++++ src/llamafactory/chat/chat_model.py | 17 ++++++++ src/llamafactory/chat/hf_engine.py | 14 +++++++ src/llamafactory/chat/vllm_engine.py | 14 +++++++ src/llamafactory/cli.py | 14 +++++++ src/llamafactory/data/__init__.py | 14 +++++++ src/llamafactory/data/aligner.py | 14 +++++++ src/llamafactory/data/collator.py | 14 +++++++ src/llamafactory/data/data_utils.py | 14 +++++++ src/llamafactory/data/formatter.py | 14 +++++++ src/llamafactory/data/loader.py | 14 +++++++ src/llamafactory/data/parser.py | 14 +++++++ src/llamafactory/data/preprocess.py | 14 +++++++ src/llamafactory/data/processors/feedback.py | 14 +++++++ src/llamafactory/data/processors/pairwise.py | 14 +++++++ src/llamafactory/data/processors/pretrain.py | 17 ++++++++ .../data/processors/processor_utils.py | 14 +++++++ .../data/processors/supervised.py | 14 +++++++ .../data/processors/unsupervised.py | 14 +++++++ src/llamafactory/data/template.py | 14 +++++++ src/llamafactory/eval/evaluator.py | 39 +++++++++++++++++- src/llamafactory/eval/template.py | 14 +++++++ src/llamafactory/extras/callbacks.py | 14 +++++++ src/llamafactory/extras/constants.py | 14 +++++++ src/llamafactory/extras/env.py | 14 +++++++ src/llamafactory/extras/logging.py | 14 +++++++ src/llamafactory/extras/misc.py | 14 +++++++ src/llamafactory/extras/packages.py | 17 ++++++++ src/llamafactory/extras/ploting.py | 14 +++++++ src/llamafactory/hparams/__init__.py | 14 +++++++ src/llamafactory/hparams/data_args.py | 17 ++++++++ src/llamafactory/hparams/evaluation_args.py | 14 +++++++ src/llamafactory/hparams/finetuning_args.py | 14 +++++++ src/llamafactory/hparams/generating_args.py | 14 +++++++ src/llamafactory/hparams/model_args.py | 17 ++++++++ src/llamafactory/hparams/parser.py | 17 ++++++++ src/llamafactory/launcher.py | 14 +++++++ src/llamafactory/model/__init__.py | 14 +++++++ src/llamafactory/model/adapter.py | 14 +++++++ src/llamafactory/model/loader.py | 14 +++++++ .../model/model_utils/attention.py | 14 +++++++ .../model/model_utils/checkpointing.py | 19 ++++++++- .../model/model_utils/embedding.py | 14 +++++++ .../model/model_utils/longlora.py | 17 ++++++++ src/llamafactory/model/model_utils/misc.py | 14 +++++++ src/llamafactory/model/model_utils/mod.py | 14 +++++++ src/llamafactory/model/model_utils/moe.py | 14 +++++++ .../model/model_utils/quantization.py | 18 ++++++++- src/llamafactory/model/model_utils/rope.py | 18 +++++++++ src/llamafactory/model/model_utils/unsloth.py | 14 +++++++ .../model/model_utils/valuehead.py | 14 +++++++ src/llamafactory/model/model_utils/visual.py | 17 ++++++++ src/llamafactory/model/patcher.py | 14 +++++++ src/llamafactory/train/dpo/__init__.py | 14 +++++++ src/llamafactory/train/dpo/trainer.py | 17 ++++++++ src/llamafactory/train/dpo/workflow.py | 17 +++++++- src/llamafactory/train/kto/__init__.py | 14 +++++++ src/llamafactory/train/kto/trainer.py | 17 ++++++++ src/llamafactory/train/kto/workflow.py | 17 ++++++++ src/llamafactory/train/ppo/__init__.py | 14 +++++++ src/llamafactory/train/ppo/ppo_utils.py | 14 +++++++ src/llamafactory/train/ppo/trainer.py | 17 ++++++++ src/llamafactory/train/ppo/workflow.py | 17 +++++++- src/llamafactory/train/pt/__init__.py | 14 +++++++ src/llamafactory/train/pt/trainer.py | 14 +++++++ src/llamafactory/train/pt/workflow.py | 17 +++++++- src/llamafactory/train/rm/__init__.py | 14 +++++++ src/llamafactory/train/rm/metric.py | 14 +++++++ src/llamafactory/train/rm/trainer.py | 40 ++++++++++++++++++- src/llamafactory/train/rm/workflow.py | 39 +++++++++++++++++- src/llamafactory/train/sft/__init__.py | 14 +++++++ src/llamafactory/train/sft/metric.py | 18 +++++++++ src/llamafactory/train/sft/trainer.py | 17 ++++++++ src/llamafactory/train/sft/workflow.py | 17 +++++++- src/llamafactory/train/trainer_utils.py | 19 +++++++++ src/llamafactory/train/tuner.py | 14 +++++++ src/llamafactory/webui/chatter.py | 14 +++++++ src/llamafactory/webui/common.py | 14 +++++++ src/llamafactory/webui/components/__init__.py | 14 +++++++ src/llamafactory/webui/components/chatbot.py | 14 +++++++ src/llamafactory/webui/components/data.py | 14 +++++++ src/llamafactory/webui/components/eval.py | 14 +++++++ src/llamafactory/webui/components/export.py | 14 +++++++ src/llamafactory/webui/components/infer.py | 14 +++++++ src/llamafactory/webui/components/top.py | 14 +++++++ src/llamafactory/webui/components/train.py | 14 +++++++ src/llamafactory/webui/css.py | 14 +++++++ src/llamafactory/webui/engine.py | 14 +++++++ src/llamafactory/webui/interface.py | 14 +++++++ src/llamafactory/webui/locales.py | 14 +++++++ src/llamafactory/webui/manager.py | 14 +++++++ src/llamafactory/webui/runner.py | 14 +++++++ src/llamafactory/webui/utils.py | 14 +++++++ src/train.py | 14 +++++++ src/webui.py | 14 +++++++ tests/data/test_supervised.py | 14 +++++++ tests/eval/test_eval_template.py | 14 +++++++ tests/model/model_utils/test_attention.py | 14 +++++++ tests/model/test_base.py | 14 +++++++ tests/model/test_freeze.py | 14 +++++++ tests/model/test_full.py | 14 +++++++ tests/model/test_lora.py | 14 +++++++ 122 files changed, 1848 insertions(+), 32 deletions(-) diff --git a/evaluation/ceval/ceval.py b/evaluation/ceval/ceval.py index 4111d6b4..48442d50 100644 --- a/evaluation/ceval/ceval.py +++ b/evaluation/ceval/ceval.py @@ -11,6 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + import os import datasets diff --git a/evaluation/cmmlu/cmmlu.py b/evaluation/cmmlu/cmmlu.py index 37efb328..5ff548a4 100644 --- a/evaluation/cmmlu/cmmlu.py +++ b/evaluation/cmmlu/cmmlu.py @@ -11,6 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + import os import datasets diff --git a/evaluation/mmlu/mmlu.py b/evaluation/mmlu/mmlu.py index a4530250..1065fb31 100644 --- a/evaluation/mmlu/mmlu.py +++ b/evaluation/mmlu/mmlu.py @@ -11,6 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + import os import datasets diff --git a/scripts/cal_flops.py b/scripts/cal_flops.py index ac87e0ab..627b5534 100644 --- a/scripts/cal_flops.py +++ b/scripts/cal_flops.py @@ -1,7 +1,20 @@ # coding=utf-8 -# Calculates the flops of pre-trained models. -# Usage: python cal_flops.py --model_name_or_path path_to_model --batch_size 1 --seq_length 512 -# Inspired by: https://www.deepspeed.ai/tutorials/flops-profiler/ +# Copyright 2024 Microsoft Corporation and the LlamaFactory team. +# +# This code is inspired by Microsoft's DeepSpeed library. +# https://www.deepspeed.ai/tutorials/flops-profiler/ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import fire import torch @@ -17,6 +30,10 @@ def calculate_flops( seq_length: int = 256, flash_attn: str = "auto", ): + r""" + Calculates the flops of pre-trained models. + Usage: python cal_flops.py --model_name_or_path path_to_model --batch_size 1 --seq_length 512 + """ with get_accelerator().device(0): chat_model = ChatModel(dict(model_name_or_path=model_name_or_path, template="empty", flash_attn=flash_attn)) fake_input = torch.ones((batch_size, seq_length), dtype=torch.long, device=chat_model.model.device) diff --git a/scripts/cal_lr.py b/scripts/cal_lr.py index bfa32cc9..ff21d27c 100644 --- a/scripts/cal_lr.py +++ b/scripts/cal_lr.py @@ -1,7 +1,20 @@ # coding=utf-8 -# Calculates the optimal learning rate for 7B/13B models using LLaMA's hyper-parameters. -# Usage: python cal_lr.py --model_name_or_path path_to_model --dataset alpaca_en --cutoff_len 1024 --batch_size 16 -# Inspired by: https://github.com/imoneoi/openchat/blob/master/ochat/training_deepspeed/train.py +# Copyright 2024 imoneoi and the LlamaFactory team. +# +# This code is inspired by imoneoi's OpenChat library. +# https://github.com/imoneoi/openchat/blob/3.6.0/ochat/training_deepspeed/train.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import math from typing import Literal @@ -32,6 +45,10 @@ def calculate_lr( cutoff_len: int = 1024, # i.e. maximum input length during training is_mistral: bool = False, # mistral model uses a smaller learning rate, ): + r""" + Calculates the optimal learning rate for 7B/13B models using LLaMA's hyper-parameters. + Usage: python cal_lr.py --model_name_or_path path_to_model --dataset alpaca_en --cutoff_len 1024 --batch_size 16 + """ model_args, data_args, training_args, _, _ = get_train_args( dict( stage=stage, diff --git a/scripts/cal_ppl.py b/scripts/cal_ppl.py index 387b756c..fb503629 100644 --- a/scripts/cal_ppl.py +++ b/scripts/cal_ppl.py @@ -1,6 +1,17 @@ # coding=utf-8 -# Calculates the ppl on the dataset of the pre-trained models. -# Usage: python cal_ppl.py --model_name_or_path path_to_model --save_name ppl.json +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import json from dataclasses import dataclass @@ -56,6 +67,10 @@ def cal_ppl( max_samples: Optional[int] = None, train_on_prompt: bool = False, ): + r""" + Calculates the ppl on the dataset of the pre-trained models. + Usage: python cal_ppl.py --model_name_or_path path_to_model --save_name ppl.json + """ model_args, data_args, training_args, finetuning_args, _ = get_train_args( dict( stage=stage, diff --git a/scripts/length_cdf.py b/scripts/length_cdf.py index 7739dcf0..4cdf01e6 100644 --- a/scripts/length_cdf.py +++ b/scripts/length_cdf.py @@ -1,6 +1,17 @@ # coding=utf-8 -# Calculates the distribution of the input lengths in the dataset. -# Usage: python length_cdf.py --model_name_or_path path_to_model --dataset alpaca_en --template default +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from collections import defaultdict @@ -19,6 +30,10 @@ def length_cdf( template: str = "default", interval: int = 1000, ): + r""" + Calculates the distribution of the input lengths in the dataset. + Usage: python length_cdf.py --model_name_or_path path_to_model --dataset alpaca_en --template default + """ model_args, data_args, training_args, _, _ = get_train_args( dict( stage="sft", diff --git a/scripts/llama_pro.py b/scripts/llama_pro.py index 727998ae..f315335a 100644 --- a/scripts/llama_pro.py +++ b/scripts/llama_pro.py @@ -1,7 +1,20 @@ # coding=utf-8 -# Performs block expansion for LLaMA, Mistral, Qwen1.5 or Yi models. -# Usage: python llama_pro.py --model_name_or_path meta-llama/Llama-2-7b-hf --output_dir llama2_pro --num_expand 8 -# Inspired by: https://github.com/TencentARC/LLaMA-Pro/blob/main/scripts/block_expansion.py +# Copyright 2024 Tencent Inc. and the LlamaFactory team. +# +# This code is inspired by Tencent's LLaMA-Pro library. +# https://github.com/TencentARC/LLaMA-Pro/blob/main/scripts/block_expansion.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import json import os @@ -37,6 +50,10 @@ def block_expansion( shard_size: Optional[str] = "2GB", save_safetensors: Optional[bool] = False, ): + r""" + Performs block expansion for LLaMA, Mistral, Qwen1.5 or Yi models. + Usage: python llama_pro.py --model_name_or_path meta-llama/Llama-2-7b-hf --output_dir llama2_pro --num_expand 8 + """ config: "PretrainedConfig" = AutoConfig.from_pretrained(model_name_or_path) num_layers = getattr(config, "num_hidden_layers") setattr(config, "num_hidden_layers", num_layers + num_expand) diff --git a/scripts/llamafy_baichuan2.py b/scripts/llamafy_baichuan2.py index 1ae58879..19284f5f 100644 --- a/scripts/llamafy_baichuan2.py +++ b/scripts/llamafy_baichuan2.py @@ -1,8 +1,17 @@ # coding=utf-8 -# Converts the Baichuan2-7B model in the same format as LLaMA2-7B. -# Usage: python llamafy_baichuan2.py --input_dir input --output_dir output -# Inspired by: https://huggingface.co/fireballoon/baichuan-llama-7b/blob/main/convert_baichuan_to_llama.py -# Converted model: https://huggingface.co/hiyouga/Baichuan2-7B-Base-LLaMAfied +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import json import os @@ -79,6 +88,11 @@ def save_config(input_dir: str, output_dir: str): def llamafy_baichuan2( input_dir: str, output_dir: str, shard_size: Optional[str] = "2GB", save_safetensors: Optional[bool] = False ): + r""" + Converts the Baichuan2-7B model in the same format as LLaMA2-7B. + Usage: python llamafy_baichuan2.py --input_dir input --output_dir output + Converted model: https://huggingface.co/hiyouga/Baichuan2-7B-Base-LLaMAfied + """ try: os.makedirs(output_dir, exist_ok=False) except Exception as e: diff --git a/scripts/llamafy_qwen.py b/scripts/llamafy_qwen.py index 69cf3e8e..e5b59483 100644 --- a/scripts/llamafy_qwen.py +++ b/scripts/llamafy_qwen.py @@ -1,7 +1,17 @@ # coding=utf-8 -# Converts the Qwen models in the same format as LLaMA2. -# Usage: python llamafy_qwen.py --input_dir input --output_dir output -# Converted model: https://huggingface.co/hiyouga/Qwen-14B-Chat-LLaMAfied +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import json import os @@ -131,6 +141,11 @@ def save_config(input_dir: str, output_dir: str, torch_dtype: str): def llamafy_qwen( input_dir: str, output_dir: str, shard_size: Optional[str] = "2GB", save_safetensors: Optional[bool] = False ): + r""" + Converts the Qwen models in the same format as LLaMA2. + Usage: python llamafy_qwen.py --input_dir input --output_dir output + Converted model: https://huggingface.co/hiyouga/Qwen-14B-Chat-LLaMAfied + """ try: os.makedirs(output_dir, exist_ok=False) except Exception as e: diff --git a/scripts/loftq_init.py b/scripts/loftq_init.py index 7f244316..159dea06 100644 --- a/scripts/loftq_init.py +++ b/scripts/loftq_init.py @@ -1,7 +1,20 @@ # coding=utf-8 -# Initializes LoRA weights with LoRA-fine-tuning-aware Quantization (LoftQ) -# Usage: python loftq_init.py --model_name_or_path path_to_model --save_dir output_dir -# Inspired by: https://github.com/huggingface/peft/blob/main/examples/loftq_finetuning/quantize_save_load.py +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's PEFT library. +# https://github.com/huggingface/peft/blob/v0.10.0/examples/loftq_finetuning/quantize_save_load.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os from typing import TYPE_CHECKING, Optional @@ -49,6 +62,10 @@ def quantize_loftq( lora_target: Optional[str] = "q_proj,v_proj", save_safetensors: Optional[bool] = False, ): + r""" + Initializes LoRA weights with LoRA-fine-tuning-aware Quantization (LoftQ) + Usage: python loftq_init.py --model_name_or_path path_to_model --save_dir output_dir + """ tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype="auto") loftq_config = LoftQConfig(loftq_bits=loftq_bits, loftq_iter=loftq_iter) diff --git a/scripts/test_toolcall.py b/scripts/test_toolcall.py index 7e460017..6f6fd06c 100644 --- a/scripts/test_toolcall.py +++ b/scripts/test_toolcall.py @@ -1,3 +1,18 @@ +# coding=utf-8 +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import os from typing import Sequence diff --git a/setup.py b/setup.py index 1756551e..3d2ac921 100644 --- a/setup.py +++ b/setup.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os import re diff --git a/src/api.py b/src/api.py index 3655e393..0f925497 100644 --- a/src/api.py +++ b/src/api.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os import uvicorn diff --git a/src/llamafactory/__init__.py b/src/llamafactory/__init__.py index 78230937..9d732777 100644 --- a/src/llamafactory/__init__.py +++ b/src/llamafactory/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Level: api, webui > chat, eval, train > data, model > hparams > extras from .cli import VERSION diff --git a/src/llamafactory/api/app.py b/src/llamafactory/api/app.py index 21edab2f..c1264617 100644 --- a/src/llamafactory/api/app.py +++ b/src/llamafactory/api/app.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os from contextlib import asynccontextmanager from typing import Optional diff --git a/src/llamafactory/api/chat.py b/src/llamafactory/api/chat.py index 98957bc1..a2074dbb 100644 --- a/src/llamafactory/api/chat.py +++ b/src/llamafactory/api/chat.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import base64 import io import json diff --git a/src/llamafactory/api/common.py b/src/llamafactory/api/common.py index 5ad9a071..d1ac94de 100644 --- a/src/llamafactory/api/common.py +++ b/src/llamafactory/api/common.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json from typing import TYPE_CHECKING, Any, Dict diff --git a/src/llamafactory/api/protocol.py b/src/llamafactory/api/protocol.py index 055fa781..a69132ea 100644 --- a/src/llamafactory/api/protocol.py +++ b/src/llamafactory/api/protocol.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import time from enum import Enum, unique from typing import Any, Dict, List, Optional, Union diff --git a/src/llamafactory/chat/__init__.py b/src/llamafactory/chat/__init__.py index a1a79de6..07276d48 100644 --- a/src/llamafactory/chat/__init__.py +++ b/src/llamafactory/chat/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .base_engine import BaseEngine from .chat_model import ChatModel diff --git a/src/llamafactory/chat/base_engine.py b/src/llamafactory/chat/base_engine.py index 65b6c59c..92a51ebe 100644 --- a/src/llamafactory/chat/base_engine.py +++ b/src/llamafactory/chat/base_engine.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from abc import ABC, abstractmethod from dataclasses import dataclass from typing import TYPE_CHECKING, Any, AsyncGenerator, Dict, List, Literal, Optional, Sequence, Union diff --git a/src/llamafactory/chat/chat_model.py b/src/llamafactory/chat/chat_model.py index 281ef0c1..fb800106 100644 --- a/src/llamafactory/chat/chat_model.py +++ b/src/llamafactory/chat/chat_model.py @@ -1,3 +1,20 @@ +# Copyright 2024 THUDM and the LlamaFactory team. +# +# This code is inspired by the THUDM's ChatGLM implementation. +# https://github.com/THUDM/ChatGLM-6B/blob/main/cli_demo.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import asyncio from threading import Thread from typing import TYPE_CHECKING, Any, AsyncGenerator, Dict, Generator, List, Optional, Sequence diff --git a/src/llamafactory/chat/hf_engine.py b/src/llamafactory/chat/hf_engine.py index 28e6a409..a7ff7015 100644 --- a/src/llamafactory/chat/hf_engine.py +++ b/src/llamafactory/chat/hf_engine.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import asyncio import concurrent.futures import os diff --git a/src/llamafactory/chat/vllm_engine.py b/src/llamafactory/chat/vllm_engine.py index f0812a99..d488a039 100644 --- a/src/llamafactory/chat/vllm_engine.py +++ b/src/llamafactory/chat/vllm_engine.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import uuid from typing import TYPE_CHECKING, AsyncGenerator, AsyncIterator, Dict, List, Optional, Sequence, Union diff --git a/src/llamafactory/cli.py b/src/llamafactory/cli.py index 5042e53c..c7f136b3 100644 --- a/src/llamafactory/cli.py +++ b/src/llamafactory/cli.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os import random import subprocess diff --git a/src/llamafactory/data/__init__.py b/src/llamafactory/data/__init__.py index b08691d3..307853bc 100644 --- a/src/llamafactory/data/__init__.py +++ b/src/llamafactory/data/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .collator import KTODataCollatorWithPadding, PairwiseDataCollatorWithPadding from .data_utils import Role, split_dataset from .loader import get_dataset diff --git a/src/llamafactory/data/aligner.py b/src/llamafactory/data/aligner.py index 3e9d5c46..299bdca3 100644 --- a/src/llamafactory/data/aligner.py +++ b/src/llamafactory/data/aligner.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os from functools import partial from typing import TYPE_CHECKING, Any, Dict, List, Union diff --git a/src/llamafactory/data/collator.py b/src/llamafactory/data/collator.py index 1dc8dd8d..e4859ff5 100644 --- a/src/llamafactory/data/collator.py +++ b/src/llamafactory/data/collator.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from dataclasses import dataclass from typing import Any, Dict, Sequence diff --git a/src/llamafactory/data/data_utils.py b/src/llamafactory/data/data_utils.py index 9b313112..cc9761b1 100644 --- a/src/llamafactory/data/data_utils.py +++ b/src/llamafactory/data/data_utils.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from enum import Enum, unique from typing import TYPE_CHECKING, Dict, List, Tuple, Union diff --git a/src/llamafactory/data/formatter.py b/src/llamafactory/data/formatter.py index 0cd3d6c1..590e682b 100644 --- a/src/llamafactory/data/formatter.py +++ b/src/llamafactory/data/formatter.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import re from abc import ABC, abstractmethod diff --git a/src/llamafactory/data/loader.py b/src/llamafactory/data/loader.py index ba426f81..f44ef5de 100644 --- a/src/llamafactory/data/loader.py +++ b/src/llamafactory/data/loader.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import inspect import os import sys diff --git a/src/llamafactory/data/parser.py b/src/llamafactory/data/parser.py index ec97bfc1..4bebcd68 100644 --- a/src/llamafactory/data/parser.py +++ b/src/llamafactory/data/parser.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import os from dataclasses import dataclass diff --git a/src/llamafactory/data/preprocess.py b/src/llamafactory/data/preprocess.py index 875f55d6..9a8b97f3 100644 --- a/src/llamafactory/data/preprocess.py +++ b/src/llamafactory/data/preprocess.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from functools import partial from typing import TYPE_CHECKING, Callable, Literal, Optional, Tuple diff --git a/src/llamafactory/data/processors/feedback.py b/src/llamafactory/data/processors/feedback.py index 5fba452c..219ab353 100644 --- a/src/llamafactory/data/processors/feedback.py +++ b/src/llamafactory/data/processors/feedback.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Tuple from ...extras.constants import IGNORE_INDEX diff --git a/src/llamafactory/data/processors/pairwise.py b/src/llamafactory/data/processors/pairwise.py index db52c6a7..b2939348 100644 --- a/src/llamafactory/data/processors/pairwise.py +++ b/src/llamafactory/data/processors/pairwise.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Tuple from ...extras.constants import IGNORE_INDEX diff --git a/src/llamafactory/data/processors/pretrain.py b/src/llamafactory/data/processors/pretrain.py index a10ccabd..fb4c840c 100644 --- a/src/llamafactory/data/processors/pretrain.py +++ b/src/llamafactory/data/processors/pretrain.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's transformers library. +# https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/language-modeling/run_clm.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from itertools import chain from typing import TYPE_CHECKING, Any, Dict, List diff --git a/src/llamafactory/data/processors/processor_utils.py b/src/llamafactory/data/processors/processor_utils.py index 9903a053..93df0cd5 100644 --- a/src/llamafactory/data/processors/processor_utils.py +++ b/src/llamafactory/data/processors/processor_utils.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import bisect from typing import TYPE_CHECKING, List, Sequence diff --git a/src/llamafactory/data/processors/supervised.py b/src/llamafactory/data/processors/supervised.py index f59f5371..eb5ffb1a 100644 --- a/src/llamafactory/data/processors/supervised.py +++ b/src/llamafactory/data/processors/supervised.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from collections import defaultdict from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Tuple diff --git a/src/llamafactory/data/processors/unsupervised.py b/src/llamafactory/data/processors/unsupervised.py index 38497a15..75ad4d51 100644 --- a/src/llamafactory/data/processors/unsupervised.py +++ b/src/llamafactory/data/processors/unsupervised.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Tuple from ...extras.logging import get_logger diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index b600c567..786c679f 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from dataclasses import dataclass from typing import TYPE_CHECKING, Dict, List, Optional, Sequence, Tuple, Union diff --git a/src/llamafactory/eval/evaluator.py b/src/llamafactory/eval/evaluator.py index 5c6fb104..bbd7a44b 100644 --- a/src/llamafactory/eval/evaluator.py +++ b/src/llamafactory/eval/evaluator.py @@ -1,4 +1,41 @@ -# Inspired by: https://github.com/hendrycks/test/blob/master/evaluate_flan.py +# Copyright 2024 the LlamaFactory team. +# +# This code is inspired by Dan's test library. +# https://github.com/hendrycks/test/blob/master/evaluate_flan.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# MIT License +# +# Copyright (c) 2020 Dan Hendrycks +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. import inspect import json diff --git a/src/llamafactory/eval/template.py b/src/llamafactory/eval/template.py index 2cbb5aaf..7d524e7c 100644 --- a/src/llamafactory/eval/template.py +++ b/src/llamafactory/eval/template.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from dataclasses import dataclass from typing import Dict, List, Sequence, Tuple diff --git a/src/llamafactory/extras/callbacks.py b/src/llamafactory/extras/callbacks.py index 441ebbfd..0dff6a69 100644 --- a/src/llamafactory/extras/callbacks.py +++ b/src/llamafactory/extras/callbacks.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import logging import os diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index 7d96fb5f..e31e7419 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from collections import OrderedDict, defaultdict from enum import Enum from typing import Dict, Optional diff --git a/src/llamafactory/extras/env.py b/src/llamafactory/extras/env.py index a8cb799d..586c24c0 100644 --- a/src/llamafactory/extras/env.py +++ b/src/llamafactory/extras/env.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import platform import accelerate diff --git a/src/llamafactory/extras/logging.py b/src/llamafactory/extras/logging.py index 430b8a48..67622212 100644 --- a/src/llamafactory/extras/logging.py +++ b/src/llamafactory/extras/logging.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import logging import os import sys diff --git a/src/llamafactory/extras/misc.py b/src/llamafactory/extras/misc.py index fc33f77e..3d969df1 100644 --- a/src/llamafactory/extras/misc.py +++ b/src/llamafactory/extras/misc.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import gc import os from typing import TYPE_CHECKING, Dict, Tuple diff --git a/src/llamafactory/extras/packages.py b/src/llamafactory/extras/packages.py index 0746bb4f..35f546ab 100644 --- a/src/llamafactory/extras/packages.py +++ b/src/llamafactory/extras/packages.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's transformers library. +# https://github.com/huggingface/transformers/blob/v4.40.0/src/transformers/utils/import_utils.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import importlib.metadata import importlib.util from functools import lru_cache diff --git a/src/llamafactory/extras/ploting.py b/src/llamafactory/extras/ploting.py index dea23bbe..596d55e7 100644 --- a/src/llamafactory/extras/ploting.py +++ b/src/llamafactory/extras/ploting.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import math import os diff --git a/src/llamafactory/hparams/__init__.py b/src/llamafactory/hparams/__init__.py index d1ee98dd..cfe448c1 100644 --- a/src/llamafactory/hparams/__init__.py +++ b/src/llamafactory/hparams/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .data_args import DataArguments from .evaluation_args import EvaluationArguments from .finetuning_args import FinetuningArguments diff --git a/src/llamafactory/hparams/data_args.py b/src/llamafactory/hparams/data_args.py index 1e0cd08c..95284766 100644 --- a/src/llamafactory/hparams/data_args.py +++ b/src/llamafactory/hparams/data_args.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's transformers library. +# https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/language-modeling/run_clm.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from dataclasses import dataclass, field from typing import Literal, Optional diff --git a/src/llamafactory/hparams/evaluation_args.py b/src/llamafactory/hparams/evaluation_args.py index 5a05f6f6..a7f221ca 100644 --- a/src/llamafactory/hparams/evaluation_args.py +++ b/src/llamafactory/hparams/evaluation_args.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os from dataclasses import dataclass, field from typing import Literal, Optional diff --git a/src/llamafactory/hparams/finetuning_args.py b/src/llamafactory/hparams/finetuning_args.py index facbe792..52dc299e 100644 --- a/src/llamafactory/hparams/finetuning_args.py +++ b/src/llamafactory/hparams/finetuning_args.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from dataclasses import dataclass, field from typing import List, Literal, Optional diff --git a/src/llamafactory/hparams/generating_args.py b/src/llamafactory/hparams/generating_args.py index 0ee17d1a..7ebb4eed 100644 --- a/src/llamafactory/hparams/generating_args.py +++ b/src/llamafactory/hparams/generating_args.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from dataclasses import asdict, dataclass, field from typing import Any, Dict, Optional diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index bbac2e4b..0a91f0fa 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's transformers library. +# https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/language-modeling/run_clm.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from dataclasses import asdict, dataclass, field from typing import TYPE_CHECKING, Any, Dict, Literal, Optional, Union diff --git a/src/llamafactory/hparams/parser.py b/src/llamafactory/hparams/parser.py index 3476a726..1c57567c 100644 --- a/src/llamafactory/hparams/parser.py +++ b/src/llamafactory/hparams/parser.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's transformers library. +# https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/language-modeling/run_clm.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import logging import os import sys diff --git a/src/llamafactory/launcher.py b/src/llamafactory/launcher.py index de154db9..65e0b68f 100644 --- a/src/llamafactory/launcher.py +++ b/src/llamafactory/launcher.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from llamafactory.train.tuner import run_exp diff --git a/src/llamafactory/model/__init__.py b/src/llamafactory/model/__init__.py index 9d23d59f..4abbaa1b 100644 --- a/src/llamafactory/model/__init__.py +++ b/src/llamafactory/model/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .loader import load_config, load_model, load_tokenizer from .model_utils.misc import find_all_linear_modules from .model_utils.valuehead import load_valuehead_params diff --git a/src/llamafactory/model/adapter.py b/src/llamafactory/model/adapter.py index c37f6009..dfa71525 100644 --- a/src/llamafactory/model/adapter.py +++ b/src/llamafactory/model/adapter.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import re from typing import TYPE_CHECKING diff --git a/src/llamafactory/model/loader.py b/src/llamafactory/model/loader.py index 697a04e7..69cccd93 100644 --- a/src/llamafactory/model/loader.py +++ b/src/llamafactory/model/loader.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Any, Dict, Optional, TypedDict from transformers import AutoConfig, AutoModelForCausalLM, AutoModelForVision2Seq, AutoProcessor, AutoTokenizer diff --git a/src/llamafactory/model/model_utils/attention.py b/src/llamafactory/model/model_utils/attention.py index 2bd36fdc..8ff3807b 100644 --- a/src/llamafactory/model/model_utils/attention.py +++ b/src/llamafactory/model/model_utils/attention.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING from transformers.utils import is_flash_attn_2_available, is_torch_sdpa_available diff --git a/src/llamafactory/model/model_utils/checkpointing.py b/src/llamafactory/model/model_utils/checkpointing.py index e0657be8..e4e84b12 100644 --- a/src/llamafactory/model/model_utils/checkpointing.py +++ b/src/llamafactory/model/model_utils/checkpointing.py @@ -1,3 +1,21 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's Transformers and PEFT library. +# https://github.com/huggingface/transformers/blob/v4.40.0/src/transformers/modeling_utils.py +# https://github.com/huggingface/peft/blob/v0.10.0/src/peft/utils/other.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import inspect from functools import partial from types import MethodType @@ -68,7 +86,6 @@ def prepare_model_for_training( (1) cast the layernorm in fp32 (2) make output embedding layer require grads (3) add the upcasting of the lm_head in fp32 - Inspired by: https://github.com/huggingface/peft/blob/v0.7.1/src/peft/utils/other.py#L72 """ if model_args.upcast_layernorm: logger.info("Upcasting layernorm weights in float32.") diff --git a/src/llamafactory/model/model_utils/embedding.py b/src/llamafactory/model/model_utils/embedding.py index 3d9278e3..3ff79828 100644 --- a/src/llamafactory/model/model_utils/embedding.py +++ b/src/llamafactory/model/model_utils/embedding.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import math from contextlib import nullcontext from typing import TYPE_CHECKING diff --git a/src/llamafactory/model/model_utils/longlora.py b/src/llamafactory/model/model_utils/longlora.py index 4a8c562a..7af43dcf 100644 --- a/src/llamafactory/model/model_utils/longlora.py +++ b/src/llamafactory/model/model_utils/longlora.py @@ -1,3 +1,20 @@ +# Copyright 2024 EleutherAI, HuggingFace Inc., and the LlamaFactory team. +# +# This code is based on the EleutherAI's GPT-NeoX and HuggingFace's Transformers libraries. +# https://github.com/huggingface/transformers/blob/v4.40.0/src/transformers/models/llama/modeling_llama.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import math from typing import TYPE_CHECKING, Optional, Tuple diff --git a/src/llamafactory/model/model_utils/misc.py b/src/llamafactory/model/model_utils/misc.py index 4851bd29..a2812228 100644 --- a/src/llamafactory/model/model_utils/misc.py +++ b/src/llamafactory/model/model_utils/misc.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, List from ...extras.logging import get_logger diff --git a/src/llamafactory/model/model_utils/mod.py b/src/llamafactory/model/model_utils/mod.py index 5708a1a8..ec73af00 100644 --- a/src/llamafactory/model/model_utils/mod.py +++ b/src/llamafactory/model/model_utils/mod.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING from ...extras.constants import MOD_SUPPORTED_MODELS diff --git a/src/llamafactory/model/model_utils/moe.py b/src/llamafactory/model/model_utils/moe.py index 8a73c844..5c7473aa 100644 --- a/src/llamafactory/model/model_utils/moe.py +++ b/src/llamafactory/model/model_utils/moe.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Sequence import torch diff --git a/src/llamafactory/model/model_utils/quantization.py b/src/llamafactory/model/model_utils/quantization.py index 02a54f07..9e6b9da4 100644 --- a/src/llamafactory/model/model_utils/quantization.py +++ b/src/llamafactory/model/model_utils/quantization.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's Optimum library. +# https://github.com/huggingface/optimum/blob/v1.20.0/optimum/gptq/data.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os import random from enum import Enum, unique @@ -41,7 +58,6 @@ class QuantizationMethod(str, Enum): def _get_quantization_dataset(tokenizer: "PreTrainedTokenizer", model_args: "ModelArguments") -> List[str]: r""" - Inspired by: https://github.com/huggingface/optimum/blob/v1.16.0/optimum/gptq/data.py#L133 TODO: remove tokenizer.decode() https://github.com/huggingface/optimum/pull/1600 """ if os.path.isfile(model_args.export_quantization_dataset): diff --git a/src/llamafactory/model/model_utils/rope.py b/src/llamafactory/model/model_utils/rope.py index 93ab8929..88303c4d 100644 --- a/src/llamafactory/model/model_utils/rope.py +++ b/src/llamafactory/model/model_utils/rope.py @@ -1,3 +1,21 @@ +# Copyright 2024 LMSYS and the LlamaFactory team. +# Copyright 2023 Rohan Taori, Ishaan Gulrajani, Tianyi Zhang, Yann Dubois, Xuechen Li +# +# This code is inspired by the LMSYS's FastChat library. +# https://github.com/lm-sys/FastChat/blob/v0.2.30/fastchat/train/train.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import math from typing import TYPE_CHECKING diff --git a/src/llamafactory/model/model_utils/unsloth.py b/src/llamafactory/model/model_utils/unsloth.py index 8a16409d..9cfaec61 100644 --- a/src/llamafactory/model/model_utils/unsloth.py +++ b/src/llamafactory/model/model_utils/unsloth.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Any, Dict, Optional from ...extras.logging import get_logger diff --git a/src/llamafactory/model/model_utils/valuehead.py b/src/llamafactory/model/model_utils/valuehead.py index 64333688..9ab3d45a 100644 --- a/src/llamafactory/model/model_utils/valuehead.py +++ b/src/llamafactory/model/model_utils/valuehead.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Dict import torch diff --git a/src/llamafactory/model/model_utils/visual.py b/src/llamafactory/model/model_utils/visual.py index c8260b7f..37237485 100644 --- a/src/llamafactory/model/model_utils/visual.py +++ b/src/llamafactory/model/model_utils/visual.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's TRL library. +# https://github.com/huggingface/transformers/blob/v4.40.0/src/transformers/models/llava/modeling_llava.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Tuple import torch diff --git a/src/llamafactory/model/patcher.py b/src/llamafactory/model/patcher.py index b97ff433..053516e4 100644 --- a/src/llamafactory/model/patcher.py +++ b/src/llamafactory/model/patcher.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os from types import MethodType from typing import TYPE_CHECKING, Any, Dict diff --git a/src/llamafactory/train/dpo/__init__.py b/src/llamafactory/train/dpo/__init__.py index 43fe9420..9ce0d089 100644 --- a/src/llamafactory/train/dpo/__init__.py +++ b/src/llamafactory/train/dpo/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .workflow import run_dpo diff --git a/src/llamafactory/train/dpo/trainer.py b/src/llamafactory/train/dpo/trainer.py index 5bdb9c43..475d08c3 100644 --- a/src/llamafactory/train/dpo/trainer.py +++ b/src/llamafactory/train/dpo/trainer.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's TRL library. +# https://github.com/huggingface/trl/blob/v0.8.0/trl/trainer/dpo_trainer.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import warnings from collections import defaultdict from contextlib import nullcontext diff --git a/src/llamafactory/train/dpo/workflow.py b/src/llamafactory/train/dpo/workflow.py index 992985b0..8c3c2eb1 100644 --- a/src/llamafactory/train/dpo/workflow.py +++ b/src/llamafactory/train/dpo/workflow.py @@ -1,4 +1,19 @@ -# Inspired by: https://github.com/huggingface/trl/blob/main/examples/research_projects/stack_llama_2/scripts/dpo_llama2.py +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's TRL library. +# https://github.com/huggingface/trl/blob/v0.8.0/examples/scripts/dpo.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import TYPE_CHECKING, List, Optional diff --git a/src/llamafactory/train/kto/__init__.py b/src/llamafactory/train/kto/__init__.py index 34c7905a..a1900368 100644 --- a/src/llamafactory/train/kto/__init__.py +++ b/src/llamafactory/train/kto/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .workflow import run_kto diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index 3b4488fc..6e96fc0c 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's TRL library. +# https://github.com/huggingface/trl/blob/v0.8.0/trl/trainer/kto_trainer.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import warnings from collections import defaultdict from contextlib import nullcontext diff --git a/src/llamafactory/train/kto/workflow.py b/src/llamafactory/train/kto/workflow.py index c79b160b..8a7af6d4 100644 --- a/src/llamafactory/train/kto/workflow.py +++ b/src/llamafactory/train/kto/workflow.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's TRL library. +# https://github.com/huggingface/trl/blob/v0.8.0/examples/scripts/kto.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, List, Optional from ...data import KTODataCollatorWithPadding, get_dataset, split_dataset diff --git a/src/llamafactory/train/ppo/__init__.py b/src/llamafactory/train/ppo/__init__.py index d17336d5..161f6f5d 100644 --- a/src/llamafactory/train/ppo/__init__.py +++ b/src/llamafactory/train/ppo/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .workflow import run_ppo diff --git a/src/llamafactory/train/ppo/ppo_utils.py b/src/llamafactory/train/ppo/ppo_utils.py index fec3fc1e..05c40946 100644 --- a/src/llamafactory/train/ppo/ppo_utils.py +++ b/src/llamafactory/train/ppo/ppo_utils.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json from contextlib import nullcontext from typing import TYPE_CHECKING, Dict, List, Literal, Optional diff --git a/src/llamafactory/train/ppo/trainer.py b/src/llamafactory/train/ppo/trainer.py index 45f47455..61420f3b 100644 --- a/src/llamafactory/train/ppo/trainer.py +++ b/src/llamafactory/train/ppo/trainer.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's TRL library. +# https://github.com/huggingface/trl/blob/v0.8.0/trl/trainer/ppo_trainer.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import math import os import sys diff --git a/src/llamafactory/train/ppo/workflow.py b/src/llamafactory/train/ppo/workflow.py index 111704c6..891d539a 100644 --- a/src/llamafactory/train/ppo/workflow.py +++ b/src/llamafactory/train/ppo/workflow.py @@ -1,4 +1,19 @@ -# Inspired by: https://github.com/lvwerra/trl/blob/main/examples/research_projects/stack_llama/scripts/rl_training.py +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's TRL library. +# https://github.com/huggingface/trl/blob/v0.8.0/examples/scripts/ppo.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import TYPE_CHECKING, List, Optional diff --git a/src/llamafactory/train/pt/__init__.py b/src/llamafactory/train/pt/__init__.py index bdf397f6..d80e6f22 100644 --- a/src/llamafactory/train/pt/__init__.py +++ b/src/llamafactory/train/pt/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .workflow import run_pt diff --git a/src/llamafactory/train/pt/trainer.py b/src/llamafactory/train/pt/trainer.py index 1d96e82f..09729f2e 100644 --- a/src/llamafactory/train/pt/trainer.py +++ b/src/llamafactory/train/pt/trainer.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from types import MethodType from typing import TYPE_CHECKING, Dict, Optional diff --git a/src/llamafactory/train/pt/workflow.py b/src/llamafactory/train/pt/workflow.py index 8a635567..f1df314e 100644 --- a/src/llamafactory/train/pt/workflow.py +++ b/src/llamafactory/train/pt/workflow.py @@ -1,4 +1,19 @@ -# Inspired by: https://github.com/huggingface/transformers/blob/v4.34.1/examples/pytorch/language-modeling/run_clm.py +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's transformers library. +# https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/language-modeling/run_clm.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import math from typing import TYPE_CHECKING, List, Optional diff --git a/src/llamafactory/train/rm/__init__.py b/src/llamafactory/train/rm/__init__.py index dedac35f..48278315 100644 --- a/src/llamafactory/train/rm/__init__.py +++ b/src/llamafactory/train/rm/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .workflow import run_rm diff --git a/src/llamafactory/train/rm/metric.py b/src/llamafactory/train/rm/metric.py index 99dc6ab8..fb880b1c 100644 --- a/src/llamafactory/train/rm/metric.py +++ b/src/llamafactory/train/rm/metric.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import Dict, Sequence, Tuple, Union import numpy as np diff --git a/src/llamafactory/train/rm/trainer.py b/src/llamafactory/train/rm/trainer.py index bfb344dc..14695d7d 100644 --- a/src/llamafactory/train/rm/trainer.py +++ b/src/llamafactory/train/rm/trainer.py @@ -1,3 +1,42 @@ +# Copyright 2024 the LlamaFactory team. +# +# This code is inspired by CarperAI's trlx library. +# https://github.com/CarperAI/trlx/blob/v0.7.0/examples/summarize_rlhf/reward_model/reward_model.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# MIT License +# +# Copyright (c) 2022 CarperAI +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + import json import os from types import MethodType @@ -79,7 +118,6 @@ class PairwiseTrainer(Trainer): chosen_scores, rejected_scores = [], [] # Compute pairwise loss. Only backprop on the different tokens before padding - # Inspired by: https://github.com/CarperAI/trlx/blob/main/examples/summarize_rlhf/reward_model/reward_model.py loss = 0 for i in range(batch_size): chosen_length = (chosen_input_ids[i] != self.tokenizer.pad_token_id).nonzero()[-1] + 1 diff --git a/src/llamafactory/train/rm/workflow.py b/src/llamafactory/train/rm/workflow.py index 2e9e194b..75c0a2bf 100644 --- a/src/llamafactory/train/rm/workflow.py +++ b/src/llamafactory/train/rm/workflow.py @@ -1,4 +1,41 @@ -# Inspired by: https://github.com/CarperAI/trlx/blob/main/examples/summarize_rlhf/reward_model/train_reward_model_gptj.py +# Copyright 2024 the LlamaFactory team. +# +# This code is inspired by CarperAI's trlx library. +# https://github.com/CarperAI/trlx/blob/v0.7.0/examples/summarize_rlhf/reward_model/train_reward_model_gptj.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# MIT License +# +# Copyright (c) 2022 CarperAI +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. from typing import TYPE_CHECKING, List, Optional diff --git a/src/llamafactory/train/sft/__init__.py b/src/llamafactory/train/sft/__init__.py index f2f84e78..475dfe5f 100644 --- a/src/llamafactory/train/sft/__init__.py +++ b/src/llamafactory/train/sft/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .workflow import run_sft diff --git a/src/llamafactory/train/sft/metric.py b/src/llamafactory/train/sft/metric.py index 923238d6..d2147c22 100644 --- a/src/llamafactory/train/sft/metric.py +++ b/src/llamafactory/train/sft/metric.py @@ -1,3 +1,21 @@ +# Copyright 2024 HuggingFace Inc., THUDM, and the LlamaFactory team. +# +# This code is inspired by HuggingFace's transformers library and THUDM's ChatGLM implementation. +# https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/summarization/run_summarization.py +# https://github.com/THUDM/ChatGLM-6B/blob/main/ptuning/main.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from dataclasses import dataclass from typing import TYPE_CHECKING, Dict, Sequence, Tuple, Union diff --git a/src/llamafactory/train/sft/trainer.py b/src/llamafactory/train/sft/trainer.py index 6bf5b7c0..6ab6914e 100644 --- a/src/llamafactory/train/sft/trainer.py +++ b/src/llamafactory/train/sft/trainer.py @@ -1,3 +1,20 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's transformers library. +# https://github.com/huggingface/transformers/blob/v4.40.0/src/transformers/trainer_seq2seq.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import os from types import MethodType diff --git a/src/llamafactory/train/sft/workflow.py b/src/llamafactory/train/sft/workflow.py index a989b3f7..dfc71cfb 100644 --- a/src/llamafactory/train/sft/workflow.py +++ b/src/llamafactory/train/sft/workflow.py @@ -1,4 +1,19 @@ -# Inspired by: https://github.com/huggingface/transformers/blob/v4.34.1/examples/pytorch/summarization/run_summarization.py +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by HuggingFace's transformers library. +# https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/summarization/run_summarization.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import TYPE_CHECKING, List, Optional diff --git a/src/llamafactory/train/trainer_utils.py b/src/llamafactory/train/trainer_utils.py index 48944a63..5621d5df 100644 --- a/src/llamafactory/train/trainer_utils.py +++ b/src/llamafactory/train/trainer_utils.py @@ -1,3 +1,22 @@ +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is inspired by the GaLore's implementation: https://github.com/jiaweizzhao/GaLore +# and the LoRA+'s implementation: https://github.com/nikhil-ghosh-berkeley/loraplus +# and the BAdam's implementation: https://github.com/Ledzy/BAdam +# and the TRL's implementation: https://github.com/huggingface/trl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Callable, Dict, List, Optional, Tuple, Union import torch diff --git a/src/llamafactory/train/tuner.py b/src/llamafactory/train/tuner.py index eed875e9..788b4c4f 100644 --- a/src/llamafactory/train/tuner.py +++ b/src/llamafactory/train/tuner.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Any, Dict, List, Optional import torch diff --git a/src/llamafactory/webui/chatter.py b/src/llamafactory/webui/chatter.py index c82710d3..864c41c7 100644 --- a/src/llamafactory/webui/chatter.py +++ b/src/llamafactory/webui/chatter.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import os from typing import TYPE_CHECKING, Dict, Generator, List, Optional, Sequence, Tuple diff --git a/src/llamafactory/webui/common.py b/src/llamafactory/webui/common.py index 3b8d5378..980428a4 100644 --- a/src/llamafactory/webui/common.py +++ b/src/llamafactory/webui/common.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import os from collections import defaultdict diff --git a/src/llamafactory/webui/components/__init__.py b/src/llamafactory/webui/components/__init__.py index 5c1e21b8..715fb6e4 100644 --- a/src/llamafactory/webui/components/__init__.py +++ b/src/llamafactory/webui/components/__init__.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from .chatbot import create_chat_box from .eval import create_eval_tab from .export import create_export_tab diff --git a/src/llamafactory/webui/components/chatbot.py b/src/llamafactory/webui/components/chatbot.py index f83694b1..ad74114b 100644 --- a/src/llamafactory/webui/components/chatbot.py +++ b/src/llamafactory/webui/components/chatbot.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Dict, Tuple from ...data import Role diff --git a/src/llamafactory/webui/components/data.py b/src/llamafactory/webui/components/data.py index 232b973d..88e500cf 100644 --- a/src/llamafactory/webui/components/data.py +++ b/src/llamafactory/webui/components/data.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import os from typing import TYPE_CHECKING, Any, Dict, List, Tuple diff --git a/src/llamafactory/webui/components/eval.py b/src/llamafactory/webui/components/eval.py index 0a7a0f44..b522913e 100644 --- a/src/llamafactory/webui/components/eval.py +++ b/src/llamafactory/webui/components/eval.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Dict from ...extras.packages import is_gradio_available diff --git a/src/llamafactory/webui/components/export.py b/src/llamafactory/webui/components/export.py index 9d756a38..14257949 100644 --- a/src/llamafactory/webui/components/export.py +++ b/src/llamafactory/webui/components/export.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Dict, Generator, List, Union from ...extras.constants import PEFT_METHODS diff --git a/src/llamafactory/webui/components/infer.py b/src/llamafactory/webui/components/infer.py index 970f4629..03bccd7f 100644 --- a/src/llamafactory/webui/components/infer.py +++ b/src/llamafactory/webui/components/infer.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Dict from ...extras.packages import is_gradio_available diff --git a/src/llamafactory/webui/components/top.py b/src/llamafactory/webui/components/top.py index fd0ead3d..2515a83d 100644 --- a/src/llamafactory/webui/components/top.py +++ b/src/llamafactory/webui/components/top.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Dict from ...data import TEMPLATES diff --git a/src/llamafactory/webui/components/train.py b/src/llamafactory/webui/components/train.py index 72dfc858..673f6bf4 100644 --- a/src/llamafactory/webui/components/train.py +++ b/src/llamafactory/webui/components/train.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Dict from transformers.trainer_utils import SchedulerType diff --git a/src/llamafactory/webui/css.py b/src/llamafactory/webui/css.py index 36e3d4c2..53982119 100644 --- a/src/llamafactory/webui/css.py +++ b/src/llamafactory/webui/css.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + CSS = r""" .duplicate-button { margin: auto !important; diff --git a/src/llamafactory/webui/engine.py b/src/llamafactory/webui/engine.py index eb6142d3..04893215 100644 --- a/src/llamafactory/webui/engine.py +++ b/src/llamafactory/webui/engine.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Any, Dict from .chatter import WebChatModel diff --git a/src/llamafactory/webui/interface.py b/src/llamafactory/webui/interface.py index bae3ba76..d25f4d38 100644 --- a/src/llamafactory/webui/interface.py +++ b/src/llamafactory/webui/interface.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os from ..extras.packages import is_gradio_available diff --git a/src/llamafactory/webui/locales.py b/src/llamafactory/webui/locales.py index e30feab2..427f01b8 100644 --- a/src/llamafactory/webui/locales.py +++ b/src/llamafactory/webui/locales.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + LOCALES = { "lang": { "en": { diff --git a/src/llamafactory/webui/manager.py b/src/llamafactory/webui/manager.py index 326fdb8d..7e9b801a 100644 --- a/src/llamafactory/webui/manager.py +++ b/src/llamafactory/webui/manager.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from typing import TYPE_CHECKING, Dict, Generator, List, Set, Tuple diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index 35014628..76982934 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os from copy import deepcopy from subprocess import Popen, TimeoutExpired diff --git a/src/llamafactory/webui/utils.py b/src/llamafactory/webui/utils.py index e39f2aa4..6ce2a8e7 100644 --- a/src/llamafactory/webui/utils.py +++ b/src/llamafactory/webui/utils.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import json import os import signal diff --git a/src/train.py b/src/train.py index b20aa9d2..6703ffdb 100644 --- a/src/train.py +++ b/src/train.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from llamafactory.train.tuner import run_exp diff --git a/src/webui.py b/src/webui.py index bbefb54e..99370af2 100644 --- a/src/webui.py +++ b/src/webui.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os from llamafactory.webui.interface import create_ui diff --git a/tests/data/test_supervised.py b/tests/data/test_supervised.py index 63a3453f..a72800d2 100644 --- a/tests/data/test_supervised.py +++ b/tests/data/test_supervised.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os import random diff --git a/tests/eval/test_eval_template.py b/tests/eval/test_eval_template.py index f6a91a67..f85d9d57 100644 --- a/tests/eval/test_eval_template.py +++ b/tests/eval/test_eval_template.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from llamafactory.eval.template import get_eval_template diff --git a/tests/model/model_utils/test_attention.py b/tests/model/model_utils/test_attention.py index 751adda4..97ac9dcc 100644 --- a/tests/model/model_utils/test_attention.py +++ b/tests/model/model_utils/test_attention.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os from transformers.utils import is_flash_attn_2_available, is_torch_sdpa_available diff --git a/tests/model/test_base.py b/tests/model/test_base.py index 32a3918e..462e8cfa 100644 --- a/tests/model/test_base.py +++ b/tests/model/test_base.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os import torch diff --git a/tests/model/test_freeze.py b/tests/model/test_freeze.py index a0618315..ac5a023c 100644 --- a/tests/model/test_freeze.py +++ b/tests/model/test_freeze.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os import torch diff --git a/tests/model/test_full.py b/tests/model/test_full.py index 802b987c..bcd6480f 100644 --- a/tests/model/test_full.py +++ b/tests/model/test_full.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os import torch diff --git a/tests/model/test_lora.py b/tests/model/test_lora.py index 3e2503f1..e49c026c 100644 --- a/tests/model/test_lora.py +++ b/tests/model/test_lora.py @@ -1,3 +1,17 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import os from typing import Sequence From 572d8bbfdd73c1a00b432f0d0411f46fad6aa1a6 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 15 Jun 2024 17:58:52 +0800 Subject: [PATCH 158/169] add minicpm #4227 --- src/llamafactory/extras/constants.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index e31e7419..73a9969d 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -682,6 +682,21 @@ register_model_group( ) +register_model_group( + models={ + "MiniCPM-2B-SFT-Chat": { + DownloadSource.DEFAULT: "openbmb/MiniCPM-2B-sft-bf16", + DownloadSource.MODELSCOPE: "OpenBMB/miniCPM-bf16", + }, + "MiniCPM-2B-DPO-Chat": { + DownloadSource.DEFAULT: "openbmb/MiniCPM-2B-dpo-bf16", + DownloadSource.MODELSCOPE: "OpenBMB/MiniCPM-2B-dpo-bf16", + }, + }, + template="cpm", +) + + register_model_group( models={ "Mistral-7B-v0.1": { From 1b834f50be64ae9b5123da0e6f528cfbd5167477 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 15 Jun 2024 19:51:20 +0800 Subject: [PATCH 159/169] add tests --- Makefile | 2 +- src/llamafactory/extras/misc.py | 9 ++- tests/data/test_supervised.py | 2 +- tests/model/model_utils/test_checkpointing.py | 74 +++++++++++++++++++ tests/model/test_base.py | 30 +++++++- tests/model/test_freeze.py | 3 + tests/model/test_full.py | 2 + tests/model/test_lora.py | 58 +++++++++++++-- 8 files changed, 166 insertions(+), 14 deletions(-) create mode 100644 tests/model/model_utils/test_checkpointing.py diff --git a/Makefile b/Makefile index 65be047b..3f13b215 100644 --- a/Makefile +++ b/Makefile @@ -11,4 +11,4 @@ style: ruff format $(check_dirs) test: - pytest tests/ + CUDA_VISIBLE_DEVICES= pytest tests/ diff --git a/src/llamafactory/extras/misc.py b/src/llamafactory/extras/misc.py index 3d969df1..93153b3e 100644 --- a/src/llamafactory/extras/misc.py +++ b/src/llamafactory/extras/misc.py @@ -22,6 +22,7 @@ from transformers import InfNanRemoveLogitsProcessor, LogitsProcessorList, PreTr from transformers.utils import ( SAFE_WEIGHTS_NAME, WEIGHTS_NAME, + is_safetensors_available, is_torch_bf16_gpu_available, is_torch_cuda_available, is_torch_mps_available, @@ -34,6 +35,11 @@ from .constants import V_HEAD_SAFE_WEIGHTS_NAME, V_HEAD_WEIGHTS_NAME from .logging import get_logger +if is_safetensors_available(): + from safetensors import safe_open + from safetensors.torch import save_file + + _is_fp16_available = is_torch_npu_available() or is_torch_cuda_available() try: _is_bf16_available = is_torch_bf16_gpu_available() @@ -128,9 +134,6 @@ def fix_valuehead_checkpoint( return if safe_serialization: - from safetensors import safe_open - from safetensors.torch import save_file - path_to_checkpoint = os.path.join(output_dir, SAFE_WEIGHTS_NAME) with safe_open(path_to_checkpoint, framework="pt", device="cpu") as f: state_dict: Dict[str, torch.Tensor] = {key: f.get_tensor(key) for key in f.keys()} diff --git a/tests/data/test_supervised.py b/tests/data/test_supervised.py index a72800d2..9f7b2dbf 100644 --- a/tests/data/test_supervised.py +++ b/tests/data/test_supervised.py @@ -41,7 +41,7 @@ TRAIN_ARGS = { } -@pytest.mark.parametrize("num_samples", [10]) +@pytest.mark.parametrize("num_samples", [16]) def test_supervised(num_samples: int): model_args, data_args, training_args, _, _ = get_train_args(TRAIN_ARGS) tokenizer_module = load_tokenizer(model_args) diff --git a/tests/model/model_utils/test_checkpointing.py b/tests/model/model_utils/test_checkpointing.py new file mode 100644 index 00000000..670e693d --- /dev/null +++ b/tests/model/model_utils/test_checkpointing.py @@ -0,0 +1,74 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os + +import torch + +from llamafactory.extras.misc import get_current_device +from llamafactory.hparams import get_train_args +from llamafactory.model import load_model, load_tokenizer + + +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") + +TRAIN_ARGS = { + "model_name_or_path": TINY_LLAMA, + "stage": "sft", + "do_train": True, + "finetuning_type": "lora", + "lora_target": "all", + "dataset": "llamafactory/tiny-supervised-dataset", + "dataset_dir": "ONLINE", + "template": "llama3", + "cutoff_len": 1024, + "overwrite_cache": True, + "output_dir": "dummy_dir", + "overwrite_output_dir": True, + "fp16": True, +} + + +def test_checkpointing_enable(): + model_args, _, _, finetuning_args, _ = get_train_args({"disable_gradient_checkpointing": False, **TRAIN_ARGS}) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + for module in filter(lambda m: hasattr(m, "gradient_checkpointing"), model.modules()): + assert getattr(module, "gradient_checkpointing") is True + + +def test_checkpointing_disable(): + model_args, _, _, finetuning_args, _ = get_train_args({"disable_gradient_checkpointing": True, **TRAIN_ARGS}) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + for module in filter(lambda m: hasattr(m, "gradient_checkpointing"), model.modules()): + assert getattr(module, "gradient_checkpointing") is False + + +def test_upcast_layernorm(): + model_args, _, _, finetuning_args, _ = get_train_args({"upcast_layernorm": True, **TRAIN_ARGS}) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + for name, param in model.named_parameters(): + if param.ndim == 1 and "norm" in name: + assert param.dtype == torch.float32 + + +def test_upcast_lmhead_output(): + model_args, _, _, finetuning_args, _ = get_train_args({"upcast_lmhead_output": True, **TRAIN_ARGS}) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + inputs = torch.randn((1, 16), dtype=torch.float16, device=get_current_device()) + outputs: "torch.Tensor" = model.lm_head(inputs) + assert outputs.dtype == torch.float32 diff --git a/tests/model/test_base.py b/tests/model/test_base.py index 462e8cfa..ee0b2886 100644 --- a/tests/model/test_base.py +++ b/tests/model/test_base.py @@ -13,16 +13,21 @@ # limitations under the License. import os +from typing import Dict import torch from transformers import AutoModelForCausalLM +from trl import AutoModelForCausalLMWithValueHead +from llamafactory.extras.misc import get_current_device from llamafactory.hparams import get_infer_args from llamafactory.model import load_model, load_tokenizer TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") +TINY_LLAMA_VALUEHEAD = os.environ.get("TINY_LLAMA_VALUEHEAD", "llamafactory/tiny-random-Llama-3-valuehead") + INFER_ARGS = { "model_name_or_path": TINY_LLAMA, "template": "llama3", @@ -38,9 +43,32 @@ def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module"): assert torch.allclose(state_dict_a[name], state_dict_b[name]) is True +def post_init(self: "AutoModelForCausalLMWithValueHead", state_dict: Dict[str, "torch.Tensor"]): + state_dict = {k[7:]: state_dict[k] for k in state_dict.keys() if k.startswith("v_head.")} + self.v_head.load_state_dict(state_dict, strict=False) + del state_dict + + def test_base(): model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False) - ref_model = AutoModelForCausalLM.from_pretrained(TINY_LLAMA, torch_dtype=model.dtype, device_map=model.device) + + ref_model = AutoModelForCausalLM.from_pretrained( + TINY_LLAMA, torch_dtype=torch.float16, device_map=get_current_device() + ) + compare_model(model, ref_model) + + +def test_valuehead(): + AutoModelForCausalLMWithValueHead.post_init = post_init # patch for CPU test + model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) + tokenizer_module = load_tokenizer(model_args) + model = load_model( + tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False, add_valuehead=True + ) + + ref_model = AutoModelForCausalLMWithValueHead.from_pretrained( + TINY_LLAMA_VALUEHEAD, torch_dtype=torch.float16, device_map=get_current_device() + ) compare_model(model, ref_model) diff --git a/tests/model/test_freeze.py b/tests/model/test_freeze.py index ac5a023c..5f478af6 100644 --- a/tests/model/test_freeze.py +++ b/tests/model/test_freeze.py @@ -49,6 +49,7 @@ def test_freeze_train_all_modules(): model_args, _, _, finetuning_args, _ = get_train_args({"freeze_trainable_layers": 1, **TRAIN_ARGS}) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + for name, param in model.named_parameters(): if name.startswith("model.layers.1."): assert param.requires_grad is True @@ -64,6 +65,7 @@ def test_freeze_train_extra_modules(): ) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + for name, param in model.named_parameters(): if name.startswith("model.layers.1.") or any(module in name for module in ["embed_tokens", "lm_head"]): assert param.requires_grad is True @@ -77,6 +79,7 @@ def test_freeze_inference(): model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False) + for param in model.parameters(): assert param.requires_grad is False assert param.dtype == torch.float16 diff --git a/tests/model/test_full.py b/tests/model/test_full.py index bcd6480f..0a6e0743 100644 --- a/tests/model/test_full.py +++ b/tests/model/test_full.py @@ -49,6 +49,7 @@ def test_full_train(): model_args, _, _, finetuning_args, _ = get_train_args(TRAIN_ARGS) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + for param in model.parameters(): assert param.requires_grad is True assert param.dtype == torch.float32 @@ -58,6 +59,7 @@ def test_full_inference(): model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False) + for param in model.parameters(): assert param.requires_grad is False assert param.dtype == torch.float16 diff --git a/tests/model/test_lora.py b/tests/model/test_lora.py index e49c026c..4923c8ad 100644 --- a/tests/model/test_lora.py +++ b/tests/model/test_lora.py @@ -18,7 +18,9 @@ from typing import Sequence import torch from peft import LoraModel, PeftModel from transformers import AutoModelForCausalLM +from trl import AutoModelForCausalLMWithValueHead +from llamafactory.extras.misc import get_current_device from llamafactory.hparams import get_infer_args, get_train_args from llamafactory.model import load_model, load_tokenizer @@ -27,6 +29,8 @@ TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") TINY_LLAMA_ADAPTER = os.environ.get("TINY_LLAMA_ADAPTER", "llamafactory/tiny-random-Llama-3-lora") +TINY_LLAMA_VALUEHEAD = os.environ.get("TINY_LLAMA_VALUEHEAD", "llamafactory/tiny-random-Llama-3-valuehead") + TRAIN_ARGS = { "model_name_or_path": TINY_LLAMA, "stage": "sft", @@ -67,10 +71,29 @@ def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module", diff_k assert torch.allclose(state_dict_a[name], state_dict_b[name]) is True +def test_lora_train_qv_modules(): + model_args, _, _, finetuning_args, _ = get_train_args({"lora_target": "q_proj,v_proj", **TRAIN_ARGS}) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + + linear_modules = set() + for name, param in model.named_parameters(): + if any(module in name for module in ["lora_A", "lora_B"]): + linear_modules.add(name.split(".lora_", maxsplit=1)[0].split(".")[-1]) + assert param.requires_grad is True + assert param.dtype == torch.float32 + else: + assert param.requires_grad is False + assert param.dtype == torch.float16 + + assert linear_modules == {"q_proj", "v_proj"} + + def test_lora_train_all_modules(): model_args, _, _, finetuning_args, _ = get_train_args({"lora_target": "all", **TRAIN_ARGS}) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + linear_modules = set() for name, param in model.named_parameters(): if any(module in name for module in ["lora_A", "lora_B"]): @@ -90,6 +113,7 @@ def test_lora_train_extra_modules(): ) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + extra_modules = set() for name, param in model.named_parameters(): if any(module in name for module in ["lora_A", "lora_B"]): @@ -113,7 +137,9 @@ def test_lora_train_old_adapters(): tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) - base_model = AutoModelForCausalLM.from_pretrained(TINY_LLAMA, torch_dtype=model.dtype, device_map=model.device) + base_model = AutoModelForCausalLM.from_pretrained( + TINY_LLAMA, torch_dtype=torch.float16, device_map=get_current_device() + ) ref_model = PeftModel.from_pretrained(base_model, TINY_LLAMA_ADAPTER, is_trainable=True) for param in filter(lambda p: p.requires_grad, ref_model.parameters()): param.data = param.data.to(torch.float32) @@ -128,7 +154,9 @@ def test_lora_train_new_adapters(): tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) - base_model = AutoModelForCausalLM.from_pretrained(TINY_LLAMA, torch_dtype=model.dtype, device_map=model.device) + base_model = AutoModelForCausalLM.from_pretrained( + TINY_LLAMA, torch_dtype=torch.float16, device_map=get_current_device() + ) ref_model = PeftModel.from_pretrained(base_model, TINY_LLAMA_ADAPTER, is_trainable=True) for param in filter(lambda p: p.requires_grad, ref_model.parameters()): param.data = param.data.to(torch.float32) @@ -138,17 +166,31 @@ def test_lora_train_new_adapters(): ) +def test_lora_train_valuehead(): + model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) + tokenizer_module = load_tokenizer(model_args) + model = load_model( + tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True, add_valuehead=True + ) + + ref_model: "AutoModelForCausalLMWithValueHead" = AutoModelForCausalLMWithValueHead.from_pretrained( + TINY_LLAMA_VALUEHEAD, torch_dtype=torch.float16, device_map=get_current_device() + ) + state_dict = model.state_dict() + ref_state_dict = ref_model.state_dict() + + assert torch.allclose(state_dict["v_head.summary.weight"], ref_state_dict["v_head.summary.weight"]) + assert torch.allclose(state_dict["v_head.summary.bias"], ref_state_dict["v_head.summary.bias"]) + + def test_lora_inference(): model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False) - base_model = AutoModelForCausalLM.from_pretrained(TINY_LLAMA, torch_dtype=model.dtype, device_map=model.device) + base_model = AutoModelForCausalLM.from_pretrained( + TINY_LLAMA, torch_dtype=torch.float16, device_map=get_current_device() + ) ref_model: "LoraModel" = PeftModel.from_pretrained(base_model, TINY_LLAMA_ADAPTER) ref_model = ref_model.merge_and_unload() compare_model(model, ref_model) - - for name, param in model.named_parameters(): - assert param.requires_grad is False - assert param.dtype == torch.float16 - assert "lora" not in name From 80a9e6bf94cf14fa63e6b6cdf7e1ce13722c8b5e Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sat, 15 Jun 2024 20:06:17 +0800 Subject: [PATCH 160/169] use fixture --- src/llamafactory/hparams/model_args.py | 2 +- tests/model/test_base.py | 15 ++++++++++----- tests/model/test_lora.py | 14 +++++++++++++- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 0a91f0fa..53bdbdf2 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -163,7 +163,7 @@ class ModelArguments: ) infer_dtype: Literal["auto", "float16", "bfloat16", "float32"] = field( default="auto", - metadata={"help": "Data type for model weights and activations at inference."} + metadata={"help": "Data type for model weights and activations at inference."}, ) hf_hub_token: Optional[str] = field( default=None, diff --git a/tests/model/test_base.py b/tests/model/test_base.py index ee0b2886..2deedde2 100644 --- a/tests/model/test_base.py +++ b/tests/model/test_base.py @@ -15,6 +15,7 @@ import os from typing import Dict +import pytest import torch from transformers import AutoModelForCausalLM from trl import AutoModelForCausalLMWithValueHead @@ -43,10 +44,14 @@ def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module"): assert torch.allclose(state_dict_a[name], state_dict_b[name]) is True -def post_init(self: "AutoModelForCausalLMWithValueHead", state_dict: Dict[str, "torch.Tensor"]): - state_dict = {k[7:]: state_dict[k] for k in state_dict.keys() if k.startswith("v_head.")} - self.v_head.load_state_dict(state_dict, strict=False) - del state_dict +@pytest.fixture +def fix_valuehead_cpu_loading(): + def post_init(self: "AutoModelForCausalLMWithValueHead", state_dict: Dict[str, "torch.Tensor"]): + state_dict = {k[7:]: state_dict[k] for k in state_dict.keys() if k.startswith("v_head.")} + self.v_head.load_state_dict(state_dict, strict=False) + del state_dict + + AutoModelForCausalLMWithValueHead.post_init = post_init def test_base(): @@ -60,8 +65,8 @@ def test_base(): compare_model(model, ref_model) +@pytest.mark.usefixtures("fix_valuehead_cpu_loading") def test_valuehead(): - AutoModelForCausalLMWithValueHead.post_init = post_init # patch for CPU test model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) tokenizer_module = load_tokenizer(model_args) model = load_model( diff --git a/tests/model/test_lora.py b/tests/model/test_lora.py index 4923c8ad..fe032332 100644 --- a/tests/model/test_lora.py +++ b/tests/model/test_lora.py @@ -13,8 +13,9 @@ # limitations under the License. import os -from typing import Sequence +from typing import Dict, Sequence +import pytest import torch from peft import LoraModel, PeftModel from transformers import AutoModelForCausalLM @@ -71,6 +72,16 @@ def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module", diff_k assert torch.allclose(state_dict_a[name], state_dict_b[name]) is True +@pytest.fixture +def fix_valuehead_cpu_loading(): + def post_init(self: "AutoModelForCausalLMWithValueHead", state_dict: Dict[str, "torch.Tensor"]): + state_dict = {k[7:]: state_dict[k] for k in state_dict.keys() if k.startswith("v_head.")} + self.v_head.load_state_dict(state_dict, strict=False) + del state_dict + + AutoModelForCausalLMWithValueHead.post_init = post_init + + def test_lora_train_qv_modules(): model_args, _, _, finetuning_args, _ = get_train_args({"lora_target": "q_proj,v_proj", **TRAIN_ARGS}) tokenizer_module = load_tokenizer(model_args) @@ -166,6 +177,7 @@ def test_lora_train_new_adapters(): ) +@pytest.mark.usefixtures("fix_valuehead_cpu_loading") def test_lora_train_valuehead(): model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) tokenizer_module = load_tokenizer(model_args) From 38b6b0f52edeb8ba45aa03b415b3c0c1b0e0c1e4 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sun, 16 Jun 2024 01:06:41 +0800 Subject: [PATCH 161/169] tiny fix --- scripts/cal_flops.py | 2 +- scripts/cal_lr.py | 2 +- scripts/llama_pro.py | 2 +- src/llamafactory/data/processors/pretrain.py | 2 +- src/llamafactory/eval/evaluator.py | 2 +- src/llamafactory/extras/packages.py | 2 +- src/llamafactory/hparams/data_args.py | 2 +- src/llamafactory/model/model_utils/checkpointing.py | 2 +- src/llamafactory/model/model_utils/longlora.py | 6 ++++-- src/llamafactory/model/model_utils/quantization.py | 2 +- src/llamafactory/model/model_utils/visual.py | 2 +- src/llamafactory/train/dpo/workflow.py | 2 +- src/llamafactory/train/kto/trainer.py | 4 ++-- src/llamafactory/train/kto/workflow.py | 2 +- src/llamafactory/train/ppo/trainer.py | 2 +- src/llamafactory/train/ppo/workflow.py | 2 +- src/llamafactory/train/pt/workflow.py | 2 +- src/llamafactory/train/rm/trainer.py | 4 ++-- src/llamafactory/train/rm/workflow.py | 2 +- src/llamafactory/train/sft/metric.py | 2 +- src/llamafactory/train/sft/workflow.py | 2 +- tests/model/test_base.py | 2 +- 22 files changed, 27 insertions(+), 25 deletions(-) diff --git a/scripts/cal_flops.py b/scripts/cal_flops.py index 627b5534..32526d89 100644 --- a/scripts/cal_flops.py +++ b/scripts/cal_flops.py @@ -1,7 +1,7 @@ # coding=utf-8 # Copyright 2024 Microsoft Corporation and the LlamaFactory team. # -# This code is inspired by Microsoft's DeepSpeed library. +# This code is inspired by the Microsoft's DeepSpeed library. # https://www.deepspeed.ai/tutorials/flops-profiler/ # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/scripts/cal_lr.py b/scripts/cal_lr.py index ff21d27c..ad6992cb 100644 --- a/scripts/cal_lr.py +++ b/scripts/cal_lr.py @@ -1,7 +1,7 @@ # coding=utf-8 # Copyright 2024 imoneoi and the LlamaFactory team. # -# This code is inspired by imoneoi's OpenChat library. +# This code is inspired by the imoneoi's OpenChat library. # https://github.com/imoneoi/openchat/blob/3.6.0/ochat/training_deepspeed/train.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/scripts/llama_pro.py b/scripts/llama_pro.py index f315335a..395375ef 100644 --- a/scripts/llama_pro.py +++ b/scripts/llama_pro.py @@ -1,7 +1,7 @@ # coding=utf-8 # Copyright 2024 Tencent Inc. and the LlamaFactory team. # -# This code is inspired by Tencent's LLaMA-Pro library. +# This code is inspired by the Tencent's LLaMA-Pro library. # https://github.com/TencentARC/LLaMA-Pro/blob/main/scripts/block_expansion.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/data/processors/pretrain.py b/src/llamafactory/data/processors/pretrain.py index fb4c840c..67d6009b 100644 --- a/src/llamafactory/data/processors/pretrain.py +++ b/src/llamafactory/data/processors/pretrain.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's transformers library. +# This code is inspired by the HuggingFace's transformers library. # https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/language-modeling/run_clm.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/eval/evaluator.py b/src/llamafactory/eval/evaluator.py index bbd7a44b..d3140793 100644 --- a/src/llamafactory/eval/evaluator.py +++ b/src/llamafactory/eval/evaluator.py @@ -1,6 +1,6 @@ # Copyright 2024 the LlamaFactory team. # -# This code is inspired by Dan's test library. +# This code is inspired by the Dan's test library. # https://github.com/hendrycks/test/blob/master/evaluate_flan.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/extras/packages.py b/src/llamafactory/extras/packages.py index 35f546ab..0a84a293 100644 --- a/src/llamafactory/extras/packages.py +++ b/src/llamafactory/extras/packages.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's transformers library. +# This code is inspired by the HuggingFace's transformers library. # https://github.com/huggingface/transformers/blob/v4.40.0/src/transformers/utils/import_utils.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/hparams/data_args.py b/src/llamafactory/hparams/data_args.py index 95284766..39290e21 100644 --- a/src/llamafactory/hparams/data_args.py +++ b/src/llamafactory/hparams/data_args.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's transformers library. +# This code is inspired by the HuggingFace's transformers library. # https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/language-modeling/run_clm.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/model/model_utils/checkpointing.py b/src/llamafactory/model/model_utils/checkpointing.py index e4e84b12..f5314125 100644 --- a/src/llamafactory/model/model_utils/checkpointing.py +++ b/src/llamafactory/model/model_utils/checkpointing.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's Transformers and PEFT library. +# This code is inspired by the HuggingFace's Transformers and PEFT library. # https://github.com/huggingface/transformers/blob/v4.40.0/src/transformers/modeling_utils.py # https://github.com/huggingface/peft/blob/v0.10.0/src/peft/utils/other.py # diff --git a/src/llamafactory/model/model_utils/longlora.py b/src/llamafactory/model/model_utils/longlora.py index 7af43dcf..af30bd50 100644 --- a/src/llamafactory/model/model_utils/longlora.py +++ b/src/llamafactory/model/model_utils/longlora.py @@ -1,7 +1,9 @@ -# Copyright 2024 EleutherAI, HuggingFace Inc., and the LlamaFactory team. +# Copyright 2024 EleutherAI, HuggingFace Inc., Yukang Chen, and the LlamaFactory team. # -# This code is based on the EleutherAI's GPT-NeoX and HuggingFace's Transformers libraries. +# This code is based on the EleutherAI's GPT-NeoX and the HuggingFace's Transformers libraries. # https://github.com/huggingface/transformers/blob/v4.40.0/src/transformers/models/llama/modeling_llama.py +# This code is also inspired by the original LongLoRA implementation. +# https://github.com/dvlab-research/LongLoRA/blob/main/llama_attn_replace.py # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/src/llamafactory/model/model_utils/quantization.py b/src/llamafactory/model/model_utils/quantization.py index 9e6b9da4..0a0fca34 100644 --- a/src/llamafactory/model/model_utils/quantization.py +++ b/src/llamafactory/model/model_utils/quantization.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's Optimum library. +# This code is inspired by the HuggingFace's Optimum library. # https://github.com/huggingface/optimum/blob/v1.20.0/optimum/gptq/data.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/model/model_utils/visual.py b/src/llamafactory/model/model_utils/visual.py index 37237485..700bf470 100644 --- a/src/llamafactory/model/model_utils/visual.py +++ b/src/llamafactory/model/model_utils/visual.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's TRL library. +# This code is inspired by the HuggingFace's Transformers library. # https://github.com/huggingface/transformers/blob/v4.40.0/src/transformers/models/llava/modeling_llava.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/train/dpo/workflow.py b/src/llamafactory/train/dpo/workflow.py index 8c3c2eb1..431b5285 100644 --- a/src/llamafactory/train/dpo/workflow.py +++ b/src/llamafactory/train/dpo/workflow.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's TRL library. +# This code is inspired by the HuggingFace's TRL library. # https://github.com/huggingface/trl/blob/v0.8.0/examples/scripts/dpo.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/train/kto/trainer.py b/src/llamafactory/train/kto/trainer.py index 6e96fc0c..91d68975 100644 --- a/src/llamafactory/train/kto/trainer.py +++ b/src/llamafactory/train/kto/trainer.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's TRL library. +# This code is inspired by the HuggingFace's TRL library. # https://github.com/huggingface/trl/blob/v0.8.0/trl/trainer/kto_trainer.py # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -114,8 +114,8 @@ class CustomKTOTrainer(KTOTrainer): def _save(self, output_dir: Optional[str] = None, state_dict: Optional[Dict[str, "torch.Tensor"]] = None) -> None: super()._save(output_dir, state_dict) + output_dir = output_dir if output_dir is not None else self.args.output_dir if self.processor is not None: - output_dir = output_dir if output_dir is not None else self.args.output_dir getattr(self.processor, "image_processor").save_pretrained(output_dir) def forward( diff --git a/src/llamafactory/train/kto/workflow.py b/src/llamafactory/train/kto/workflow.py index 8a7af6d4..8182a184 100644 --- a/src/llamafactory/train/kto/workflow.py +++ b/src/llamafactory/train/kto/workflow.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's TRL library. +# This code is inspired by the HuggingFace's TRL library. # https://github.com/huggingface/trl/blob/v0.8.0/examples/scripts/kto.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/train/ppo/trainer.py b/src/llamafactory/train/ppo/trainer.py index 61420f3b..df4a37be 100644 --- a/src/llamafactory/train/ppo/trainer.py +++ b/src/llamafactory/train/ppo/trainer.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's TRL library. +# This code is inspired by the HuggingFace's TRL library. # https://github.com/huggingface/trl/blob/v0.8.0/trl/trainer/ppo_trainer.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/train/ppo/workflow.py b/src/llamafactory/train/ppo/workflow.py index 891d539a..4f4d2820 100644 --- a/src/llamafactory/train/ppo/workflow.py +++ b/src/llamafactory/train/ppo/workflow.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's TRL library. +# This code is inspired by the HuggingFace's TRL library. # https://github.com/huggingface/trl/blob/v0.8.0/examples/scripts/ppo.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/train/pt/workflow.py b/src/llamafactory/train/pt/workflow.py index f1df314e..b84a0e7d 100644 --- a/src/llamafactory/train/pt/workflow.py +++ b/src/llamafactory/train/pt/workflow.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's transformers library. +# This code is inspired by the HuggingFace's transformers library. # https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/language-modeling/run_clm.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/train/rm/trainer.py b/src/llamafactory/train/rm/trainer.py index 14695d7d..7f91e5f5 100644 --- a/src/llamafactory/train/rm/trainer.py +++ b/src/llamafactory/train/rm/trainer.py @@ -1,6 +1,6 @@ # Copyright 2024 the LlamaFactory team. # -# This code is inspired by CarperAI's trlx library. +# This code is inspired by the CarperAI's trlx library. # https://github.com/CarperAI/trlx/blob/v0.7.0/examples/summarize_rlhf/reward_model/reward_model.py # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -89,8 +89,8 @@ class PairwiseTrainer(Trainer): def _save(self, output_dir: Optional[str] = None, state_dict: Optional[Dict[str, "torch.Tensor"]] = None) -> None: super()._save(output_dir, state_dict) + output_dir = output_dir if output_dir is not None else self.args.output_dir if self.processor is not None: - output_dir = output_dir if output_dir is not None else self.args.output_dir getattr(self.processor, "image_processor").save_pretrained(output_dir) def compute_loss( diff --git a/src/llamafactory/train/rm/workflow.py b/src/llamafactory/train/rm/workflow.py index 75c0a2bf..6f24e964 100644 --- a/src/llamafactory/train/rm/workflow.py +++ b/src/llamafactory/train/rm/workflow.py @@ -1,6 +1,6 @@ # Copyright 2024 the LlamaFactory team. # -# This code is inspired by CarperAI's trlx library. +# This code is inspired by the CarperAI's trlx library. # https://github.com/CarperAI/trlx/blob/v0.7.0/examples/summarize_rlhf/reward_model/train_reward_model_gptj.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/src/llamafactory/train/sft/metric.py b/src/llamafactory/train/sft/metric.py index d2147c22..95bfcb69 100644 --- a/src/llamafactory/train/sft/metric.py +++ b/src/llamafactory/train/sft/metric.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc., THUDM, and the LlamaFactory team. # -# This code is inspired by HuggingFace's transformers library and THUDM's ChatGLM implementation. +# This code is inspired by the HuggingFace's transformers library and the THUDM's ChatGLM implementation. # https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/summarization/run_summarization.py # https://github.com/THUDM/ChatGLM-6B/blob/main/ptuning/main.py # diff --git a/src/llamafactory/train/sft/workflow.py b/src/llamafactory/train/sft/workflow.py index dfc71cfb..885bc7ac 100644 --- a/src/llamafactory/train/sft/workflow.py +++ b/src/llamafactory/train/sft/workflow.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's transformers library. +# This code is inspired by the HuggingFace's transformers library. # https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/summarization/run_summarization.py # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/tests/model/test_base.py b/tests/model/test_base.py index 2deedde2..954492ef 100644 --- a/tests/model/test_base.py +++ b/tests/model/test_base.py @@ -41,7 +41,7 @@ def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module"): state_dict_b = model_b.state_dict() assert set(state_dict_a.keys()) == set(state_dict_b.keys()) for name in state_dict_a.keys(): - assert torch.allclose(state_dict_a[name], state_dict_b[name]) is True + assert torch.allclose(state_dict_a[name], state_dict_b[name]) @pytest.fixture From 8c1046d78ac6c8f9429b73617e35e1eccb35138f Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sun, 16 Jun 2024 01:08:12 +0800 Subject: [PATCH 162/169] support pissa --- README.md | 6 +- README_zh.md | 6 +- examples/README.md | 6 ++ examples/README_zh.md | 6 ++ examples/extras/pissa/llama3_lora_sft.yaml | 42 ++++++++++ scripts/loftq_init.py | 72 +++++++---------- scripts/pissa_init.py | 79 ++++++++++++++++++ src/llamafactory/hparams/finetuning_args.py | 20 ++++- src/llamafactory/hparams/model_args.py | 8 +- src/llamafactory/hparams/parser.py | 5 +- src/llamafactory/model/adapter.py | 25 ++++-- src/llamafactory/train/dpo/trainer.py | 13 ++- src/llamafactory/train/pt/trainer.py | 12 ++- src/llamafactory/train/sft/trainer.py | 13 ++- src/llamafactory/train/trainer_utils.py | 54 ++++++++++++- src/llamafactory/webui/components/train.py | 9 ++- src/llamafactory/webui/locales.py | 14 ++++ src/llamafactory/webui/runner.py | 2 + tests/model/test_pissa.py | 90 +++++++++++++++++++++ 19 files changed, 406 insertions(+), 76 deletions(-) create mode 100644 examples/extras/pissa/llama3_lora_sft.yaml create mode 100644 scripts/pissa_init.py create mode 100644 tests/model/test_pissa.py diff --git a/README.md b/README.md index cae79694..cb9a7222 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ Choose your path: - **Various models**: LLaMA, LLaVA, Mistral, Mixtral-MoE, Qwen, Yi, Gemma, Baichuan, ChatGLM, Phi, etc. - **Integrated methods**: (Continuous) pre-training, (multimodal) supervised fine-tuning, reward modeling, PPO, DPO, KTO, ORPO, etc. - **Scalable resources**: 32-bit full-tuning, 16-bit freeze-tuning, 16-bit LoRA and 2/4/8-bit QLoRA via AQLM/AWQ/GPTQ/LLM.int8. -- **Advanced algorithms**: GaLore, BAdam, DoRA, LongLoRA, LLaMA Pro, Mixture-of-Depths, LoRA+, LoftQ and Agent tuning. +- **Advanced algorithms**: GaLore, BAdam, DoRA, LongLoRA, LLaMA Pro, Mixture-of-Depths, LoRA+, LoftQ, PiSSA and Agent tuning. - **Practical tricks**: FlashAttention-2, Unsloth, RoPE scaling, NEFTune and rsLoRA. - **Experiment monitors**: LlamaBoard, TensorBoard, Wandb, MLflow, etc. - **Faster inference**: OpenAI-style API, Gradio UI and CLI with vLLM worker. @@ -71,9 +71,9 @@ Compared to ChatGLM's [P-Tuning](https://github.com/THUDM/ChatGLM2-6B/tree/main/ ## Changelog -[24/06/07] We supported fine-tuning the **[Qwen-2](https://qwenlm.github.io/blog/qwen2/)** series models. +[24/06/16] We support **[PiSSA](https://arxiv.org/abs/2404.02948)** algorithm. See [examples](examples/README.md) for usage. -[24/06/05] We supported fine-tuning the **[GLM-4-9B/GLM-4-9B-Chat](https://github.com/THUDM/GLM-4)** models. +[24/06/07] We supported fine-tuning the **[Qwen2](https://qwenlm.github.io/blog/qwen2/)** and **[GLM-4](https://github.com/THUDM/GLM-4)** models. [24/05/26] We supported **[SimPO](https://arxiv.org/abs/2405.14734)** algorithm for preference learning. See [examples](examples/README.md) for usage. diff --git a/README_zh.md b/README_zh.md index af3ff8f0..5c005f30 100644 --- a/README_zh.md +++ b/README_zh.md @@ -49,7 +49,7 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd - **多种模型**:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。 - **集成方法**:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。 - **多种精度**:32 比特全参数微调、16 比特冻结微调、16 比特 LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8 的 2/4/8 比特 QLoRA 微调。 -- **先进算法**:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 Agent 微调。 +- **先进算法**:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调。 - **实用技巧**:FlashAttention-2、Unsloth、RoPE scaling、NEFTune 和 rsLoRA。 - **实验监控**:LlamaBoard、TensorBoard、Wandb、MLflow 等等。 - **极速推理**:基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。 @@ -71,9 +71,9 @@ https://github.com/hiyouga/LLaMA-Factory/assets/16256802/ec36a9dd-37f4-4f72-81bd ## 更新日志 -[24/06/07] 我们支持了 **[Qwen-2](https://qwenlm.github.io/blog/qwen2/)** 系列模型的微调。 +[24/06/16] 我们支持了 **[PiSSA](https://arxiv.org/abs/2404.02948)** 算法。详细用法请参照 [examples](examples/README_zh.md)。 -[24/06/05] 我们支持了 **[GLM-4-9B/GLM-4-9B-Chat](https://github.com/THUDM/GLM-4)** 模型的微调。 +[24/06/07] 我们支持了 **[Qwen2](https://qwenlm.github.io/blog/qwen2/)** 和 **[GLM-4](https://github.com/THUDM/GLM-4)** 模型的微调。 [24/05/26] 我们支持了 **[SimPO](https://arxiv.org/abs/2405.14734)** 偏好对齐算法。详细用法请参照 [examples](examples/README_zh.md)。 diff --git a/examples/README.md b/examples/README.md index a6d78936..902d26b1 100644 --- a/examples/README.md +++ b/examples/README.md @@ -213,3 +213,9 @@ llamafactory-cli train examples/extras/llama_pro/llama3_freeze_sft.yaml ```bash bash examples/extras/fsdp_qlora/single_node.sh ``` + +#### PiSSA Fine-Tuning + +```bash +llamafactory-cli train examples/extras/pissa/llama3_lora_sft.yaml +``` diff --git a/examples/README_zh.md b/examples/README_zh.md index b6168a95..586e498c 100644 --- a/examples/README_zh.md +++ b/examples/README_zh.md @@ -213,3 +213,9 @@ llamafactory-cli train examples/extras/llama_pro/llama3_freeze_sft.yaml ```bash bash examples/extras/fsdp_qlora/single_node.sh ``` + +#### PiSSA 微调 + +```bash +llamafactory-cli train examples/extras/pissa/llama3_lora_sft.yaml +``` diff --git a/examples/extras/pissa/llama3_lora_sft.yaml b/examples/extras/pissa/llama3_lora_sft.yaml new file mode 100644 index 00000000..fd4b9f1d --- /dev/null +++ b/examples/extras/pissa/llama3_lora_sft.yaml @@ -0,0 +1,42 @@ +### model +model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct + +### method +stage: sft +do_train: true +finetuning_type: lora +lora_target: all +pissa_init: true +pissa_iter: 4 +pissa_convert: true + +### dataset +dataset: identity,alpaca_en_demo +template: llama3 +cutoff_len: 1024 +max_samples: 1000 +overwrite_cache: true +preprocessing_num_workers: 16 + +### output +output_dir: saves/llama3-8b/lora/sft +logging_steps: 10 +save_steps: 500 +plot_loss: true +overwrite_output_dir: true + +### train +per_device_train_batch_size: 1 +gradient_accumulation_steps: 8 +learning_rate: 1.0e-4 +num_train_epochs: 3.0 +lr_scheduler_type: cosine +warmup_ratio: 0.1 +fp16: true +ddp_timeout: 180000000 + +### eval +val_size: 0.1 +per_device_eval_batch_size: 1 +eval_strategy: steps +eval_steps: 500 diff --git a/scripts/loftq_init.py b/scripts/loftq_init.py index 159dea06..556f342c 100644 --- a/scripts/loftq_init.py +++ b/scripts/loftq_init.py @@ -1,7 +1,7 @@ # coding=utf-8 # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's PEFT library. +# This code is based on the HuggingFace's PEFT library. # https://github.com/huggingface/peft/blob/v0.10.0/examples/loftq_finetuning/quantize_save_load.py # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,11 +17,9 @@ # limitations under the License. import os -from typing import TYPE_CHECKING, Optional +from typing import TYPE_CHECKING import fire -import torch -import torch.nn as nn from peft import LoftQConfig, LoraConfig, TaskType, get_peft_model from transformers import AutoModelForCausalLM, AutoTokenizer @@ -30,41 +28,20 @@ if TYPE_CHECKING: from transformers import PreTrainedModel -class Shell(nn.Module): - def __init__(self, weight: torch.Tensor, bias: Optional[torch.Tensor] = None): - super().__init__() - self.weight = nn.Parameter(weight, requires_grad=False) - if bias is not None: - self.bias = nn.Parameter(bias, requires_grad=False) - - -def unwrap_model(model: nn.Module, pattern=".base_layer") -> None: - for name in {k.split(pattern)[0] for k, _ in model.named_modules() if pattern in k}: - parent_name = ".".join(name.split(".")[:-1]) - child_name = name.split(".")[-1] - parent_module = model.get_submodule(parent_name) - child_module = getattr(parent_module, child_name) - base_layer = getattr(child_module, "base_layer") - weight = getattr(base_layer, "weight", None) - bias = getattr(base_layer, "bias", None) - setattr(parent_module, child_name, Shell(weight, bias)) - - print("Model unwrapped.") - - def quantize_loftq( model_name_or_path: str, - save_dir: str, - loftq_bits: Optional[int] = 4, - loftq_iter: Optional[int] = 1, - lora_alpha: Optional[int] = None, - lora_rank: Optional[int] = 16, - lora_target: Optional[str] = "q_proj,v_proj", - save_safetensors: Optional[bool] = False, + output_dir: str, + loftq_bits: int = 4, + loftq_iter: int = 4, + lora_alpha: int = None, + lora_rank: int = 16, + lora_dropout: float = 0, + lora_target: str = "q_proj,v_proj", + save_safetensors: bool = True, ): r""" Initializes LoRA weights with LoRA-fine-tuning-aware Quantization (LoftQ) - Usage: python loftq_init.py --model_name_or_path path_to_model --save_dir output_dir + Usage: python loftq_init.py --model_name_or_path path_to_model --output_dir output_dir """ tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype="auto") @@ -74,25 +51,34 @@ def quantize_loftq( inference_mode=True, r=lora_rank, lora_alpha=lora_alpha if lora_alpha is not None else lora_rank * 2, - lora_dropout=0.1, + lora_dropout=lora_dropout, target_modules=[name.strip() for name in lora_target.split(",")], init_lora_weights="loftq", loftq_config=loftq_config, ) # Init LoftQ model - lora_model = get_peft_model(model, lora_config) - base_model: "PreTrainedModel" = lora_model.get_base_model() + print("Initializing LoftQ weights, it may be take several minutes, wait patiently.") + peft_model = get_peft_model(model, lora_config) + loftq_dir = os.path.join(output_dir, "loftq_init") # Save LoftQ model - setattr(lora_model.base_model.peft_config["default"], "base_model_name_or_path", save_dir) - setattr(lora_model.base_model.peft_config["default"], "init_lora_weights", True) - lora_model.save_pretrained(os.path.join(save_dir, "adapters"), safe_serialization=save_safetensors) + setattr(peft_model.peft_config["default"], "base_model_name_or_path", output_dir) + setattr(peft_model.peft_config["default"], "init_lora_weights", True) # don't apply loftq again + peft_model.save_pretrained(loftq_dir, safe_serialization=save_safetensors) + print("Adapter weights saved in {}".format(loftq_dir)) # Save base model - unwrap_model(base_model) - base_model.save_pretrained(save_dir, safe_serialization=save_safetensors) - tokenizer.save_pretrained(save_dir) + base_model: "PreTrainedModel" = peft_model.unload() + base_model.save_pretrained(output_dir, safe_serialization=save_safetensors) + tokenizer.save_pretrained(output_dir) + print("Model weights saved in {}".format(output_dir)) + + print("Fine-tune this model with:") + print("model_name_or_path: {}".format(output_dir)) + print("adapter_name_or_path: {}".format(loftq_dir)) + print("finetuning_type: lora") + print("quantization_bit: {}".format(loftq_bits)) if __name__ == "__main__": diff --git a/scripts/pissa_init.py b/scripts/pissa_init.py new file mode 100644 index 00000000..1b673c45 --- /dev/null +++ b/scripts/pissa_init.py @@ -0,0 +1,79 @@ +# coding=utf-8 +# Copyright 2024 HuggingFace Inc. and the LlamaFactory team. +# +# This code is based on the HuggingFace's PEFT library. +# https://github.com/huggingface/peft/blob/v0.11.0/examples/pissa_finetuning/preprocess.py +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from typing import TYPE_CHECKING + +import fire +from peft import LoraConfig, TaskType, get_peft_model +from transformers import AutoModelForCausalLM, AutoTokenizer + + +if TYPE_CHECKING: + from transformers import PreTrainedModel + + +def quantize_pissa( + model_name_or_path: str, + output_dir: str, + pissa_iter: int = 4, + lora_alpha: int = None, + lora_rank: int = 16, + lora_dropout: float = 0, + lora_target: str = "q_proj,v_proj", + save_safetensors: bool = True, +): + r""" + Initializes LoRA weights with Principal Singular values and Singular vectors Adaptation (PiSSA) + Usage: python pissa_init.py --model_name_or_path path_to_model --output_dir output_dir + """ + tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True) + model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype="auto") + lora_config = LoraConfig( + task_type=TaskType.CAUSAL_LM, + r=lora_rank, + lora_alpha=lora_alpha if lora_alpha is not None else lora_rank * 2, + lora_dropout=lora_dropout, + target_modules=[name.strip() for name in lora_target.split(",")], + init_lora_weights="pissa" if pissa_iter == -1 else "pissa_niter_{}".format(pissa_iter) + ) + + # Init PiSSA model + peft_model = get_peft_model(model, lora_config) + pissa_dir = os.path.join(output_dir, "pissa_init") + + # Save PiSSA model + setattr(peft_model.peft_config["default"], "init_lora_weights", True) # don't apply pissa again + peft_model.save_pretrained(pissa_dir, safe_serialization=save_safetensors) + print("Adapter weights saved in {}".format(pissa_dir)) + + # Save base model + base_model: "PreTrainedModel" = peft_model.unload() + base_model.save_pretrained(output_dir, safe_serialization=save_safetensors) + tokenizer.save_pretrained(output_dir) + print("Model weights saved in {}".format(output_dir)) + + print("Fine-tune this model with:") + print("model_name_or_path: {}".format(output_dir)) + print("adapter_name_or_path: {}".format(pissa_dir)) + print("finetuning_type: lora") + print("pissa_convert: true") + + +if __name__ == "__main__": + fire.Fire(quantize_pissa) diff --git a/src/llamafactory/hparams/finetuning_args.py b/src/llamafactory/hparams/finetuning_args.py index 52dc299e..1ef46eca 100644 --- a/src/llamafactory/hparams/finetuning_args.py +++ b/src/llamafactory/hparams/finetuning_args.py @@ -108,6 +108,18 @@ class LoraArguments: default=False, metadata={"help": "Whether or not to use the weight-decomposed lora method (DoRA)."}, ) + pissa_init: bool = field( + default=False, + metadata={"help": "Whether or not to initialize a PiSSA adapter."}, + ) + pissa_iter: int = field( + default=4, + metadata={"help": "The number of iteration steps performed by FSVD in PiSSA. Use -1 to disable it."}, + ) + pissa_convert: bool = field( + default=False, + metadata={"help": "Whether or not to convert the PiSSA adapter to a normal LoRA adapter."}, + ) create_new_adapter: bool = field( default=False, metadata={"help": "Whether or not to create a new adapter with randomly initialized weight."}, @@ -340,7 +352,7 @@ class FinetuningArguments(FreezeArguments, LoraArguments, RLHFArguments, GaloreA self.additional_target: Optional[List[str]] = split_arg(self.additional_target) self.galore_target: List[str] = split_arg(self.galore_target) self.freeze_vision_tower = self.freeze_vision_tower or self.train_mm_proj_only - self.use_ref_model = self.pref_loss not in ["orpo", "simpo"] + self.use_ref_model = (self.stage == "dpo" and self.pref_loss not in ["orpo", "simpo"]) assert self.finetuning_type in ["lora", "freeze", "full"], "Invalid fine-tuning method." assert self.ref_model_quantization_bit in [None, 8, 4], "We only accept 4-bit or 8-bit quantization." @@ -367,5 +379,11 @@ class FinetuningArguments(FreezeArguments, LoraArguments, RLHFArguments, GaloreA if self.loraplus_lr_ratio is not None and self.finetuning_type != "lora": raise ValueError("`loraplus_lr_ratio` is only valid for LoRA training.") + if self.pissa_convert and self.finetuning_type != "lora": + raise ValueError("`pissa_convert` is only valid for LoRA training.") + + if self.pissa_convert and (self.stage in ["rm", "ppo", "kto"] or self.use_ref_model): + raise ValueError("Cannot use PiSSA for current training stage.") + if self.train_mm_proj_only and self.finetuning_type != "full": raise ValueError("`train_mm_proj_only` is only valid for full training.") diff --git a/src/llamafactory/hparams/model_args.py b/src/llamafactory/hparams/model_args.py index 53bdbdf2..996e9130 100644 --- a/src/llamafactory/hparams/model_args.py +++ b/src/llamafactory/hparams/model_args.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's transformers library. +# This code is inspired by the HuggingFace's transformers library. # https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/language-modeling/run_clm.py # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -45,6 +45,10 @@ class ModelArguments: ) }, ) + adapter_folder: Optional[str] = field( + default=None, + metadata={"help": "The folder containing the adapter weights to load."}, + ) cache_dir: Optional[str] = field( default=None, metadata={"help": "Where to store the pre-trained models downloaded from huggingface.co or modelscope.cn."}, @@ -150,7 +154,7 @@ class ModelArguments: metadata={"help": "Whether or not to disable CUDA graph in the vLLM engine."}, ) vllm_max_lora_rank: int = field( - default=8, + default=32, metadata={"help": "Maximum rank of all LoRAs in the vLLM engine."}, ) offload_folder: str = field( diff --git a/src/llamafactory/hparams/parser.py b/src/llamafactory/hparams/parser.py index 1c57567c..31a805f6 100644 --- a/src/llamafactory/hparams/parser.py +++ b/src/llamafactory/hparams/parser.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's transformers library. +# This code is inspired by the HuggingFace's transformers library. # https://github.com/huggingface/transformers/blob/v4.40.0/examples/pytorch/language-modeling/run_clm.py # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -90,6 +90,9 @@ def _verify_model_args(model_args: "ModelArguments", finetuning_args: "Finetunin if finetuning_args.finetuning_type != "lora": raise ValueError("Quantization is only compatible with the LoRA method.") + if finetuning_args.use_pissa: + raise ValueError("Please use scripts/pissa_init.py for quantized PiSSA.") + if model_args.resize_vocab: raise ValueError("Cannot resize embedding layers of a quantized model.") diff --git a/src/llamafactory/model/adapter.py b/src/llamafactory/model/adapter.py index dfa71525..a8f3a256 100644 --- a/src/llamafactory/model/adapter.py +++ b/src/llamafactory/model/adapter.py @@ -179,8 +179,16 @@ def _setup_lora_tuning( else: adapter_to_merge = model_args.adapter_name_or_path + init_kwargs = { + "subfolder": model_args.adapter_folder, + "offload_folder": model_args.offload_folder, + "cache_dir": model_args.cache_dir, + "revision": model_args.model_revision, + "token": model_args.hf_hub_token, + } + for adapter in adapter_to_merge: - model: "LoraModel" = PeftModel.from_pretrained(model, adapter, offload_folder=model_args.offload_folder) + model: "LoraModel" = PeftModel.from_pretrained(model, adapter, **init_kwargs) model = model.merge_and_unload() if len(adapter_to_merge) > 0: @@ -190,12 +198,7 @@ def _setup_lora_tuning( if model_args.use_unsloth: model = load_unsloth_peft_model(config, model_args, is_trainable=is_trainable) else: - model = PeftModel.from_pretrained( - model, - adapter_to_resume, - is_trainable=is_trainable, - offload_folder=model_args.offload_folder, - ) + model = PeftModel.from_pretrained(model, adapter_to_resume, is_trainable=is_trainable, **init_kwargs) logger.info("Loaded adapter(s): {}".format(",".join(model_args.adapter_name_or_path))) @@ -242,6 +245,14 @@ def _setup_lora_tuning( if model_args.use_unsloth: model = get_unsloth_peft_model(model, model_args, peft_kwargs) else: + if finetuning_args.pissa_init: + if finetuning_args.pissa_iter == -1: + logger.info("Using PiSSA initialization.") + peft_kwargs["init_lora_weights"] = "pissa" + else: + logger.info("Using PiSSA initialization with FSVD steps {}.".format(finetuning_args.pissa_iter)) + peft_kwargs["init_lora_weights"] = "pissa_niter_{}".format(finetuning_args.pissa_iter) + lora_config = LoraConfig( task_type=TaskType.CAUSAL_LM, inference_mode=False, diff --git a/src/llamafactory/train/dpo/trainer.py b/src/llamafactory/train/dpo/trainer.py index 475d08c3..9928d0bc 100644 --- a/src/llamafactory/train/dpo/trainer.py +++ b/src/llamafactory/train/dpo/trainer.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's TRL library. +# This code is inspired by the HuggingFace's TRL library. # https://github.com/huggingface/trl/blob/v0.8.0/trl/trainer/dpo_trainer.py # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,6 +15,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os import warnings from collections import defaultdict from contextlib import nullcontext @@ -28,7 +29,7 @@ from trl import DPOTrainer from trl.trainer import disable_dropout_in_model from ...extras.constants import IGNORE_INDEX -from ..trainer_utils import create_custom_optimzer, create_custom_scheduler, get_batch_logps +from ..trainer_utils import convert_pissa_adapter, create_custom_optimzer, create_custom_scheduler, get_batch_logps if TYPE_CHECKING: @@ -91,6 +92,9 @@ class CustomDPOTrainer(DPOTrainer): self.ref_model = self.accelerator.prepare_model(self.ref_model, evaluation_mode=True) self.ref_model.eval() + if finetuning_args.pissa_convert: + self.save_model(os.path.join(self.args.output_dir, "pissa_init")) + if finetuning_args.use_badam: from badam import clip_grad_norm_for_sparse_tensor @@ -109,8 +113,11 @@ class CustomDPOTrainer(DPOTrainer): def _save(self, output_dir: Optional[str] = None, state_dict: Optional[Dict[str, "torch.Tensor"]] = None) -> None: super()._save(output_dir, state_dict) + output_dir = output_dir if output_dir is not None else self.args.output_dir + if self.finetuning_args.pissa_convert: + convert_pissa_adapter(output_dir, state_dict, self.accelerator, self.model, self.args) + if self.processor is not None: - output_dir = output_dir if output_dir is not None else self.args.output_dir getattr(self.processor, "image_processor").save_pretrained(output_dir) def odds_ratio_loss(self, chosen_logps: "torch.Tensor", rejected_logps: "torch.Tensor") -> "torch.Tensor": diff --git a/src/llamafactory/train/pt/trainer.py b/src/llamafactory/train/pt/trainer.py index 09729f2e..f9e04cb5 100644 --- a/src/llamafactory/train/pt/trainer.py +++ b/src/llamafactory/train/pt/trainer.py @@ -12,13 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os from types import MethodType from typing import TYPE_CHECKING, Dict, Optional from transformers import Trainer from ...extras.logging import get_logger -from ..trainer_utils import create_custom_optimzer, create_custom_scheduler +from ..trainer_utils import convert_pissa_adapter, create_custom_optimzer, create_custom_scheduler if TYPE_CHECKING: @@ -42,6 +43,10 @@ class CustomTrainer(Trainer): super().__init__(**kwargs) self.finetuning_args = finetuning_args self.processor = processor + + if finetuning_args.pissa_convert: + self.save_model(os.path.join(self.args.output_dir, "pissa_init")) + if finetuning_args.use_badam: from badam import clip_grad_norm_for_sparse_tensor @@ -60,6 +65,9 @@ class CustomTrainer(Trainer): def _save(self, output_dir: Optional[str] = None, state_dict: Optional[Dict[str, "torch.Tensor"]] = None) -> None: super()._save(output_dir, state_dict) + output_dir = output_dir if output_dir is not None else self.args.output_dir + if self.finetuning_args.pissa_convert: + convert_pissa_adapter(output_dir, state_dict, self.accelerator, self.model, self.args) + if self.processor is not None: - output_dir = output_dir if output_dir is not None else self.args.output_dir getattr(self.processor, "image_processor").save_pretrained(output_dir) diff --git a/src/llamafactory/train/sft/trainer.py b/src/llamafactory/train/sft/trainer.py index 6ab6914e..921e49ab 100644 --- a/src/llamafactory/train/sft/trainer.py +++ b/src/llamafactory/train/sft/trainer.py @@ -1,6 +1,6 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by HuggingFace's transformers library. +# This code is inspired by the HuggingFace's transformers library. # https://github.com/huggingface/transformers/blob/v4.40.0/src/transformers/trainer_seq2seq.py # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -26,7 +26,7 @@ from transformers import Seq2SeqTrainer from ...extras.constants import IGNORE_INDEX from ...extras.logging import get_logger -from ..trainer_utils import create_custom_optimzer, create_custom_scheduler +from ..trainer_utils import convert_pissa_adapter, create_custom_optimzer, create_custom_scheduler if TYPE_CHECKING: @@ -51,6 +51,10 @@ class CustomSeq2SeqTrainer(Seq2SeqTrainer): super().__init__(**kwargs) self.finetuning_args = finetuning_args self.processor = processor + + if finetuning_args.pissa_convert: + self.save_model(os.path.join(self.args.output_dir, "pissa_init")) + if finetuning_args.use_badam: from badam import clip_grad_norm_for_sparse_tensor @@ -69,8 +73,11 @@ class CustomSeq2SeqTrainer(Seq2SeqTrainer): def _save(self, output_dir: Optional[str] = None, state_dict: Optional[Dict[str, "torch.Tensor"]] = None) -> None: super()._save(output_dir, state_dict) + output_dir = output_dir if output_dir is not None else self.args.output_dir + if self.finetuning_args.pissa_convert: + convert_pissa_adapter(output_dir, state_dict, self.accelerator, self.model, self.args) + if self.processor is not None: - output_dir = output_dir if output_dir is not None else self.args.output_dir getattr(self.processor, "image_processor").save_pretrained(output_dir) def prediction_step( diff --git a/src/llamafactory/train/trainer_utils.py b/src/llamafactory/train/trainer_utils.py index 5621d5df..2d6bab24 100644 --- a/src/llamafactory/train/trainer_utils.py +++ b/src/llamafactory/train/trainer_utils.py @@ -1,9 +1,9 @@ # Copyright 2024 HuggingFace Inc. and the LlamaFactory team. # -# This code is inspired by the GaLore's implementation: https://github.com/jiaweizzhao/GaLore -# and the LoRA+'s implementation: https://github.com/nikhil-ghosh-berkeley/loraplus -# and the BAdam's implementation: https://github.com/Ledzy/BAdam -# and the TRL's implementation: https://github.com/huggingface/trl +# This code is inspired by the original GaLore's implementation: https://github.com/jiaweizzhao/GaLore +# and the original LoRA+'s implementation: https://github.com/nikhil-ghosh-berkeley/loraplus +# and the original BAdam's implementation: https://github.com/Ledzy/BAdam +# and the HuggingFace's TRL library: https://github.com/huggingface/trl # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,9 +17,11 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os from typing import TYPE_CHECKING, Callable, Dict, List, Optional, Tuple, Union import torch +from peft import PeftModel from transformers import Trainer from transformers.optimization import get_scheduler from transformers.pytorch_utils import ALL_LAYERNORM_LAYERS @@ -37,6 +39,7 @@ if is_galore_available(): if TYPE_CHECKING: + from accelerate import Accelerator from transformers import PreTrainedModel, Seq2SeqTrainingArguments from trl import AutoModelForCausalLMWithValueHead @@ -171,6 +174,49 @@ def create_reward_model( return reward_model +def convert_pissa_adapter( + output_dir: str, + state_dict: Dict[str, "torch.Tensor"], + accelerator: "Accelerator", + model: "PreTrainedModel", + training_args: "Seq2SeqTrainingArguments", +) -> None: + r""" + Converts the PiSSA adapter to a LoRA adapter. + """ + pissa_init_dir = os.path.join(training_args.output_dir, "pissa_init") + pissa_backup_dir = os.path.join(output_dir, "pissa_backup") + if output_dir == pissa_init_dir: + logger.info("Initial PiSSA adatper will be saved at: {}.".format(pissa_init_dir)) + unwrapped_model = accelerator.unwrap_model(model) + if isinstance(unwrapped_model, PeftModel): + init_lora_weights = getattr(unwrapped_model.peft_config["default"], "init_lora_weights") + setattr(unwrapped_model.peft_config["default"], "init_lora_weights", True) + unwrapped_model.save_pretrained( + output_dir, + state_dict=state_dict, + safe_serialization=training_args.save_safetensors, + ) + setattr(unwrapped_model.peft_config["default"], "init_lora_weights", init_lora_weights) + elif output_dir == training_args.output_dir: # at the end of training + logger.info("Converted PiSSA adapter will be saved at: {}.".format(output_dir)) + unwrapped_model = accelerator.unwrap_model(model) + if isinstance(unwrapped_model, PeftModel): # backup the pissa adapter for further use + unwrapped_model.save_pretrained( + pissa_backup_dir, + state_dict=state_dict, + safe_serialization=training_args.save_safetensors, + ) + unwrapped_model.save_pretrained( + output_dir, + state_dict=state_dict, + safe_serialization=training_args.save_safetensors, + convert_pissa_to_lora=pissa_init_dir, + ) + unwrapped_model.load_adapter(pissa_backup_dir, "default", is_trainable=True) + unwrapped_model.set_adapter("default") + + def _get_decay_parameter_names(model: "PreTrainedModel") -> List[str]: r""" Returns a list of names of parameters with weight decay. (weights in non-layernorm layers) diff --git a/src/llamafactory/webui/components/train.py b/src/llamafactory/webui/components/train.py index 673f6bf4..874f3c5e 100644 --- a/src/llamafactory/webui/components/train.py +++ b/src/llamafactory/webui/components/train.py @@ -163,10 +163,9 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: create_new_adapter = gr.Checkbox() with gr.Row(): - with gr.Column(scale=1): - use_rslora = gr.Checkbox() - use_dora = gr.Checkbox() - + use_rslora = gr.Checkbox() + use_dora = gr.Checkbox() + use_pissa = gr.Checkbox() lora_target = gr.Textbox(scale=2) additional_target = gr.Textbox(scale=2) @@ -179,6 +178,7 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: create_new_adapter, use_rslora, use_dora, + use_pissa, lora_target, additional_target, } @@ -193,6 +193,7 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: create_new_adapter=create_new_adapter, use_rslora=use_rslora, use_dora=use_dora, + use_pissa=use_pissa, lora_target=lora_target, additional_target=additional_target, ) diff --git a/src/llamafactory/webui/locales.py b/src/llamafactory/webui/locales.py index 427f01b8..8e8d6fce 100644 --- a/src/llamafactory/webui/locales.py +++ b/src/llamafactory/webui/locales.py @@ -732,6 +732,20 @@ LOCALES = { "info": "使用权重分解的 LoRA。", }, }, + "use_pissa": { + "en": { + "label": "Use PiSSA", + "info": "Use PiSSA method.", + }, + "ru": { + "label": "используйте PiSSA", + "info": "Используйте метод PiSSA.", + }, + "zh": { + "label": "使用 PiSSA", + "info": "使用 PiSSA 方法。", + }, + }, "lora_target": { "en": { "label": "LoRA modules (optional)", diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index 76982934..13dbba03 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -173,6 +173,8 @@ class Runner: args["create_new_adapter"] = get("train.create_new_adapter") args["use_rslora"] = get("train.use_rslora") args["use_dora"] = get("train.use_dora") + args["pissa_init"] = get("train.use_pissa") + args["pissa_convert"] = get("train.use_pissa") args["lora_target"] = get("train.lora_target") or "all" args["additional_target"] = get("train.additional_target") or None diff --git a/tests/model/test_pissa.py b/tests/model/test_pissa.py new file mode 100644 index 00000000..70c424fd --- /dev/null +++ b/tests/model/test_pissa.py @@ -0,0 +1,90 @@ +# Copyright 2024 the LlamaFactory team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os + +import torch +from peft import LoraModel, PeftModel +from transformers import AutoModelForCausalLM + +from llamafactory.extras.misc import get_current_device +from llamafactory.hparams import get_infer_args, get_train_args +from llamafactory.model import load_model, load_tokenizer + + +TINY_LLAMA = os.environ.get("TINY_LLAMA", "llamafactory/tiny-random-Llama-3") + +TINY_LLAMA_PISSA = os.environ.get("TINY_LLAMA_ADAPTER", "llamafactory/tiny-random-Llama-3-pissa") + +TRAIN_ARGS = { + "model_name_or_path": TINY_LLAMA, + "stage": "sft", + "do_train": True, + "finetuning_type": "lora", + "pissa_init": True, + "pissa_iter": -1, + "dataset": "llamafactory/tiny-supervised-dataset", + "dataset_dir": "ONLINE", + "template": "llama3", + "cutoff_len": 1024, + "overwrite_cache": True, + "output_dir": "dummy_dir", + "overwrite_output_dir": True, + "fp16": True, +} + +INFER_ARGS = { + "model_name_or_path": TINY_LLAMA_PISSA, + "adapter_name_or_path": TINY_LLAMA_PISSA, + "adapter_folder": "pissa_init", + "finetuning_type": "lora", + "template": "llama3", + "infer_dtype": "float16", +} + + +def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module"): + state_dict_a = model_a.state_dict() + state_dict_b = model_b.state_dict() + assert set(state_dict_a.keys()) == set(state_dict_b.keys()) + for name in state_dict_a.keys(): + assert torch.allclose(state_dict_a[name], state_dict_b[name]) + + +def test_pissa_init(): + model_args, _, _, finetuning_args, _ = get_train_args(TRAIN_ARGS) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) + + base_model = AutoModelForCausalLM.from_pretrained( + TINY_LLAMA_PISSA, torch_dtype=torch.float16, device_map=get_current_device() + ) + ref_model = PeftModel.from_pretrained(base_model, TINY_LLAMA_PISSA, subfolder="pissa_init", is_trainable=True) + for param in filter(lambda p: p.requires_grad, ref_model.parameters()): + param.data = param.data.to(torch.float32) + + compare_model(model, ref_model) + + +def test_pissa_inference(): + model_args, _, finetuning_args, _ = get_infer_args(INFER_ARGS) + tokenizer_module = load_tokenizer(model_args) + model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False) + + base_model = AutoModelForCausalLM.from_pretrained( + TINY_LLAMA_PISSA, torch_dtype=torch.float16, device_map=get_current_device() + ) + ref_model: "LoraModel" = PeftModel.from_pretrained(base_model, TINY_LLAMA_PISSA, subfolder="pissa_init") + ref_model = ref_model.merge_and_unload() + compare_model(model, ref_model) From de43bee0b004c7e90811100474b3113590d0f130 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sun, 16 Jun 2024 01:21:06 +0800 Subject: [PATCH 163/169] increase tol --- tests/model/test_pissa.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/model/test_pissa.py b/tests/model/test_pissa.py index 70c424fd..41d02752 100644 --- a/tests/model/test_pissa.py +++ b/tests/model/test_pissa.py @@ -59,7 +59,7 @@ def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module"): state_dict_b = model_b.state_dict() assert set(state_dict_a.keys()) == set(state_dict_b.keys()) for name in state_dict_a.keys(): - assert torch.allclose(state_dict_a[name], state_dict_b[name]) + assert torch.allclose(state_dict_a[name], state_dict_b[name], rtol=1e-3, atol=1e-3) def test_pissa_init(): From 7f3c19e3ab616f93ffc8fee23aa15ca0b19a9683 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sun, 16 Jun 2024 01:22:23 +0800 Subject: [PATCH 164/169] Update tests.yml --- .github/workflows/tests.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 96092662..98bd9455 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -9,8 +9,6 @@ on: - "requirements.txt" - ".github/workflows/*.yml" pull_request: - types: - - review_requested branches: - main paths: From 46093b5786611d99adf1fd3d42926a728fc629f8 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sun, 16 Jun 2024 01:38:44 +0800 Subject: [PATCH 165/169] fix tol --- src/llamafactory/train/trainer_utils.py | 1 + tests/model/test_base.py | 2 +- tests/model/test_lora.py | 4 ++-- tests/model/test_pissa.py | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/llamafactory/train/trainer_utils.py b/src/llamafactory/train/trainer_utils.py index 2d6bab24..9052c96d 100644 --- a/src/llamafactory/train/trainer_utils.py +++ b/src/llamafactory/train/trainer_utils.py @@ -213,6 +213,7 @@ def convert_pissa_adapter( safe_serialization=training_args.save_safetensors, convert_pissa_to_lora=pissa_init_dir, ) + # TODO: the model is applied pissa again unexpectedly unwrapped_model.load_adapter(pissa_backup_dir, "default", is_trainable=True) unwrapped_model.set_adapter("default") diff --git a/tests/model/test_base.py b/tests/model/test_base.py index 954492ef..e1991b20 100644 --- a/tests/model/test_base.py +++ b/tests/model/test_base.py @@ -41,7 +41,7 @@ def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module"): state_dict_b = model_b.state_dict() assert set(state_dict_a.keys()) == set(state_dict_b.keys()) for name in state_dict_a.keys(): - assert torch.allclose(state_dict_a[name], state_dict_b[name]) + assert torch.allclose(state_dict_a[name], state_dict_b[name], rtol=1e-4, atol=1e-5) @pytest.fixture diff --git a/tests/model/test_lora.py b/tests/model/test_lora.py index fe032332..64566fe8 100644 --- a/tests/model/test_lora.py +++ b/tests/model/test_lora.py @@ -67,9 +67,9 @@ def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module", diff_k assert set(state_dict_a.keys()) == set(state_dict_b.keys()) for name in state_dict_a.keys(): if any(key in name for key in diff_keys): - assert torch.allclose(state_dict_a[name], state_dict_b[name]) is False + assert torch.allclose(state_dict_a[name], state_dict_b[name], rtol=1e-4, atol=1e-5) is False else: - assert torch.allclose(state_dict_a[name], state_dict_b[name]) is True + assert torch.allclose(state_dict_a[name], state_dict_b[name], rtol=1e-4, atol=1e-5) is True @pytest.fixture diff --git a/tests/model/test_pissa.py b/tests/model/test_pissa.py index 41d02752..030310d0 100644 --- a/tests/model/test_pissa.py +++ b/tests/model/test_pissa.py @@ -59,7 +59,7 @@ def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module"): state_dict_b = model_b.state_dict() assert set(state_dict_a.keys()) == set(state_dict_b.keys()) for name in state_dict_a.keys(): - assert torch.allclose(state_dict_a[name], state_dict_b[name], rtol=1e-3, atol=1e-3) + assert torch.allclose(state_dict_a[name], state_dict_b[name], rtol=1e-4, atol=1e-5) def test_pissa_init(): From 0a2ec5fe2049a6d6bc3955c7e4794bd6115ccbcd Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Sun, 16 Jun 2024 01:43:43 +0800 Subject: [PATCH 166/169] update pr template --- .github/PULL_REQUEST_TEMPLATE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index b31e9d19..d23d6be3 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -5,3 +5,4 @@ Fixes # (issue) ## Before submitting - [ ] Did you read the [contributor guideline](https://github.com/hiyouga/LLaMA-Factory/blob/main/.github/CONTRIBUTING.md)? +- [ ] Did you write any new necessary tests? From 29c1f31baa442e35714b18b7e51896274a828cae Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Sun, 16 Jun 2024 02:57:00 +0800 Subject: [PATCH 167/169] Update parser.py --- src/llamafactory/hparams/parser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/llamafactory/hparams/parser.py b/src/llamafactory/hparams/parser.py index 31a805f6..467fc43d 100644 --- a/src/llamafactory/hparams/parser.py +++ b/src/llamafactory/hparams/parser.py @@ -90,8 +90,8 @@ def _verify_model_args(model_args: "ModelArguments", finetuning_args: "Finetunin if finetuning_args.finetuning_type != "lora": raise ValueError("Quantization is only compatible with the LoRA method.") - if finetuning_args.use_pissa: - raise ValueError("Please use scripts/pissa_init.py for quantized PiSSA.") + if finetuning_args.pissa_init: + raise ValueError("Please use scripts/pissa_init.py to initialize PiSSA for a quantized model.") if model_args.resize_vocab: raise ValueError("Cannot resize embedding layers of a quantized model.") From 2bf2863a58c93206f271de17d7dfcbcd6375cd73 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 17 Jun 2024 17:47:25 +0800 Subject: [PATCH 168/169] tiny fix --- examples/README.md | 14 ++++---- examples/README_zh.md | 14 ++++---- .../fsdp_qlora/{single_node.sh => train.sh} | 0 scripts/llama_pro.py | 2 +- scripts/loftq_init.py | 2 +- scripts/pissa_init.py | 5 ++- tests/model/test_lora.py | 34 +++++++------------ 7 files changed, 32 insertions(+), 39 deletions(-) rename examples/extras/fsdp_qlora/{single_node.sh => train.sh} (100%) diff --git a/examples/README.md b/examples/README.md index 902d26b1..007a81ab 100644 --- a/examples/README.md +++ b/examples/README.md @@ -195,6 +195,12 @@ llamafactory-cli train examples/extras/badam/llama3_full_sft.yaml llamafactory-cli train examples/extras/loraplus/llama3_lora_sft.yaml ``` +#### PiSSA Fine-Tuning + +```bash +llamafactory-cli train examples/extras/pissa/llama3_lora_sft.yaml +``` + #### Mixture-of-Depths Fine-Tuning ```bash @@ -211,11 +217,5 @@ llamafactory-cli train examples/extras/llama_pro/llama3_freeze_sft.yaml #### FSDP+QLoRA Fine-Tuning ```bash -bash examples/extras/fsdp_qlora/single_node.sh -``` - -#### PiSSA Fine-Tuning - -```bash -llamafactory-cli train examples/extras/pissa/llama3_lora_sft.yaml +bash examples/extras/fsdp_qlora/train.sh ``` diff --git a/examples/README_zh.md b/examples/README_zh.md index 586e498c..b9d90f25 100644 --- a/examples/README_zh.md +++ b/examples/README_zh.md @@ -195,6 +195,12 @@ llamafactory-cli train examples/extras/badam/llama3_full_sft.yaml llamafactory-cli train examples/extras/loraplus/llama3_lora_sft.yaml ``` +#### PiSSA 微调 + +```bash +llamafactory-cli train examples/extras/pissa/llama3_lora_sft.yaml +``` + #### 深度混合微调 ```bash @@ -211,11 +217,5 @@ llamafactory-cli train examples/extras/llama_pro/llama3_freeze_sft.yaml #### FSDP+QLoRA 微调 ```bash -bash examples/extras/fsdp_qlora/single_node.sh -``` - -#### PiSSA 微调 - -```bash -llamafactory-cli train examples/extras/pissa/llama3_lora_sft.yaml +bash examples/extras/fsdp_qlora/train.sh ``` diff --git a/examples/extras/fsdp_qlora/single_node.sh b/examples/extras/fsdp_qlora/train.sh similarity index 100% rename from examples/extras/fsdp_qlora/single_node.sh rename to examples/extras/fsdp_qlora/train.sh diff --git a/scripts/llama_pro.py b/scripts/llama_pro.py index 395375ef..17bf6fc2 100644 --- a/scripts/llama_pro.py +++ b/scripts/llama_pro.py @@ -120,7 +120,7 @@ def block_expansion( json.dump(index, f, indent=2, sort_keys=True) print("Model weights saved in {}".format(output_dir)) - print("Fine-tune this model with:") + print("- Fine-tune this model with:") print("model_name_or_path: {}".format(output_dir)) print("finetuning_type: freeze") print("freeze_trainable_layers: {}".format(num_expand)) diff --git a/scripts/loftq_init.py b/scripts/loftq_init.py index 556f342c..b9506fa3 100644 --- a/scripts/loftq_init.py +++ b/scripts/loftq_init.py @@ -74,7 +74,7 @@ def quantize_loftq( tokenizer.save_pretrained(output_dir) print("Model weights saved in {}".format(output_dir)) - print("Fine-tune this model with:") + print("- Fine-tune this model with:") print("model_name_or_path: {}".format(output_dir)) print("adapter_name_or_path: {}".format(loftq_dir)) print("finetuning_type: lora") diff --git a/scripts/pissa_init.py b/scripts/pissa_init.py index 1b673c45..10b81efc 100644 --- a/scripts/pissa_init.py +++ b/scripts/pissa_init.py @@ -68,11 +68,14 @@ def quantize_pissa( tokenizer.save_pretrained(output_dir) print("Model weights saved in {}".format(output_dir)) - print("Fine-tune this model with:") + print("- Fine-tune this model with:") print("model_name_or_path: {}".format(output_dir)) print("adapter_name_or_path: {}".format(pissa_dir)) print("finetuning_type: lora") + print("pissa_init: false") print("pissa_convert: true") + print("- and optionally with:") + print("quantization_bit: 4") if __name__ == "__main__": diff --git a/tests/model/test_lora.py b/tests/model/test_lora.py index 64566fe8..630e5f75 100644 --- a/tests/model/test_lora.py +++ b/tests/model/test_lora.py @@ -56,9 +56,15 @@ INFER_ARGS = { } -def load_reference_model() -> "torch.nn.Module": - model = AutoModelForCausalLM.from_pretrained(TINY_LLAMA) - return PeftModel.from_pretrained(model, TINY_LLAMA_ADAPTER) +def load_reference_model(is_trainable: bool = False) -> "LoraModel": + model = AutoModelForCausalLM.from_pretrained( + TINY_LLAMA, torch_dtype=torch.float16, device_map=get_current_device() + ) + lora_model = PeftModel.from_pretrained(model, TINY_LLAMA_ADAPTER, is_trainable=is_trainable) + for param in filter(lambda p: p.requires_grad, lora_model.parameters()): + param.data = param.data.to(torch.float32) + + return lora_model def compare_model(model_a: "torch.nn.Module", model_b: "torch.nn.Module", diff_keys: Sequence[str] = []): @@ -148,13 +154,7 @@ def test_lora_train_old_adapters(): tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) - base_model = AutoModelForCausalLM.from_pretrained( - TINY_LLAMA, torch_dtype=torch.float16, device_map=get_current_device() - ) - ref_model = PeftModel.from_pretrained(base_model, TINY_LLAMA_ADAPTER, is_trainable=True) - for param in filter(lambda p: p.requires_grad, ref_model.parameters()): - param.data = param.data.to(torch.float32) - + ref_model = load_reference_model(is_trainable=True) compare_model(model, ref_model) @@ -165,13 +165,7 @@ def test_lora_train_new_adapters(): tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=True) - base_model = AutoModelForCausalLM.from_pretrained( - TINY_LLAMA, torch_dtype=torch.float16, device_map=get_current_device() - ) - ref_model = PeftModel.from_pretrained(base_model, TINY_LLAMA_ADAPTER, is_trainable=True) - for param in filter(lambda p: p.requires_grad, ref_model.parameters()): - param.data = param.data.to(torch.float32) - + ref_model = load_reference_model(is_trainable=True) compare_model( model, ref_model, diff_keys=["q_proj", "k_proj", "v_proj", "o_proj", "up_proj", "gate_proj", "down_proj"] ) @@ -200,9 +194,5 @@ def test_lora_inference(): tokenizer_module = load_tokenizer(model_args) model = load_model(tokenizer_module["tokenizer"], model_args, finetuning_args, is_trainable=False) - base_model = AutoModelForCausalLM.from_pretrained( - TINY_LLAMA, torch_dtype=torch.float16, device_map=get_current_device() - ) - ref_model: "LoraModel" = PeftModel.from_pretrained(base_model, TINY_LLAMA_ADAPTER) - ref_model = ref_model.merge_and_unload() + ref_model = load_reference_model().merge_and_unload() compare_model(model, ref_model) From 72471ee046a69acea25fd4d67679ea942d00eb8f Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Mon, 17 Jun 2024 17:49:03 +0800 Subject: [PATCH 169/169] Update wechat.jpg --- assets/wechat.jpg | Bin 147680 -> 143583 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/wechat.jpg b/assets/wechat.jpg index 47523aee5cf06f2a718c5af27e99ab02b359e0bb..5868f16c28c01435e2f9efdb829a2ec25a0b9da9 100644 GIT binary patch literal 143583 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 z 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≤Tq$mOleSue!{0+GTYUR23be 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 XJjh-wSbnEU4sYq|c%`uJmH58^VfDXR literal 147680 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

    GyF^0ZNhet{{xX)xJsAbY=YZkms_t@*Jr_T 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

  • h;?3SIXlD&8j0uN0pz%$Q=5l8(P5J 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 bmFgK71boa!8lG2ZN60Y Date: Wed, 29 May 2024 15:00:37 +0800 Subject: [PATCH 026/169] add TeleChat-12B/TeleChat-12B-v2 models --- src/llamafactory/data/template.py | 10 ++++++++++ src/llamafactory/extras/constants.py | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index f13b303b..1a9f08ff 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -918,3 +918,13 @@ _register_template( format_user=StringFormatter(slots=[":{{content}}\n:"]), format_separator=EmptyFormatter(slots=["\n"]), ) + + +_register_template( + name="telechat", + format_user=StringFormatter(slots=["<_user>{{content}}<_bot>"]), + format_system=StringFormatter(slots=["<_system>{{content}}<_end>"]), + default_system="", + stop_words=["<_end>"], + replace_eos=True, +) diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index d1fcd4f6..bf2388ab 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -1355,3 +1355,19 @@ register_model_group( }, template="zephyr", ) + + +register_model_group( + models={ + "TeleChat-12B-Chat": { + DownloadSource.DEFAULT: "Tele-AI/TeleChat-12B", + DownloadSource.MODELSCOPE: "TeleAI/TeleChat-12B", + }, + "TeleChat-12B-v2-Chat": { + DownloadSource.DEFAULT: "Tele-AI/TeleChat-12B-v2", + DownloadSource.MODELSCOPE: "TeleAI/TeleChat-12B-v2", + }, + }, + module='query,key_value', + template="telechat", +) From e14f5b37e4cf6086d80e600c88a4e2e402a74a72 Mon Sep 17 00:00:00 2001 From: MengqingCao Date: Wed, 29 May 2024 09:53:31 +0000 Subject: [PATCH 027/169] update cann kernels url --- README.md | 2 +- README_zh.md | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ca70110f..14a8f4a2 100644 --- a/README.md +++ b/README.md @@ -359,7 +359,7 @@ chmod +x Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run ./Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install # install CANN Kernels -wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C18B800TP015/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run +wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run chmod +x Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run ./Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install diff --git a/README_zh.md b/README_zh.md index 4f659588..66a4c031 100644 --- a/README_zh.md +++ b/README_zh.md @@ -359,7 +359,7 @@ chmod +x Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run ./Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install # 安装 CANN Kernels -wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C18B800TP015/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run +wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run chmod +x Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run ./Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install diff --git a/setup.py b/setup.py index 87620c37..f72eefb6 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ extra_require = { "qwen": ["tiktoken", "transformers_stream_generator"], "modelscope": ["modelscope"], "quality": ["ruff"], - "torch_npu": ["torch==2.2.0", "torch_npu==2.2.0", "decorator"] + "torch_npu": ["torch==2.1.0", "torch_npu==2.1.0", "decorator"] } From b19d33b9d205911ffd191bd0eadddd162b692e68 Mon Sep 17 00:00:00 2001 From: MengqingCao Date: Wed, 29 May 2024 10:05:11 +0000 Subject: [PATCH 028/169] update torch-npu version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f72eefb6..06e6b750 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ extra_require = { "qwen": ["tiktoken", "transformers_stream_generator"], "modelscope": ["modelscope"], "quality": ["ruff"], - "torch_npu": ["torch==2.1.0", "torch_npu==2.1.0", "decorator"] + "torch_npu": ["torch==2.1.0", "torch_npu==2.1.0.post3", "decorator"] } From 89ca832740731dfb121175aa5c16b13bd4944011 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 29 May 2024 18:39:11 +0800 Subject: [PATCH 029/169] update readme --- .readthedocs.yaml | 19 +++++++++++++++ README.md | 26 +++++++++----------- README_zh.md | 28 ++++++++++------------ examples/accelerate/fsdp_config.yaml | 8 +++---- setup.py | 2 +- src/llamafactory/data/template.py | 19 +++++++-------- src/llamafactory/extras/constants.py | 36 +++++++++++++++------------- 7 files changed, 76 insertions(+), 62 deletions(-) create mode 100644 .readthedocs.yaml diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 00000000..3a9eaea1 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,19 @@ +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +version: 2 + +build: + os: ubuntu-22.04 + tools: + python: "3.8" + +sphinx: + configuration: docs/source/conf.py + +formats: + - pdf + +python: + install: + - requirements: docs/requirements-docs.txt diff --git a/README.md b/README.md index 3e5cdb91..4ca6d1ec 100644 --- a/README.md +++ b/README.md @@ -330,7 +330,7 @@ cd LLaMA-Factory pip install -e .[torch,metrics] ``` -Extra dependencies available: torch, metrics, deepspeed, bitsandbytes, vllm, galore, badam, gptq, awq, aqlm, qwen, modelscope, quality +Extra dependencies available: torch, torch_npu, metrics, deepspeed, bitsandbytes, vllm, galore, badam, gptq, awq, aqlm, qwen, modelscope, quality > [!TIP] > Use `pip install --no-deps -e .` to resolve package conflicts. @@ -351,32 +351,28 @@ To enable FlashAttention-2 on the Windows platform, you need to install the prec Join [NPU user group](assets/wechat_npu.jpg). -Use `pip install -e .[torch_npu]` to install LLaMA-Factory with **[torch-npu](https://gitee.com/ascend/pytorch)** library. - -To utilize Ascend NPU devices for (distributed) training and inference, you need to install the **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**. You can follow chapter **[install CANN](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC2alpha002/quickstart/quickstart/quickstart_18_0004.html)** in the installation tutorial to install CANN Toolkit and the kernels, or use the fast installation as following: +To install LLaMA Factory on Ascend NPU devices, please specify extra dependencies: `pip install -e .[torch_npu,metrics]`. Additionally, you need to install the **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**. Please follow the [installation tutorial](https://www.hiascend.com/document/detail/en/CANNCommunityEdition/600alphaX/softwareinstall/instg/atlasdeploy_03_0031.html) or use the following commands: ```bash -# replace the url according to your choice +# replace the url according to your CANN version and devices # install CANN Toolkit wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run -chmod +x Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run -./Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install +bash Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install # install CANN Kernels wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run -chmod +x Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run -./Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install +bash Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install # set env variables source /usr/local/Ascend/ascend-toolkit/set_env.sh ``` -| Requirement | Minimum | Recommend | -| ------------ | ------- | --------- | -| CANN | 8.0.RC1 | 8.0.RC1 | -| torch | 2.2.0 | 2.2.0 | -| torch-npu | 2.2.0 | 2.2.0 | -| deepspeed | 0.13.2 | 0.13.2 | +| Requirement | Minimum | Recommend | +| ------------ | ------- | ----------- | +| CANN | 8.0.RC1 | 8.0.RC1 | +| torch | 2.1.0 | 2.1.0 | +| torch-npu | 2.1.0 | 2.1.0.post3 | +| deepspeed | 0.13.2 | 0.13.2 | Docker image: diff --git a/README_zh.md b/README_zh.md index b50d52ef..70938e38 100644 --- a/README_zh.md +++ b/README_zh.md @@ -330,7 +330,7 @@ cd LLaMA-Factory pip install -e .[torch,metrics] ``` -可选的额外依赖项:torch、metrics、deepspeed、bitsandbytes、vllm、galore、badam、gptq、awq、aqlm、qwen、modelscope、quality +可选的额外依赖项:torch、torch_npu、metrics、deepspeed、bitsandbytes、vllm、galore、badam、gptq、awq、aqlm、qwen、modelscope、quality > [!TIP] > 遇到包冲突时,可使用 `pip install --no-deps -e .` 解决。 @@ -351,39 +351,35 @@ pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/downl 加入 [NPU 用户群](assets/wechat_npu.jpg)。 -使用 `pip install -e .[torch_npu]` 来安装带有 **[torch-npu](https://gitee.com/ascend/pytorch)** 的 LLaMA-Factory。 - -如果使用昇腾 NPU 设备进行(分布式)训练或推理,需要安装 **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**。可以参考安装教程中的**[安装 CANN](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC2alpha002/quickstart/quickstart/quickstart_18_0004.html)**章节来进行安装,或使用以下快速安装指令: +在昇腾 NPU 设备上安装 LLaMA Factory 时,需要指定额外依赖项,使用 `pip install -e .[torch_npu,metrics]` 命令安装。此外,还需要安装 **[Ascend CANN Toolkit and Kernels](https://www.hiascend.com/developer/download/community/result?module=cann)**,安装方法请参考[安装教程](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC2alpha002/quickstart/quickstart/quickstart_18_0004.html)或使用以下命令: ```bash -# 请替换 URL 为你需要的 CANN 版本对应的 URL +# 请替换 URL 为 CANN 版本和设备型号对应的 URL # 安装 CANN Toolkit wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run -chmod +x Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run -./Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install +bash Ascend-cann-toolkit_8.0.RC1.alpha001_linux-"$(uname -i)".run --install # 安装 CANN Kernels wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C17SPC701/Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run -chmod +x Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run -./Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install +bash Ascend-cann-kernels-910b_8.0.RC1.alpha001_linux.run --install # 设置环境变量 source /usr/local/Ascend/ascend-toolkit/set_env.sh ``` -| 依赖项 | 至少 | 推荐 | -| ------------ | ------- | --------- | -| CANN | 8.0.RC1 | 8.0.RC1 | -| torch | 2.2.0 | 2.2.0 | -| torch-npu | 2.2.0 | 2.2.0 | -| deepspeed | 0.13.2 | 0.13.2 | +| 依赖项 | 至少 | 推荐 | +| ------------ | ------- | ----------- | +| CANN | 8.0.RC1 | 8.0.RC1 | +| torch | 2.1.0 | 2.1.0 | +| torch-npu | 2.1.0 | 2.1.0.post3 | +| deepspeed | 0.13.2 | 0.13.2 | Docker 镜像: - 32GB:[下载地址](http://mirrors.cn-central-221.ovaijisuan.com/detail/130.html) - 64GB:[下载地址](http://mirrors.cn-central-221.ovaijisuan.com/detail/131.html) -请记得使用 `ASCEND_RT_VISIBLE_DEVICES` 而非 `CUDA_VISIBLE_DEVICES` 来指定您使用的设备。 +请使用 `ASCEND_RT_VISIBLE_DEVICES` 而非 `CUDA_VISIBLE_DEVICES` 来指定运算设备。 如果遇到无法正常推理的情况,请尝试设置 `do_sample: false`。 diff --git a/examples/accelerate/fsdp_config.yaml b/examples/accelerate/fsdp_config.yaml index 60025597..cd65e074 100644 --- a/examples/accelerate/fsdp_config.yaml +++ b/examples/accelerate/fsdp_config.yaml @@ -5,16 +5,16 @@ downcast_bf16: 'no' fsdp_config: fsdp_auto_wrap_policy: TRANSFORMER_BASED_WRAP fsdp_backward_prefetch: BACKWARD_PRE - fsdp_cpu_ram_efficient_loading: true fsdp_forward_prefetch: false - fsdp_offload_params: true + fsdp_cpu_ram_efficient_loading: true + fsdp_offload_params: true # offload may affect training speed fsdp_sharding_strategy: FULL_SHARD fsdp_state_dict_type: FULL_STATE_DICT fsdp_sync_module_states: true - fsdp_use_orig_params: false + fsdp_use_orig_params: true machine_rank: 0 main_training_function: main -mixed_precision: fp16 +mixed_precision: fp16 # or bf16 num_machines: 1 # the number of nodes num_processes: 2 # the number of GPUs in all nodes rdzv_backend: static diff --git a/setup.py b/setup.py index 45268d6e..45e73343 100644 --- a/setup.py +++ b/setup.py @@ -21,6 +21,7 @@ def get_requires(): extra_require = { "torch": ["torch>=1.13.1"], + "torch_npu": ["torch==2.1.0", "torch-npu==2.1.0.post3", "decorator"], "metrics": ["nltk", "jieba", "rouge-chinese"], "deepspeed": ["deepspeed>=0.10.0,<=0.14.0"], "bitsandbytes": ["bitsandbytes>=0.39.0"], @@ -33,7 +34,6 @@ extra_require = { "qwen": ["tiktoken", "transformers_stream_generator"], "modelscope": ["modelscope"], "quality": ["ruff"], - "torch_npu": ["torch==2.1.0", "torch_npu==2.1.0.post3", "decorator"] } diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index 1a9f08ff..35866e31 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -822,6 +822,15 @@ _register_template( ) +_register_template( + name="telechat", + format_user=StringFormatter(slots=["<_user>{{content}}<_bot>"]), + format_system=StringFormatter(slots=["<_system>{{content}}<_end>"]), + stop_words=["<_end>"], + replace_eos=True, +) + + _register_template( name="vicuna", format_user=StringFormatter(slots=["USER: {{content}} ASSISTANT:"]), @@ -918,13 +927,3 @@ _register_template( format_user=StringFormatter(slots=[":{{content}}\n:"]), format_separator=EmptyFormatter(slots=["\n"]), ) - - -_register_template( - name="telechat", - format_user=StringFormatter(slots=["<_user>{{content}}<_bot>"]), - format_system=StringFormatter(slots=["<_system>{{content}}<_end>"]), - default_system="", - stop_words=["<_end>"], - replace_eos=True, -) diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index bf2388ab..5e2ee3ce 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -1095,6 +1095,26 @@ register_model_group( ) +register_model_group( + models={ + "TeleChat-7B-Chat": { + DownloadSource.DEFAULT: "Tele-AI/telechat-7B", + DownloadSource.MODELSCOPE: "TeleAI/telechat-7B", + }, + "TeleChat-12B-Chat": { + DownloadSource.DEFAULT: "Tele-AI/TeleChat-12B", + DownloadSource.MODELSCOPE: "TeleAI/TeleChat-12B", + }, + "TeleChat-12B-v2-Chat": { + DownloadSource.DEFAULT: "Tele-AI/TeleChat-12B-v2", + DownloadSource.MODELSCOPE: "TeleAI/TeleChat-12B-v2", + }, + }, + module="query,key_value", + template="telechat", +) + + register_model_group( models={ "Vicuna1.5-7B-Chat": { @@ -1355,19 +1375,3 @@ register_model_group( }, template="zephyr", ) - - -register_model_group( - models={ - "TeleChat-12B-Chat": { - DownloadSource.DEFAULT: "Tele-AI/TeleChat-12B", - DownloadSource.MODELSCOPE: "TeleAI/TeleChat-12B", - }, - "TeleChat-12B-v2-Chat": { - DownloadSource.DEFAULT: "Tele-AI/TeleChat-12B-v2", - DownloadSource.MODELSCOPE: "TeleAI/TeleChat-12B-v2", - }, - }, - module='query,key_value', - template="telechat", -) From 0930f5869929634baa0881167d3d6c714afc63d9 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 29 May 2024 20:55:51 +0800 Subject: [PATCH 030/169] fix #3965 --- src/llamafactory/data/template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index 35866e31..a117b689 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -544,7 +544,7 @@ _register_template( ) ] ), - format_system=EmptyFormatter(slots=[{"bos_token"}]), + format_system=StringFormatter(slots=[{"bos_token"}, "{{content}}"]), force_system=True, ) From d0aa36b8ad02287d97930101958456c523e699d3 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 29 May 2024 20:58:23 +0800 Subject: [PATCH 031/169] fix cohere system --- src/llamafactory/data/template.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/llamafactory/data/template.py b/src/llamafactory/data/template.py index a117b689..00527b44 100644 --- a/src/llamafactory/data/template.py +++ b/src/llamafactory/data/template.py @@ -544,8 +544,13 @@ _register_template( ) ] ), - format_system=StringFormatter(slots=[{"bos_token"}, "{{content}}"]), - force_system=True, + format_system=StringFormatter( + slots=[{"bos_token"}, "<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>{{content}}<|END_OF_TURN_TOKEN|>"] + ), + default_system=( + "You are Command-R, a brilliant, sophisticated, AI-assistant trained to assist human users " + "by providing thorough responses. You are trained by Cohere." + ), ) From 80708717329b4552920dd4ce8cebc683e65d54c5 Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Wed, 29 May 2024 23:55:38 +0800 Subject: [PATCH 032/169] better llamaboard * easily resume from checkpoint * support full and freeze checkpoints * faster ui --- src/llamafactory/__init__.py | 2 +- src/llamafactory/extras/constants.py | 21 +++- src/llamafactory/hparams/parser.py | 13 ++- src/llamafactory/webui/chatter.py | 33 +++--- src/llamafactory/webui/common.py | 109 +++++++++++++------- src/llamafactory/webui/components/eval.py | 4 +- src/llamafactory/webui/components/export.py | 29 +++--- src/llamafactory/webui/components/top.py | 23 ++--- src/llamafactory/webui/components/train.py | 33 +++--- src/llamafactory/webui/engine.py | 17 ++- src/llamafactory/webui/locales.py | 24 ++--- src/llamafactory/webui/manager.py | 2 +- src/llamafactory/webui/runner.py | 79 +++++++------- src/llamafactory/webui/utils.py | 107 ++++++++++++++++--- 14 files changed, 303 insertions(+), 193 deletions(-) diff --git a/src/llamafactory/__init__.py b/src/llamafactory/__init__.py index b889e268..78230937 100644 --- a/src/llamafactory/__init__.py +++ b/src/llamafactory/__init__.py @@ -1,4 +1,4 @@ -# Level: api, webui > chat, eval, train > data, model > extras, hparams +# Level: api, webui > chat, eval, train > data, model > hparams > extras from .cli import VERSION diff --git a/src/llamafactory/extras/constants.py b/src/llamafactory/extras/constants.py index 5e2ee3ce..f365016f 100644 --- a/src/llamafactory/extras/constants.py +++ b/src/llamafactory/extras/constants.py @@ -2,6 +2,19 @@ from collections import OrderedDict, defaultdict from enum import Enum from typing import Dict, Optional +from peft.utils import SAFETENSORS_WEIGHTS_NAME as SAFE_ADAPTER_WEIGHTS_NAME +from peft.utils import WEIGHTS_NAME as ADAPTER_WEIGHTS_NAME +from transformers.utils import SAFE_WEIGHTS_INDEX_NAME, SAFE_WEIGHTS_NAME, WEIGHTS_INDEX_NAME, WEIGHTS_NAME + + +CHECKPOINT_NAMES = { + SAFE_ADAPTER_WEIGHTS_NAME, + ADAPTER_WEIGHTS_NAME, + SAFE_WEIGHTS_INDEX_NAME, + SAFE_WEIGHTS_NAME, + WEIGHTS_INDEX_NAME, + WEIGHTS_NAME, +} CHOICES = ["A", "B", "C", "D"] @@ -26,9 +39,9 @@ LAYERNORM_NAMES = {"norm", "ln"} METHODS = ["full", "freeze", "lora"] -MOD_SUPPORTED_MODELS = ["bloom", "falcon", "gemma", "llama", "mistral", "mixtral", "phi", "starcoder2"] +MOD_SUPPORTED_MODELS = {"bloom", "falcon", "gemma", "llama", "mistral", "mixtral", "phi", "starcoder2"} -PEFT_METHODS = ["lora"] +PEFT_METHODS = {"lora"} RUNNING_LOG = "running_log.txt" @@ -49,9 +62,9 @@ TRAINING_STAGES = { "Pre-Training": "pt", } -STAGES_USE_PAIR_DATA = ["rm", "dpo", "orpo"] +STAGES_USE_PAIR_DATA = {"rm", "dpo"} -SUPPORTED_CLASS_FOR_S2ATTN = ["llama"] +SUPPORTED_CLASS_FOR_S2ATTN = {"llama"} V_HEAD_WEIGHTS_NAME = "value_head.bin" diff --git a/src/llamafactory/hparams/parser.py b/src/llamafactory/hparams/parser.py index adb206f8..b3c673be 100644 --- a/src/llamafactory/hparams/parser.py +++ b/src/llamafactory/hparams/parser.py @@ -11,6 +11,7 @@ from transformers.trainer_utils import get_last_checkpoint from transformers.utils import is_torch_bf16_gpu_available from transformers.utils.versions import require_version +from ..extras.constants import CHECKPOINT_NAMES from ..extras.logging import get_logger from ..extras.misc import check_dependencies, get_current_device from .data_args import DataArguments @@ -255,13 +256,15 @@ def get_train_args(args: Optional[Dict[str, Any]] = None) -> _TRAIN_CLS: and can_resume_from_checkpoint ): last_checkpoint = get_last_checkpoint(training_args.output_dir) + if last_checkpoint is None and any( + os.path.isfile(os.path.join(training_args.output_dir, name)) for name in CHECKPOINT_NAMES + ): + raise ValueError("Output directory already exists and is not empty. Please set `overwrite_output_dir`.") + if last_checkpoint is not None: training_args.resume_from_checkpoint = last_checkpoint - logger.info( - "Resuming training from {}. Change `output_dir` or use `overwrite_output_dir` to avoid.".format( - training_args.resume_from_checkpoint - ) - ) + logger.info("Resuming training from {}.".format(training_args.resume_from_checkpoint)) + logger.info("Change `output_dir` or use `overwrite_output_dir` to avoid.") if ( finetuning_args.stage in ["rm", "ppo"] diff --git a/src/llamafactory/webui/chatter.py b/src/llamafactory/webui/chatter.py index a92f6ef7..c82710d3 100644 --- a/src/llamafactory/webui/chatter.py +++ b/src/llamafactory/webui/chatter.py @@ -6,6 +6,7 @@ from numpy.typing import NDArray from ..chat import ChatModel from ..data import Role +from ..extras.constants import PEFT_METHODS from ..extras.misc import torch_gc from ..extras.packages import is_gradio_available from .common import get_save_dir @@ -44,13 +45,14 @@ class WebChatModel(ChatModel): def load_model(self, data) -> Generator[str, None, None]: get = lambda elem_id: data[self.manager.get_elem_by_id(elem_id)] - lang = get("top.lang") + lang, model_name, model_path = get("top.lang"), get("top.model_name"), get("top.model_path") + finetuning_type, checkpoint_path = get("top.finetuning_type"), get("top.checkpoint_path") error = "" if self.loaded: error = ALERTS["err_exists"][lang] - elif not get("top.model_name"): + elif not model_name: error = ALERTS["err_no_model"][lang] - elif not get("top.model_path"): + elif not model_path: error = ALERTS["err_no_path"][lang] elif self.demo_mode: error = ALERTS["err_demo"][lang] @@ -60,21 +62,10 @@ class WebChatModel(ChatModel): yield error return - if get("top.adapter_path"): - adapter_name_or_path = ",".join( - [ - get_save_dir(get("top.model_name"), get("top.finetuning_type"), adapter) - for adapter in get("top.adapter_path") - ] - ) - else: - adapter_name_or_path = None - yield ALERTS["info_loading"][lang] args = dict( - model_name_or_path=get("top.model_path"), - adapter_name_or_path=adapter_name_or_path, - finetuning_type=get("top.finetuning_type"), + model_name_or_path=model_path, + finetuning_type=finetuning_type, quantization_bit=int(get("top.quantization_bit")) if get("top.quantization_bit") in ["8", "4"] else None, template=get("top.template"), flash_attn="fa2" if get("top.booster") == "flashattn2" else "auto", @@ -83,8 +74,16 @@ class WebChatModel(ChatModel): rope_scaling=get("top.rope_scaling") if get("top.rope_scaling") in ["linear", "dynamic"] else None, infer_backend=get("infer.infer_backend"), ) - super().__init__(args) + if checkpoint_path: + if finetuning_type in PEFT_METHODS: # list + args["adapter_name_or_path"] = ",".join( + [get_save_dir(model_name, finetuning_type, adapter) for adapter in checkpoint_path] + ) + else: # str + args["model_name_or_path"] = get_save_dir(model_name, finetuning_type, checkpoint_path) + + super().__init__(args) yield ALERTS["info_loaded"][lang] def unload_model(self, data) -> Generator[str, None, None]: diff --git a/src/llamafactory/webui/common.py b/src/llamafactory/webui/common.py index ea82fd88..62004bce 100644 --- a/src/llamafactory/webui/common.py +++ b/src/llamafactory/webui/common.py @@ -1,12 +1,12 @@ import json import os from collections import defaultdict -from typing import Any, Dict, Optional +from typing import Any, Dict, Optional, Tuple -from peft.utils import SAFETENSORS_WEIGHTS_NAME, WEIGHTS_NAME from yaml import safe_dump, safe_load from ..extras.constants import ( + CHECKPOINT_NAMES, DATA_CONFIG, DEFAULT_MODULE, DEFAULT_TEMPLATE, @@ -29,7 +29,6 @@ if is_gradio_available(): logger = get_logger(__name__) -ADAPTER_NAMES = {WEIGHTS_NAME, SAFETENSORS_WEIGHTS_NAME} DEFAULT_CACHE_DIR = "cache" DEFAULT_CONFIG_DIR = "config" DEFAULT_DATA_DIR = "data" @@ -38,19 +37,31 @@ USER_CONFIG = "user_config.yaml" def get_save_dir(*paths: str) -> os.PathLike: + r""" + Gets the path to saved model checkpoints. + """ paths = (path.replace(os.path.sep, "").replace(" ", "").strip() for path in paths) return os.path.join(DEFAULT_SAVE_DIR, *paths) def get_config_path() -> os.PathLike: + r""" + Gets the path to user config. + """ return os.path.join(DEFAULT_CACHE_DIR, USER_CONFIG) -def get_save_path(config_path: str) -> os.PathLike: +def get_arg_save_path(config_path: str) -> os.PathLike: + r""" + Gets the path to saved arguments. + """ return os.path.join(DEFAULT_CONFIG_DIR, config_path) def load_config() -> Dict[str, Any]: + r""" + Loads user config if exists. + """ try: with open(get_config_path(), "r", encoding="utf-8") as f: return safe_load(f) @@ -59,6 +70,9 @@ def load_config() -> Dict[str, Any]: def save_config(lang: str, model_name: Optional[str] = None, model_path: Optional[str] = None) -> None: + r""" + Saves user config. + """ os.makedirs(DEFAULT_CACHE_DIR, exist_ok=True) user_config = load_config() user_config["lang"] = lang or user_config["lang"] @@ -69,23 +83,10 @@ def save_config(lang: str, model_name: Optional[str] = None, model_path: Optiona safe_dump(user_config, f) -def load_args(config_path: str) -> Optional[Dict[str, Any]]: - try: - with open(get_save_path(config_path), "r", encoding="utf-8") as f: - return safe_load(f) - except Exception: - return None - - -def save_args(config_path: str, config_dict: Dict[str, Any]) -> str: - os.makedirs(DEFAULT_CONFIG_DIR, exist_ok=True) - with open(get_save_path(config_path), "w", encoding="utf-8") as f: - safe_dump(config_dict, f) - - return str(get_save_path(config_path)) - - -def get_model_path(model_name: str) -> str: +def get_model_path(model_name: str) -> Optional[str]: + r""" + Gets the model path according to the model name. + """ user_config = load_config() path_dict: Dict[DownloadSource, str] = SUPPORTED_MODELS.get(model_name, defaultdict(str)) model_path = user_config["path_dict"].get(model_name, None) or path_dict.get(DownloadSource.DEFAULT, None) @@ -99,40 +100,71 @@ def get_model_path(model_name: str) -> str: def get_prefix(model_name: str) -> str: + r""" + Gets the prefix of the model name to obtain the model family. + """ return model_name.split("-")[0] +def get_model_info(model_name: str) -> Tuple[str, str, bool]: + r""" + Gets the necessary information of this model. + + Returns: + model_path (str) + template (str) + visual (bool) + """ + return get_model_path(model_name), get_template(model_name), get_visual(model_name) + + def get_module(model_name: str) -> str: - return DEFAULT_MODULE.get(get_prefix(model_name), "q_proj,v_proj") + r""" + Gets the LoRA modules of this model. + """ + return DEFAULT_MODULE.get(get_prefix(model_name), "all") def get_template(model_name: str) -> str: + r""" + Gets the template name if the model is a chat model. + """ if model_name and model_name.endswith("Chat") and get_prefix(model_name) in DEFAULT_TEMPLATE: return DEFAULT_TEMPLATE[get_prefix(model_name)] return "default" def get_visual(model_name: str) -> bool: + r""" + Judges if the model is a vision language model. + """ return get_prefix(model_name) in VISION_MODELS -def list_adapters(model_name: str, finetuning_type: str) -> "gr.Dropdown": - if finetuning_type not in PEFT_METHODS: - return gr.Dropdown(value=[], choices=[], interactive=False) - - adapters = [] - if model_name and finetuning_type == "lora": +def list_checkpoints(model_name: str, finetuning_type: str) -> "gr.Dropdown": + r""" + Lists all available checkpoints. + """ + checkpoints = [] + if model_name: save_dir = get_save_dir(model_name, finetuning_type) if save_dir and os.path.isdir(save_dir): - for adapter in os.listdir(save_dir): - if os.path.isdir(os.path.join(save_dir, adapter)) and any( - os.path.isfile(os.path.join(save_dir, adapter, name)) for name in ADAPTER_NAMES + for checkpoint in os.listdir(save_dir): + if os.path.isdir(os.path.join(save_dir, checkpoint)) and any( + os.path.isfile(os.path.join(save_dir, checkpoint, name)) for name in CHECKPOINT_NAMES ): - adapters.append(adapter) - return gr.Dropdown(value=[], choices=adapters, interactive=True) + checkpoints.append(checkpoint) + + if finetuning_type in PEFT_METHODS: + return gr.Dropdown(value=[], choices=checkpoints, multiselect=True) + else: + return gr.Dropdown(value=None, choices=checkpoints, multiselect=False) def load_dataset_info(dataset_dir: str) -> Dict[str, Dict[str, Any]]: + r""" + Loads dataset_info.json. + """ if dataset_dir == "ONLINE": logger.info("dataset_dir is ONLINE, using online dataset.") return {} @@ -145,12 +177,11 @@ def load_dataset_info(dataset_dir: str) -> Dict[str, Dict[str, Any]]: return {} -def list_dataset(dataset_dir: str = None, training_stage: str = list(TRAINING_STAGES.keys())[0]) -> "gr.Dropdown": +def list_datasets(dataset_dir: str = None, training_stage: str = list(TRAINING_STAGES.keys())[0]) -> "gr.Dropdown": + r""" + Lists all available datasets in the dataset dir for the training stage. + """ dataset_info = load_dataset_info(dataset_dir if dataset_dir is not None else DEFAULT_DATA_DIR) ranking = TRAINING_STAGES[training_stage] in STAGES_USE_PAIR_DATA datasets = [k for k, v in dataset_info.items() if v.get("ranking", False) == ranking] - return gr.Dropdown(value=[], choices=datasets) - - -def autoset_packing(training_stage: str = list(TRAINING_STAGES.keys())[0]) -> "gr.Button": - return gr.Button(value=(TRAINING_STAGES[training_stage] == "pt")) + return gr.Dropdown(choices=datasets) diff --git a/src/llamafactory/webui/components/eval.py b/src/llamafactory/webui/components/eval.py index 8b70283b..99215fc2 100644 --- a/src/llamafactory/webui/components/eval.py +++ b/src/llamafactory/webui/components/eval.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING, Dict from ...extras.packages import is_gradio_available -from ..common import DEFAULT_DATA_DIR, list_dataset +from ..common import DEFAULT_DATA_DIR, list_datasets from .data import create_preview_box @@ -74,6 +74,6 @@ def create_eval_tab(engine: "Engine") -> Dict[str, "Component"]: stop_btn.click(engine.runner.set_abort) resume_btn.change(engine.runner.monitor, outputs=output_elems, concurrency_limit=None) - dataset_dir.change(list_dataset, [dataset_dir], [dataset], queue=False) + dataset.focus(list_datasets, [dataset_dir], [dataset], queue=False) return elem_dict diff --git a/src/llamafactory/webui/components/export.py b/src/llamafactory/webui/components/export.py index 134b77e0..2f354011 100644 --- a/src/llamafactory/webui/components/export.py +++ b/src/llamafactory/webui/components/export.py @@ -1,5 +1,6 @@ -from typing import TYPE_CHECKING, Dict, Generator, List +from typing import TYPE_CHECKING, Dict, Generator, List, Union +from ...extras.constants import PEFT_METHODS from ...extras.misc import torch_gc from ...extras.packages import is_gradio_available from ...train.tuner import export_model @@ -24,8 +25,8 @@ def save_model( lang: str, model_name: str, model_path: str, - adapter_path: List[str], finetuning_type: str, + checkpoint_path: Union[str, List[str]], template: str, visual_inputs: bool, export_size: int, @@ -45,9 +46,9 @@ def save_model( error = ALERTS["err_no_export_dir"][lang] elif export_quantization_bit in GPTQ_BITS and not export_quantization_dataset: error = ALERTS["err_no_dataset"][lang] - elif export_quantization_bit not in GPTQ_BITS and not adapter_path: + elif export_quantization_bit not in GPTQ_BITS and not checkpoint_path: error = ALERTS["err_no_adapter"][lang] - elif export_quantization_bit in GPTQ_BITS and adapter_path: + elif export_quantization_bit in GPTQ_BITS and isinstance(checkpoint_path, list): error = ALERTS["err_gptq_lora"][lang] if error: @@ -55,16 +56,8 @@ def save_model( yield error return - if adapter_path: - adapter_name_or_path = ",".join( - [get_save_dir(model_name, finetuning_type, adapter) for adapter in adapter_path] - ) - else: - adapter_name_or_path = None - args = dict( model_name_or_path=model_path, - adapter_name_or_path=adapter_name_or_path, finetuning_type=finetuning_type, template=template, visual_inputs=visual_inputs, @@ -77,6 +70,14 @@ def save_model( export_legacy_format=export_legacy_format, ) + if checkpoint_path: + if finetuning_type in PEFT_METHODS: # list + args["adapter_name_or_path"] = ",".join( + [get_save_dir(model_name, finetuning_type, adapter) for adapter in checkpoint_path] + ) + else: # str + args["model_name_or_path"] = get_save_dir(model_name, finetuning_type, checkpoint_path) + yield ALERTS["info_exporting"][lang] export_model(args) torch_gc() @@ -86,7 +87,7 @@ def save_model( def create_export_tab(engine: "Engine") -> Dict[str, "Component"]: with gr.Row(): export_size = gr.Slider(minimum=1, maximum=100, value=1, step=1) - export_quantization_bit = gr.Dropdown(choices=["none", "8", "4", "3", "2"], value="none") + export_quantization_bit = gr.Dropdown(choices=["none"] + GPTQ_BITS, value="none") export_quantization_dataset = gr.Textbox(value="data/c4_demo.json") export_device = gr.Radio(choices=["cpu", "cuda"], value="cpu") export_legacy_format = gr.Checkbox() @@ -104,8 +105,8 @@ def create_export_tab(engine: "Engine") -> Dict[str, "Component"]: engine.manager.get_elem_by_id("top.lang"), engine.manager.get_elem_by_id("top.model_name"), engine.manager.get_elem_by_id("top.model_path"), - engine.manager.get_elem_by_id("top.adapter_path"), engine.manager.get_elem_by_id("top.finetuning_type"), + engine.manager.get_elem_by_id("top.checkpoint_path"), engine.manager.get_elem_by_id("top.template"), engine.manager.get_elem_by_id("top.visual_inputs"), export_size, diff --git a/src/llamafactory/webui/components/top.py b/src/llamafactory/webui/components/top.py index a75a4d62..ca093584 100644 --- a/src/llamafactory/webui/components/top.py +++ b/src/llamafactory/webui/components/top.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Dict from ...data import templates from ...extras.constants import METHODS, SUPPORTED_MODELS from ...extras.packages import is_gradio_available -from ..common import get_model_path, get_template, get_visual, list_adapters, save_config +from ..common import get_model_info, list_checkpoints, save_config from ..utils import can_quantize @@ -25,8 +25,7 @@ def create_top() -> Dict[str, "Component"]: with gr.Row(): finetuning_type = gr.Dropdown(choices=METHODS, value="lora", scale=1) - adapter_path = gr.Dropdown(multiselect=True, allow_custom_value=True, scale=5) - refresh_btn = gr.Button(scale=1) + checkpoint_path = gr.Dropdown(multiselect=True, allow_custom_value=True, scale=6) with gr.Accordion(open=False) as advanced_tab: with gr.Row(): @@ -36,27 +35,17 @@ def create_top() -> Dict[str, "Component"]: booster = gr.Radio(choices=["none", "flashattn2", "unsloth"], value="none", scale=3) visual_inputs = gr.Checkbox(scale=1) - model_name.change(list_adapters, [model_name, finetuning_type], [adapter_path], queue=False).then( - get_model_path, [model_name], [model_path], queue=False - ).then(get_template, [model_name], [template], queue=False).then( - get_visual, [model_name], [visual_inputs], queue=False - ) # do not save config since the below line will save - + model_name.change(get_model_info, [model_name], [model_path, template, visual_inputs], queue=False) model_path.change(save_config, inputs=[lang, model_name, model_path], queue=False) - - finetuning_type.change(list_adapters, [model_name, finetuning_type], [adapter_path], queue=False).then( - can_quantize, [finetuning_type], [quantization_bit], queue=False - ) - - refresh_btn.click(list_adapters, [model_name, finetuning_type], [adapter_path], queue=False) + finetuning_type.change(can_quantize, [finetuning_type], [quantization_bit], queue=False) + checkpoint_path.focus(list_checkpoints, [model_name, finetuning_type], [checkpoint_path], queue=False) return dict( lang=lang, model_name=model_name, model_path=model_path, finetuning_type=finetuning_type, - adapter_path=adapter_path, - refresh_btn=refresh_btn, + checkpoint_path=checkpoint_path, advanced_tab=advanced_tab, quantization_bit=quantization_bit, template=template, diff --git a/src/llamafactory/webui/components/train.py b/src/llamafactory/webui/components/train.py index 8db5c2ba..6f742bb1 100644 --- a/src/llamafactory/webui/components/train.py +++ b/src/llamafactory/webui/components/train.py @@ -5,8 +5,9 @@ from transformers.trainer_utils import SchedulerType from ...extras.constants import TRAINING_STAGES from ...extras.misc import get_device_count from ...extras.packages import is_gradio_available -from ..common import DEFAULT_DATA_DIR, autoset_packing, list_adapters, list_dataset -from ..components.data import create_preview_box +from ..common import DEFAULT_DATA_DIR, list_checkpoints, list_datasets +from ..utils import change_stage, check_output_dir, list_output_dirs +from .data import create_preview_box if is_gradio_available(): @@ -256,11 +257,12 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: with gr.Row(): with gr.Column(scale=3): with gr.Row(): - output_dir = gr.Textbox() + initial_dir = gr.Textbox(visible=False, interactive=False) + output_dir = gr.Dropdown(allow_custom_value=True) config_path = gr.Textbox() with gr.Row(): - device_count = gr.Textbox(value=str(get_device_count()), interactive=False) + device_count = gr.Textbox(value=str(get_device_count() or 1), interactive=False) ds_stage = gr.Dropdown(choices=["none", "2", "3"], value="none") ds_offload = gr.Checkbox() @@ -282,6 +284,7 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: arg_load_btn=arg_load_btn, start_btn=start_btn, stop_btn=stop_btn, + initial_dir=initial_dir, output_dir=output_dir, config_path=config_path, device_count=device_count, @@ -295,24 +298,24 @@ def create_train_tab(engine: "Engine") -> Dict[str, "Component"]: ) output_elems = [output_box, progress_bar, loss_viewer] + lang = engine.manager.get_elem_by_id("top.lang") + model_name = engine.manager.get_elem_by_id("top.model_name") + finetuning_type = engine.manager.get_elem_by_id("top.finetuning_type") + cmd_preview_btn.click(engine.runner.preview_train, input_elems, output_elems, concurrency_limit=None) arg_save_btn.click(engine.runner.save_args, input_elems, output_elems, concurrency_limit=None) arg_load_btn.click( - engine.runner.load_args, - [engine.manager.get_elem_by_id("top.lang"), config_path], - list(input_elems) + [output_box], - concurrency_limit=None, + engine.runner.load_args, [lang, config_path], list(input_elems) + [output_box], concurrency_limit=None ) start_btn.click(engine.runner.run_train, input_elems, output_elems) stop_btn.click(engine.runner.set_abort) resume_btn.change(engine.runner.monitor, outputs=output_elems, concurrency_limit=None) - dataset_dir.change(list_dataset, [dataset_dir, training_stage], [dataset], queue=False) - training_stage.change(list_dataset, [dataset_dir, training_stage], [dataset], queue=False).then( - list_adapters, - [engine.manager.get_elem_by_id("top.model_name"), engine.manager.get_elem_by_id("top.finetuning_type")], - [reward_model], - queue=False, - ).then(autoset_packing, [training_stage], [packing], queue=False) + training_stage.change(change_stage, [training_stage], [dataset, packing], queue=False) + dataset.focus(list_datasets, [dataset_dir, training_stage], [dataset], queue=False) + reward_model.focus(list_checkpoints, [model_name, finetuning_type], [reward_model], queue=False) + output_dir.change( + list_output_dirs, [model_name, finetuning_type, initial_dir], [output_dir], concurrency_limit=None + ).then(check_output_dir, inputs=[lang, model_name, finetuning_type, output_dir], concurrency_limit=None) return elem_dict diff --git a/src/llamafactory/webui/engine.py b/src/llamafactory/webui/engine.py index fb568737..00877115 100644 --- a/src/llamafactory/webui/engine.py +++ b/src/llamafactory/webui/engine.py @@ -1,11 +1,11 @@ from typing import TYPE_CHECKING, Any, Dict from .chatter import WebChatModel -from .common import get_model_path, list_dataset, load_config +from .common import load_config from .locales import LOCALES from .manager import Manager from .runner import Runner -from .utils import get_time, save_ds_config +from .utils import create_ds_config, get_time if TYPE_CHECKING: @@ -20,7 +20,7 @@ class Engine: self.runner = Runner(self.manager, demo_mode) self.chatter = WebChatModel(self.manager, demo_mode, lazy_init=(not pure_chat)) if not demo_mode: - save_ds_config() + create_ds_config() def _update_component(self, input_dict: Dict[str, Dict[str, Any]]) -> Dict["Component", "Component"]: r""" @@ -40,16 +40,15 @@ class Engine: init_dict = {"top.lang": {"value": lang}, "infer.chat_box": {"visible": self.chatter.loaded}} if not self.pure_chat: - init_dict["train.dataset"] = {"choices": list_dataset().choices} - init_dict["eval.dataset"] = {"choices": list_dataset().choices} - init_dict["train.output_dir"] = {"value": "train_{}".format(get_time())} - init_dict["train.config_path"] = {"value": "{}.yaml".format(get_time())} - init_dict["eval.output_dir"] = {"value": "eval_{}".format(get_time())} + current_time = get_time() + init_dict["train.initial_dir"] = {"value": "train_{}".format(current_time)} + init_dict["train.output_dir"] = {"value": "train_{}".format(current_time)} + init_dict["train.config_path"] = {"value": "{}.yaml".format(current_time)} + init_dict["eval.output_dir"] = {"value": "eval_{}".format(current_time)} init_dict["infer.image_box"] = {"visible": False} if user_config.get("last_model", None): init_dict["top.model_name"] = {"value": user_config["last_model"]} - init_dict["top.model_path"] = {"value": get_model_path(user_config["last_model"])} yield self._update_component(init_dict) diff --git a/src/llamafactory/webui/locales.py b/src/llamafactory/webui/locales.py index 4657f9a3..5b11c853 100644 --- a/src/llamafactory/webui/locales.py +++ b/src/llamafactory/webui/locales.py @@ -46,26 +46,15 @@ LOCALES = { "label": "微调方法", }, }, - "adapter_path": { + "checkpoint_path": { "en": { - "label": "Adapter path", + "label": "Checkpoint path", }, "ru": { - "label": "Путь к адаптеру", + "label": "Путь контрольной точки", }, "zh": { - "label": "适配器路径", - }, - }, - "refresh_btn": { - "en": { - "value": "Refresh adapters", - }, - "ru": { - "value": "Обновить адаптеры", - }, - "zh": { - "value": "刷新适配器", + "label": "检查点路径", }, }, "advanced_tab": { @@ -1531,6 +1520,11 @@ ALERTS = { "ru": "Среда CUDA не обнаружена.", "zh": "未检测到 CUDA 环境。", }, + "warn_output_dir_exists": { + "en": "Output dir already exists, will resume training from here.", + "ru": "Выходной каталог уже существует, обучение будет продолжено отсюда.", + "zh": "输出目录已存在,将从该断点恢复训练。", + }, "info_aborting": { "en": "Aborted, wait for terminating...", "ru": "Прервано, ожидание завершения...", diff --git a/src/llamafactory/webui/manager.py b/src/llamafactory/webui/manager.py index f65fa804..326fdb8d 100644 --- a/src/llamafactory/webui/manager.py +++ b/src/llamafactory/webui/manager.py @@ -55,7 +55,7 @@ class Manager: self._id_to_elem["top.model_name"], self._id_to_elem["top.model_path"], self._id_to_elem["top.finetuning_type"], - self._id_to_elem["top.adapter_path"], + self._id_to_elem["top.checkpoint_path"], self._id_to_elem["top.quantization_bit"], self._id_to_elem["top.template"], self._id_to_elem["top.rope_scaling"], diff --git a/src/llamafactory/webui/runner.py b/src/llamafactory/webui/runner.py index c2e46e97..7a305d62 100644 --- a/src/llamafactory/webui/runner.py +++ b/src/llamafactory/webui/runner.py @@ -7,12 +7,12 @@ from typing import TYPE_CHECKING, Any, Dict, Generator, Optional import psutil from transformers.trainer import TRAINING_ARGS_NAME -from ..extras.constants import TRAINING_STAGES +from ..extras.constants import PEFT_METHODS, TRAINING_STAGES from ..extras.misc import is_gpu_or_npu_available, torch_gc from ..extras.packages import is_gradio_available -from .common import DEFAULT_CACHE_DIR, get_module, get_save_dir, load_args, load_config, save_args +from .common import DEFAULT_CACHE_DIR, get_module, get_save_dir, load_config from .locales import ALERTS -from .utils import gen_cmd, get_eval_results, get_trainer_info, save_cmd +from .utils import gen_cmd, get_eval_results, get_trainer_info, load_args, save_args, save_cmd if is_gradio_available(): @@ -85,26 +85,16 @@ class Runner: def _parse_train_args(self, data: Dict["Component", Any]) -> Dict[str, Any]: get = lambda elem_id: data[self.manager.get_elem_by_id(elem_id)] + model_name, finetuning_type = get("top.model_name"), get("top.finetuning_type") user_config = load_config() - if get("top.adapter_path"): - adapter_name_or_path = ",".join( - [ - get_save_dir(get("top.model_name"), get("top.finetuning_type"), adapter) - for adapter in get("top.adapter_path") - ] - ) - else: - adapter_name_or_path = None - args = dict( stage=TRAINING_STAGES[get("train.training_stage")], do_train=True, model_name_or_path=get("top.model_path"), - adapter_name_or_path=adapter_name_or_path, cache_dir=user_config.get("cache_dir", None), preprocessing_num_workers=16, - finetuning_type=get("top.finetuning_type"), + finetuning_type=finetuning_type, quantization_bit=int(get("top.quantization_bit")) if get("top.quantization_bit") in ["8", "4"] else None, template=get("top.template"), rope_scaling=get("top.rope_scaling") if get("top.rope_scaling") in ["linear", "dynamic"] else None, @@ -134,13 +124,23 @@ class Runner: report_to="all" if get("train.report_to") else "none", use_galore=get("train.use_galore"), use_badam=get("train.use_badam"), - output_dir=get_save_dir(get("top.model_name"), get("top.finetuning_type"), get("train.output_dir")), + output_dir=get_save_dir(model_name, finetuning_type, get("train.output_dir")), fp16=(get("train.compute_type") == "fp16"), bf16=(get("train.compute_type") == "bf16"), pure_bf16=(get("train.compute_type") == "pure_bf16"), plot_loss=True, + ddp_timeout=180000000, ) + # checkpoints + if get("top.checkpoint_path"): + if finetuning_type in PEFT_METHODS: # list + args["adapter_name_or_path"] = ",".join( + [get_save_dir(model_name, finetuning_type, adapter) for adapter in get("top.checkpoint_path")] + ) + else: # str + args["model_name_or_path"] = get_save_dir(model_name, finetuning_type, get("top.checkpoint_path")) + # freeze config if args["finetuning_type"] == "freeze": args["freeze_trainable_layers"] = get("train.freeze_trainable_layers") @@ -156,7 +156,7 @@ class Runner: args["create_new_adapter"] = get("train.create_new_adapter") args["use_rslora"] = get("train.use_rslora") args["use_dora"] = get("train.use_dora") - args["lora_target"] = get("train.lora_target") or get_module(get("top.model_name")) + args["lora_target"] = get("train.lora_target") or get_module(model_name) args["additional_target"] = get("train.additional_target") or None if args["use_llama_pro"]: @@ -164,13 +164,14 @@ class Runner: # rlhf config if args["stage"] == "ppo": - args["reward_model"] = ",".join( - [ - get_save_dir(get("top.model_name"), get("top.finetuning_type"), adapter) - for adapter in get("train.reward_model") - ] - ) - args["reward_model_type"] = "lora" if args["finetuning_type"] == "lora" else "full" + if finetuning_type in PEFT_METHODS: + args["reward_model"] = ",".join( + [get_save_dir(model_name, finetuning_type, adapter) for adapter in get("train.reward_model")] + ) + else: + args["reward_model"] = get_save_dir(model_name, finetuning_type, get("train.reward_model")) + + args["reward_model_type"] = "lora" if finetuning_type == "lora" else "full" args["ppo_score_norm"] = get("train.ppo_score_norm") args["ppo_whiten_rewards"] = get("train.ppo_whiten_rewards") args["top_k"] = 0 @@ -211,25 +212,15 @@ class Runner: def _parse_eval_args(self, data: Dict["Component", Any]) -> Dict[str, Any]: get = lambda elem_id: data[self.manager.get_elem_by_id(elem_id)] + model_name, finetuning_type = get("top.model_name"), get("top.finetuning_type") user_config = load_config() - if get("top.adapter_path"): - adapter_name_or_path = ",".join( - [ - get_save_dir(get("top.model_name"), get("top.finetuning_type"), adapter) - for adapter in get("top.adapter_path") - ] - ) - else: - adapter_name_or_path = None - args = dict( stage="sft", model_name_or_path=get("top.model_path"), - adapter_name_or_path=adapter_name_or_path, cache_dir=user_config.get("cache_dir", None), preprocessing_num_workers=16, - finetuning_type=get("top.finetuning_type"), + finetuning_type=finetuning_type, quantization_bit=int(get("top.quantization_bit")) if get("top.quantization_bit") in ["8", "4"] else None, template=get("top.template"), rope_scaling=get("top.rope_scaling") if get("top.rope_scaling") in ["linear", "dynamic"] else None, @@ -245,7 +236,7 @@ class Runner: max_new_tokens=get("eval.max_new_tokens"), top_p=get("eval.top_p"), temperature=get("eval.temperature"), - output_dir=get_save_dir(get("top.model_name"), get("top.finetuning_type"), get("eval.output_dir")), + output_dir=get_save_dir(model_name, finetuning_type, get("eval.output_dir")), ) if get("eval.predict"): @@ -253,6 +244,14 @@ class Runner: else: args["do_eval"] = True + if get("top.checkpoint_path"): + if finetuning_type in PEFT_METHODS: # list + args["adapter_name_or_path"] = ",".join( + [get_save_dir(model_name, finetuning_type, adapter) for adapter in get("top.checkpoint_path")] + ) + else: # str + args["model_name_or_path"] = get_save_dir(model_name, finetuning_type, get("top.checkpoint_path")) + return args def _preview(self, data: Dict["Component", Any], do_train: bool) -> Generator[Dict["Component", str], None, None]: @@ -296,9 +295,7 @@ class Runner: self.running = True get = lambda elem_id: self.running_data[self.manager.get_elem_by_id(elem_id)] - lang = get("top.lang") - model_name = get("top.model_name") - finetuning_type = get("top.finetuning_type") + lang, model_name, finetuning_type = get("top.lang"), get("top.model_name"), get("top.finetuning_type") output_dir = get("{}.output_dir".format("train" if self.do_train else "eval")) output_path = get_save_dir(model_name, finetuning_type, output_dir) @@ -356,7 +353,7 @@ class Runner: config_dict: Dict[str, Any] = {} lang = data[self.manager.get_elem_by_id("top.lang")] config_path = data[self.manager.get_elem_by_id("train.config_path")] - skip_ids = ["top.lang", "top.model_path", "train.output_dir", "train.config_path"] + skip_ids = ["top.lang", "top.model_path", "train.output_dir", "train.config_path", "train.device_count"] for elem, value in data.items(): elem_id = self.manager.get_id_by_elem(elem) if elem_id not in skip_ids: diff --git a/src/llamafactory/webui/utils.py b/src/llamafactory/webui/utils.py index 654d1f8d..09cefa0e 100644 --- a/src/llamafactory/webui/utils.py +++ b/src/llamafactory/webui/utils.py @@ -3,12 +3,13 @@ import os from datetime import datetime from typing import Any, Dict, List, Optional, Tuple -from yaml import safe_dump +from transformers.trainer_utils import get_last_checkpoint +from yaml import safe_dump, safe_load -from ..extras.constants import RUNNING_LOG, TRAINER_CONFIG, TRAINER_LOG +from ..extras.constants import PEFT_METHODS, RUNNING_LOG, TRAINER_CONFIG, TRAINER_LOG, TRAINING_STAGES from ..extras.packages import is_gradio_available, is_matplotlib_available from ..extras.ploting import gen_loss_plot -from .common import DEFAULT_CACHE_DIR +from .common import DEFAULT_CACHE_DIR, DEFAULT_CONFIG_DIR, get_arg_save_path, get_save_dir from .locales import ALERTS @@ -17,13 +18,26 @@ if is_gradio_available(): def can_quantize(finetuning_type: str) -> "gr.Dropdown": - if finetuning_type != "lora": + r""" + Judges if the quantization is available in this finetuning type. + """ + if finetuning_type not in PEFT_METHODS: return gr.Dropdown(value="none", interactive=False) else: return gr.Dropdown(interactive=True) +def change_stage(training_stage: str = list(TRAINING_STAGES.keys())[0]) -> Tuple[List[str], bool]: + r""" + Modifys states after changing the training stage. + """ + return [], TRAINING_STAGES[training_stage] == "pt" + + def check_json_schema(text: str, lang: str) -> None: + r""" + Checks if the json schema is valid. + """ try: tools = json.loads(text) if tools: @@ -38,11 +52,17 @@ def check_json_schema(text: str, lang: str) -> None: def clean_cmd(args: Dict[str, Any]) -> Dict[str, Any]: + r""" + Removes args with NoneType or False or empty string value. + """ no_skip_keys = ["packing"] return {k: v for k, v in args.items() if (k in no_skip_keys) or (v is not None and v is not False and v != "")} def gen_cmd(args: Dict[str, Any]) -> str: + r""" + Generates arguments for previewing. + """ cmd_lines = ["llamafactory-cli train "] for k, v in clean_cmd(args).items(): cmd_lines.append(" --{} {} ".format(k, str(v))) @@ -52,17 +72,39 @@ def gen_cmd(args: Dict[str, Any]) -> str: return cmd_text +def save_cmd(args: Dict[str, Any]) -> str: + r""" + Saves arguments to launch training. + """ + output_dir = args["output_dir"] + os.makedirs(output_dir, exist_ok=True) + + with open(os.path.join(output_dir, TRAINER_CONFIG), "w", encoding="utf-8") as f: + safe_dump(clean_cmd(args), f) + + return os.path.join(output_dir, TRAINER_CONFIG) + + def get_eval_results(path: os.PathLike) -> str: + r""" + Gets scores after evaluation. + """ with open(path, "r", encoding="utf-8") as f: result = json.dumps(json.load(f), indent=4) return "```json\n{}\n```\n".format(result) def get_time() -> str: + r""" + Gets current date and time. + """ return datetime.now().strftime(r"%Y-%m-%d-%H-%M-%S") def get_trainer_info(output_path: os.PathLike, do_train: bool) -> Tuple[str, "gr.Slider", Optional["gr.Plot"]]: + r""" + Gets training infomation for monitor. + """ running_log = "" running_progress = gr.Slider(visible=False) running_loss = None @@ -96,17 +138,56 @@ def get_trainer_info(output_path: os.PathLike, do_train: bool) -> Tuple[str, "gr return running_log, running_progress, running_loss -def save_cmd(args: Dict[str, Any]) -> str: - output_dir = args["output_dir"] - os.makedirs(output_dir, exist_ok=True) - - with open(os.path.join(output_dir, TRAINER_CONFIG), "w", encoding="utf-8") as f: - safe_dump(clean_cmd(args), f) - - return os.path.join(output_dir, TRAINER_CONFIG) +def load_args(config_path: str) -> Optional[Dict[str, Any]]: + r""" + Loads saved arguments. + """ + try: + with open(get_arg_save_path(config_path), "r", encoding="utf-8") as f: + return safe_load(f) + except Exception: + return None -def save_ds_config() -> None: +def save_args(config_path: str, config_dict: Dict[str, Any]) -> str: + r""" + Saves arguments. + """ + os.makedirs(DEFAULT_CONFIG_DIR, exist_ok=True) + with open(get_arg_save_path(config_path), "w", encoding="utf-8") as f: + safe_dump(config_dict, f) + + return str(get_arg_save_path(config_path)) + + +def list_output_dirs(model_name: str, finetuning_type: str, initial_dir: str) -> "gr.Dropdown": + r""" + Lists all the directories that can resume from. + """ + output_dirs = [initial_dir] + if model_name: + save_dir = get_save_dir(model_name, finetuning_type) + if save_dir and os.path.isdir(save_dir): + for folder in os.listdir(save_dir): + output_dir = os.path.join(save_dir, folder) + if os.path.isdir(output_dir) and get_last_checkpoint(output_dir) is not None: + output_dirs.append(folder) + + return gr.Dropdown(choices=output_dirs) + + +def check_output_dir(lang: str, model_name: str, finetuning_type: str, output_dir: str) -> None: + r""" + Check if output dir exists. + """ + if os.path.isdir(get_save_dir(model_name, finetuning_type, output_dir)): + gr.Warning(ALERTS["warn_output_dir_exists"][lang]) + + +def create_ds_config() -> None: + r""" + Creates deepspeed config. + """ os.makedirs(DEFAULT_CACHE_DIR, exist_ok=True) ds_config = { "train_batch_size": "auto", From 3761d7d5dd97ce2fe0098284e6d4821fc0d63d30 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Thu, 30 May 2024 00:04:26 +0800 Subject: [PATCH 033/169] Update README.md --- data/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/README.md b/data/README.md index dd7ca201..5ceae666 100644 --- a/data/README.md +++ b/data/README.md @@ -12,6 +12,7 @@ Currently we support datasets in **alpaca** and **sharegpt** format. "ranking": "whether the dataset is a preference dataset or not. (default: False)", "subset": "the name of the subset. (optional, default: None)", "folder": "the name of the folder of the dataset repository on the Hugging Face hub. (optional, default: None)", + "num_samples": "the number of samples in the dataset used for training. (optional, default: None)", "columns (optional)": { "prompt": "the column name in the dataset containing the prompts. (default: instruction)", "query": "the column name in the dataset containing the queries. (default: input)", @@ -32,9 +33,8 @@ Currently we support datasets in **alpaca** and **sharegpt** format. "assistant_tag": "the value of the role_tag represents the assistant. (default: gpt)", "observation_tag": "the value of the role_tag represents the tool results. (default: observation)", "function_tag": "the value of the role_tag represents the function call. (default: function_call)", - "system_tag": "the value of the role_tag represents the system prompt. (default: system, can override system column)", - }, - "sample_num": "the number of samples from this dataset can be greater than the total amount of the dataset. (default: None)" + "system_tag": "the value of the role_tag represents the system prompt. (default: system, can override system column)" + } } ``` From c8ae7e0e6571c7ca2e526da3e8adda5f8c9948f1 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Thu, 30 May 2024 00:04:47 +0800 Subject: [PATCH 034/169] Update README_zh.md --- data/README_zh.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/README_zh.md b/data/README_zh.md index 1427e48d..1795f352 100644 --- a/data/README_zh.md +++ b/data/README_zh.md @@ -12,6 +12,7 @@ "ranking": "是否为偏好数据集(可选,默认:False)", "subset": "数据集子集的名称(可选,默认:None)", "folder": "Hugging Face 仓库的文件夹名称(可选,默认:None)", + "num_samples": "该数据集中用于训练的样本数量。(可选,默认:None)", "columns(可选)": { "prompt": "数据集代表提示词的表头名称(默认:instruction)", "query": "数据集代表请求的表头名称(默认:input)", @@ -32,9 +33,8 @@ "assistant_tag": "消息中代表助手的 role_tag(默认:gpt)", "observation_tag": "消息中代表工具返回结果的 role_tag(默认:observation)", "function_tag": "消息中代表工具调用的 role_tag(默认:function_call)", - "system_tag": "消息中代表系统提示的 role_tag(默认:system,会覆盖 system 列)" - }, - "sample_num": "从该数据集采样的数量,可大于该数据集总量(默认:None)" + "system_tag": "消息中代表系统提示的 role_tag(默认:system,会覆盖 system column)" + } } ``` From 51dd454337941801d0a66eaadb0da2e007e9573d Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Thu, 30 May 2024 00:05:20 +0800 Subject: [PATCH 035/169] Update parser.py --- src/llamafactory/data/parser.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/llamafactory/data/parser.py b/src/llamafactory/data/parser.py index 99b71cf0..ec97bfc1 100644 --- a/src/llamafactory/data/parser.py +++ b/src/llamafactory/data/parser.py @@ -20,11 +20,12 @@ class DatasetAttr: """ basic configs """ load_from: Literal["hf_hub", "ms_hub", "script", "file"] dataset_name: str + formatting: Literal["alpaca", "sharegpt"] = "alpaca" + ranking: bool = False """ extra configs """ subset: Optional[str] = None folder: Optional[str] = None - ranking: bool = False - formatting: Literal["alpaca", "sharegpt"] = "alpaca" + num_samples: Optional[int] = None """ common columns """ system: Optional[str] = None tools: Optional[str] = None @@ -48,7 +49,6 @@ class DatasetAttr: observation_tag: Optional[str] = "observation" function_tag: Optional[str] = "function_call" system_tag: Optional[str] = "system" - sample_num: Optional[int] = None def __repr__(self) -> str: return self.dataset_name @@ -103,12 +103,12 @@ def get_dataset_list(data_args: "DataArguments") -> List["DatasetAttr"]: else: dataset_attr = DatasetAttr("file", dataset_name=dataset_info[name]["file_name"]) + dataset_attr.set_attr("formatting", dataset_info[name], default="alpaca") + dataset_attr.set_attr("ranking", dataset_info[name], default=False) dataset_attr.set_attr("subset", dataset_info[name]) dataset_attr.set_attr("folder", dataset_info[name]) - dataset_attr.set_attr("ranking", dataset_info[name], default=False) - dataset_attr.set_attr("formatting", dataset_info[name], default="alpaca") - dataset_attr.set_attr("sample_num", dataset_info[name]) - + dataset_attr.set_attr("num_samples", dataset_info[name]) + if "columns" in dataset_info[name]: column_names = ["system", "tools", "images", "chosen", "rejected", "kto_tag"] if dataset_attr.formatting == "alpaca": From b55fb611c57be03fb38218c7da1d96f6848496ba Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Thu, 30 May 2024 00:12:12 +0800 Subject: [PATCH 036/169] Update loader.py --- src/llamafactory/data/loader.py | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/llamafactory/data/loader.py b/src/llamafactory/data/loader.py index 5ce4392e..322eefa0 100644 --- a/src/llamafactory/data/loader.py +++ b/src/llamafactory/data/loader.py @@ -1,10 +1,9 @@ import inspect import os -import numpy as np -from numpy.random import RandomState import sys from typing import TYPE_CHECKING, Literal, Optional, Union +import numpy as np from datasets import load_dataset, load_from_disk from ..extras.constants import FILEEXT2TYPE @@ -108,20 +107,14 @@ def load_single_dataset( if data_args.streaming and (dataset_attr.load_from == "file"): # faster than specifying streaming=True dataset = dataset.to_iterable_dataset() # TODO: add num shards parameter - if data_args.max_samples is not None: # truncate dataset - num_samples = min(data_args.max_samples, len(dataset)) - dataset = dataset.select(range(num_samples)) + if dataset_attr.num_samples is not None and not data_args.streaming: + indexes = np.random.permutation(len(dataset))[: dataset_attr.num_samples] + dataset = dataset.select(indexes) + logger.info("Sampled {} examples from dataset {}.".format(dataset_attr.num_samples, dataset_attr)) - if dataset_attr.sample_num: - dataset_sample_num = dataset_attr.sample_num - logger.info(f"从 {dataset_attr.dataset_name} 采样 {dataset_sample_num} 条训练样本") - random_state = RandomState(42) - idx = random_state.permutation(len(dataset))[:dataset_sample_num] - dataset_sample_num -= len(idx) - if dataset_sample_num > 0: - idx2 = random_state.choice(len(dataset), dataset_sample_num) - idx = np.concatenate([idx, idx2], axis=0) - dataset = dataset.select(idx) + if data_args.max_samples is not None: # truncate dataset + indexes = np.random.permutation(len(dataset))[: data_args.max_samples] + dataset = dataset.select(indexes) return align_dataset(dataset, dataset_attr, data_args) From f9a88b89ca8b8f9a0c5def03b154f9d67f558edf Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Thu, 30 May 2024 00:17:21 +0800 Subject: [PATCH 037/169] Update loader.py --- src/llamafactory/data/loader.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/llamafactory/data/loader.py b/src/llamafactory/data/loader.py index 322eefa0..fa5b12c5 100644 --- a/src/llamafactory/data/loader.py +++ b/src/llamafactory/data/loader.py @@ -108,7 +108,13 @@ def load_single_dataset( dataset = dataset.to_iterable_dataset() # TODO: add num shards parameter if dataset_attr.num_samples is not None and not data_args.streaming: - indexes = np.random.permutation(len(dataset))[: dataset_attr.num_samples] + target_num = dataset_attr.num_samples + indexes = np.random.permutation(len(dataset))[:target_num] + target_num -= len(indexes) + if target_num > 0: + expand_indexes = np.random.choice(len(dataset), target_num) + indexes = np.concatenate((indexes, expand_indexes), axis=0) + dataset = dataset.select(indexes) logger.info("Sampled {} examples from dataset {}.".format(dataset_attr.num_samples, dataset_attr)) From ca5dd7c6c115a359e4b50e93f4ffcc9f2955ec2f Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Thu, 30 May 2024 00:20:20 +0800 Subject: [PATCH 038/169] Update loader.py --- src/llamafactory/data/loader.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/llamafactory/data/loader.py b/src/llamafactory/data/loader.py index fa5b12c5..d4a19e27 100644 --- a/src/llamafactory/data/loader.py +++ b/src/llamafactory/data/loader.py @@ -115,6 +115,7 @@ def load_single_dataset( expand_indexes = np.random.choice(len(dataset), target_num) indexes = np.concatenate((indexes, expand_indexes), axis=0) + assert len(indexes) == dataset_attr.num_samples, "Sample num mismatched." dataset = dataset.select(indexes) logger.info("Sampled {} examples from dataset {}.".format(dataset_attr.num_samples, dataset_attr)) From 3404e8f302d0b0308825fccedec82d8781b8c39e Mon Sep 17 00:00:00 2001 From: hiyouga <467089858@qq.com> Date: Thu, 30 May 2024 00:52:26 +0800 Subject: [PATCH 039/169] fix #3837 --- evaluation/mmlu/mmlu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evaluation/mmlu/mmlu.py b/evaluation/mmlu/mmlu.py index f3218c38..a4530250 100644 --- a/evaluation/mmlu/mmlu.py +++ b/evaluation/mmlu/mmlu.py @@ -154,7 +154,7 @@ class MMLU(datasets.GeneratorBasedBuilder): ] def _generate_examples(self, filepath): - df = pd.read_csv(filepath) + df = pd.read_csv(filepath, header=None) df.columns = ["question", "A", "B", "C", "D", "answer"] for i, instance in enumerate(df.to_dict(orient="records")): From 2f38c1f5fded2ccaa5c92bc9fe0f426e87077100 Mon Sep 17 00:00:00 2001 From: hoshi-hiyouga Date: Thu, 30 May 2024 12:48:47 +0800 Subject: [PATCH 040/169] Update wechat.jpg --- assets/wechat.jpg | Bin 196854 -> 183806 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/wechat.jpg b/assets/wechat.jpg index d1f1b609b456d53fd3c987e27d822c6134e555fa..6aaad061a7c0c308dfb0132e115f47433303b099 100644 GIT binary patch literal 183806 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