Skip to content

Commit ace8b89

Browse files
authored
Update internlm2 math (#349)
1 parent 8aaeaef commit ace8b89

File tree

6 files changed

+41
-8
lines changed

6 files changed

+41
-8
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,9 +234,10 @@ app_ui_main(infer_args)
234234
- SQL: text2sql-en, 🔥sql-create-context-en.
235235
- Text Generation: 🔥advertise-gen-zh, 🔥dureader-robust-zh.
236236
- Classification: cmnli-zh, 🔥cmnli-mini-zh, 🔥jd-sentiment-zh, 🔥hc3-zh, 🔥hc3-en.
237+
- RLHF: 🔥hh-rlhf, stack-exchange-paired.
237238
- Other: finance-en, poetry-zh, webnovel-zh, generated-chat-zh, cls-fudan-news-zh, ner-jave-zh.
238239
- Multi-Modal:
239-
- Vision: coco-en, 🔥coco-mini-en.
240+
- Vision: coco-en, 🔥coco-mini-en, coco-mini-en-2, capcha-images.
240241
- Audio: aishell1-zh, 🔥aishell1-mini-zh.
241242
- Custom Dataset
242243
- Supported Templates:

README_CN.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,9 +234,10 @@ app_ui_main(infer_args)
234234
- SQL: text2sql-en, 🔥sql-create-context-en.
235235
- 文本生成: 🔥advertise-gen-zh, 🔥dureader-robust-zh.
236236
- 分类: cmnli-zh, 🔥cmnli-mini-zh, 🔥jd-sentiment-zh, 🔥hc3-zh, 🔥hc3-en.
237+
- RLHF: 🔥hh-rlhf, stack-exchange-paired.
237238
- 其他: finance-en, poetry-zh, webnovel-zh, generated-chat-zh, cls-fudan-news-zh, ner-jave-zh.
238239
- 多模态:
239-
- 视觉: coco-en, 🔥coco-mini-en.
240+
- 视觉: coco-en, 🔥coco-mini-en, coco-mini-en-2, capcha-images.
240241
- 音频: aishell1-zh, 🔥aishell1-mini-zh.
241242
- 自定义数据集
242243
- 支持的对话模板:

docs/source/LLM/LLM微调文档.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ cd examples/pytorch/llm
146146
- 如果你使用的是**V100**等较老的GPU, 你需要设置`--dtype AUTO`或者`--dtype fp16`, 因为其不支持bf16.
147147
- 如果你的机器是A100等高性能显卡, 且使用的是qwen系列模型, 推荐你安装[**flash-attn**](https://github.com/Dao-AILab/flash-attention), 这将会加快训练和推理的速度以及显存占用(A10, 3090, V100等显卡不支持flash-attn进行训练). 支持flash-attn的模型可以查看[LLM支持的模型](./支持的模型和数据集.md#模型)
148148
- 如果你要进行**二次预训练**, **多轮对话**, 你可以参考[自定义与拓展](./自定义与拓展.md#注册数据集的方式)
149-
- 如果你需要断网进行训练, 请使用`--model_cache_dir`和设置`--check_model_is_latest false`. 具体参数含义请查看[命令行参数](./命令行参数.md).
149+
- 如果你需要**断网**进行训练, 请使用`--model_cache_dir`和设置`--check_model_is_latest false`. 具体参数含义请查看[命令行参数](./命令行参数.md).
150150
- 如果你想在训练时, 将权重push到ModelScope Hub中, 你需要设置`--push_to_hub true`.
151151
- 如何你想要在推理时, 合并LoRA权重并保存,你需要设置`--merge_lora_and_save true`. **不推荐对qlora训练的模型进行merge**, 这会存在精度损失.
152152
- 以下提供了可以直接运行的`qwen_7b_chat`的sh脚本(你只需要在推理时指定`--ckpt_dir`即可顺利执行). 更多模型的scripts脚本, 可以查看[scripts文件夹](https://github.com/modelscope/swift/tree/main/examples/pytorch/llm/scripts). 如果你想要**自定义sh脚本**, 推荐你参考`scripts/qwen_7b_chat`中的脚本进行书写.

swift/llm/utils/model.py

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ class ModelType:
8888
internlm_7b_chat_8k = 'internlm-7b-chat-8k'
8989
internlm_20b = 'internlm-20b'
9090
internlm_20b_chat = 'internlm-20b-chat'
91+
# internlm2
9192
internlm2_7b_base = 'internlm2-7b-base'
9293
internlm2_7b = 'internlm2-7b'
9394
internlm2_7b_sft_chat = 'internlm2-7b-sft-chat'
@@ -96,6 +97,11 @@ class ModelType:
9697
internlm2_20b = 'internlm2-20b'
9798
internlm2_20b_sft_chat = 'internlm2-20b-sft-chat'
9899
internlm2_20b_chat = 'internlm2-20b-chat'
100+
# internlm2-math
101+
internlm2_math_7b_chat = 'internlm2-math-7b-chat'
102+
internlm2_math_7b = 'internlm2-math-7b'
103+
internlm2_math_20b_chat = 'internlm2-math-20b-chat'
104+
internlm2_math_20b = 'internlm2-math-20b'
99105
# deepseek
100106
deepseek_7b = 'deepseek-7b'
101107
deepseek_7b_chat = 'deepseek-7b-chat'
@@ -120,6 +126,7 @@ class ModelType:
120126
baichuan_7b = 'baichuan-7b'
121127
baichuan_13b = 'baichuan-13b'
122128
baichuan_13b_chat = 'baichuan-13b-chat'
129+
# baichuan2
123130
baichuan2_7b = 'baichuan2-7b'
124131
baichuan2_7b_chat = 'baichuan2-7b-chat'
125132
baichuan2_7b_chat_int4 = 'baichuan2-7b-chat-int4'
@@ -911,6 +918,32 @@ def get_model_tokenizer_with_flash_attn(model_dir: str,
911918
load_model, model_config, **kwargs)
912919

913920

921+
@register_model(
922+
ModelType.internlm2_math_7b,
923+
'Shanghai_AI_Laboratory/internlm2-math-base-7b',
924+
LoRATM.internlm2,
925+
TemplateType.default_generation_bos,
926+
support_flash_attn=True)
927+
@register_model(
928+
ModelType.internlm2_math_20b,
929+
'Shanghai_AI_Laboratory/internlm2-math-base-20b',
930+
LoRATM.internlm2,
931+
TemplateType.default_generation_bos,
932+
support_flash_attn=True)
933+
@register_model(
934+
ModelType.internlm2_math_7b_chat,
935+
'Shanghai_AI_Laboratory/internlm2-math-7b',
936+
LoRATM.internlm2,
937+
TemplateType.internlm2,
938+
eos_token='<|im_end|>',
939+
support_flash_attn=True)
940+
@register_model(
941+
ModelType.internlm2_math_20b_chat,
942+
'Shanghai_AI_Laboratory/internlm2-math-20b',
943+
LoRATM.internlm2,
944+
TemplateType.internlm2,
945+
eos_token='<|im_end|>',
946+
support_flash_attn=True)
914947
@register_model(
915948
ModelType.internlm2_7b_sft_chat,
916949
'Shanghai_AI_Laboratory/internlm2-chat-7b-sft',
@@ -986,9 +1019,7 @@ def get_model_tokenizer_internlm2(model_dir: str,
9861019
if getattr(tokenizer.__class__.eos_token_id, 'fset', None) is None:
9871020
del tokenizer.__class__.eos_token_id
9881021
tokenizer.eos_token = eos_token
989-
if model is not None and use_flash_attn:
990-
# fix AttributeError: no attribute 'attention_dropout'
991-
model.model.layers[0].attention.__class__.attention_dropout = 0.
1022+
9921023
return model, tokenizer
9931024

9941025

swift/llm/utils/template.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ def _encode(
318318
if self.max_length is not None:
319319
if truncation_strategy == 'delete' and len(
320320
input_ids) > self.max_length:
321-
return None
321+
return {}, {}
322322
input_ids = input_ids[-self.max_length:]
323323
if labels is not None:
324324
labels = labels[-self.max_length:]

swift/llm/utils/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ def __len__(self) -> int:
218218
def _single_map(d: Dict[str, Any],
219219
map_func: MapFunc) -> Optional[Dict[str, Any]]:
220220
d = map_func(d)
221-
if d is None:
221+
if len(d[0]) == 0:
222222
return None
223223
return d
224224

0 commit comments

Comments
 (0)