Skip to content

Commit 22f0f05

Browse files
authored
support modelscope-agent & fix bugs (#768)
1 parent c1d4dc2 commit 22f0f05

File tree

8 files changed

+53
-17
lines changed

8 files changed

+53
-17
lines changed

docs/source/LLM/支持的模型和数据集.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
|qwen-72b-chat|[qwen/Qwen-72B-Chat](https://modelscope.cn/models/qwen/Qwen-72B-Chat/summary)|c_attn|qwen|✔|✔||-|[Qwen/Qwen-72B-Chat](https://huggingface.co/Qwen/Qwen-72B-Chat)|
3131
|qwen-72b-chat-int4|[qwen/Qwen-72B-Chat-Int4](https://modelscope.cn/models/qwen/Qwen-72B-Chat-Int4/summary)|c_attn|qwen|✔|✔|auto_gptq>=0.5|-|[Qwen/Qwen-72B-Chat-Int4](https://huggingface.co/Qwen/Qwen-72B-Chat-Int4)|
3232
|qwen-72b-chat-int8|[qwen/Qwen-72B-Chat-Int8](https://modelscope.cn/models/qwen/Qwen-72B-Chat-Int8/summary)|c_attn|qwen|✔|✘|auto_gptq>=0.5|-|[Qwen/Qwen-72B-Chat-Int8](https://huggingface.co/Qwen/Qwen-72B-Chat-Int8)|
33+
|modelscope-agent-7b|[iic/ModelScope-Agent-7B](https://modelscope.cn/models/iic/ModelScope-Agent-7B/summary)|c_attn|modelscope-agent|✔|✘||-|-|
34+
|modelscope-agent-14b|[iic/ModelScope-Agent-14B](https://modelscope.cn/models/iic/ModelScope-Agent-14B/summary)|c_attn|modelscope-agent|✔|✘||-|-|
3335
|qwen1half-0_5b|[qwen/Qwen1.5-0.5B](https://modelscope.cn/models/qwen/Qwen1.5-0.5B/summary)|q_proj, k_proj, v_proj|default-generation|✔|✔|transformers>=4.37|-|[Qwen/Qwen1.5-0.5B](https://huggingface.co/Qwen/Qwen1.5-0.5B)|
3436
|qwen1half-1_8b|[qwen/Qwen1.5-1.8B](https://modelscope.cn/models/qwen/Qwen1.5-1.8B/summary)|q_proj, k_proj, v_proj|default-generation|✔|✔|transformers>=4.37|-|[Qwen/Qwen1.5-1.8B](https://huggingface.co/Qwen/Qwen1.5-1.8B)|
3537
|qwen1half-4b|[qwen/Qwen1.5-4B](https://modelscope.cn/models/qwen/Qwen1.5-4B/summary)|q_proj, k_proj, v_proj|default-generation|✔|✔|transformers>=4.37|-|[Qwen/Qwen1.5-4B](https://huggingface.co/Qwen/Qwen1.5-4B)|
@@ -269,8 +271,8 @@
269271

270272
| Dataset Name | Dataset ID | Train Size | Val Size | Statistic (token) | Tags | HF Dataset ID |
271273
| ------------ | ---------- | ---------- | -------- | ----------------- | ---- | ------------- |
272-
|🔥ms-bench|[iic/ms_bench](https://modelscope.cn/datasets/iic/ms_bench/summary)|316228|0|345.0±441.3, min=22, max=30960|chat, general, multi-round|-|
273-
|🔥ms-bench-mini|[iic/ms_bench](https://modelscope.cn/datasets/iic/ms_bench/summary)|19492|0|353.9±439.4, min=29, max=12078|chat, general, multi-round|-|
274+
|🔥ms-bench|[iic/ms_bench](https://modelscope.cn/datasets/iic/ms_bench/summary)|316931|0|347.3±444.1, min=22, max=30960|chat, general, multi-round|-|
275+
|🔥ms-bench-mini|[iic/ms_bench](https://modelscope.cn/datasets/iic/ms_bench/summary)|19960|0|356.6±443.3, min=29, max=12078|chat, general, multi-round|-|
274276
|🔥alpaca-en|[AI-ModelScope/alpaca-gpt4-data-en](https://modelscope.cn/datasets/AI-ModelScope/alpaca-gpt4-data-en/summary)|52002|0|176.2±125.8, min=26, max=740|chat, general|[vicgalle/alpaca-gpt4](https://huggingface.co/datasets/vicgalle/alpaca-gpt4)|
275277
|🔥alpaca-zh|[AI-ModelScope/alpaca-gpt4-data-zh](https://modelscope.cn/datasets/AI-ModelScope/alpaca-gpt4-data-zh/summary)|48818|0|162.1±93.9, min=26, max=856|chat, general|[c-s-ale/alpaca-gpt4-data-zh](https://huggingface.co/datasets/c-s-ale/alpaca-gpt4-data-zh)|
276278
|multi-alpaca-all|[damo/nlp_polylm_multialpaca_sft](https://modelscope.cn/datasets/damo/nlp_polylm_multialpaca_sft/summary)|131867|0|112.9±50.6, min=26, max=1226|chat, general, multilingual|-|
@@ -310,7 +312,7 @@
310312
|🔥disc-med-sft-zh|[AI-ModelScope/DISC-Med-SFT](https://modelscope.cn/datasets/AI-ModelScope/DISC-Med-SFT/summary)|441767|0|354.1±193.1, min=25, max=2231|chat, medical|[Flmc/DISC-Med-SFT](https://huggingface.co/datasets/Flmc/DISC-Med-SFT)|
311313
|lawyer-llama-zh|[AI-ModelScope/lawyer_llama_data](https://modelscope.cn/datasets/AI-ModelScope/lawyer_llama_data/summary)|21476|0|194.4±91.7, min=27, max=924|chat, law|[Skepsun/lawyer_llama_data](https://huggingface.co/datasets/Skepsun/lawyer_llama_data)|
312314
|tigerbot-law-zh|[AI-ModelScope/tigerbot-law-plugin](https://modelscope.cn/datasets/AI-ModelScope/tigerbot-law-plugin/summary)|55895|0|109.9±126.4, min=37, max=18878|text-generation, law, pretrained|[TigerResearch/tigerbot-law-plugin](https://huggingface.co/datasets/TigerResearch/tigerbot-law-plugin)|
313-
|🔥disc-law-sft-zh|[AI-ModelScope/DISC-Law-SFT](https://modelscope.cn/datasets/AI-ModelScope/DISC-Law-SFT/summary)|166758|0|533.7±495.4, min=30, max=15169|chat, law|-|
315+
|🔥disc-law-sft-zh|[AI-ModelScope/DISC-Law-SFT](https://modelscope.cn/datasets/AI-ModelScope/DISC-Law-SFT/summary)|166758|0|533.7±495.4, min=30, max=15169|chat, law|[ShengbinYue/DISC-Law-SFT](https://huggingface.co/datasets/ShengbinYue/DISC-Law-SFT)|
314316
|🔥blossom-math-zh|[AI-ModelScope/blossom-math-v2](https://modelscope.cn/datasets/AI-ModelScope/blossom-math-v2/summary)|10000|0|169.3±58.7, min=35, max=563|chat, math|[Azure99/blossom-math-v2](https://huggingface.co/datasets/Azure99/blossom-math-v2)|
315317
|school-math-zh|[AI-ModelScope/school_math_0.25M](https://modelscope.cn/datasets/AI-ModelScope/school_math_0.25M/summary)|248480|0|157.6±72.1, min=33, max=3450|chat, math|[BelleGroup/school_math_0.25M](https://huggingface.co/datasets/BelleGroup/school_math_0.25M)|
316318
|open-platypus-en|[AI-ModelScope/Open-Platypus](https://modelscope.cn/datasets/AI-ModelScope/Open-Platypus/summary)|24926|0|367.9±254.8, min=30, max=3951|chat, math|[garage-bAInd/Open-Platypus](https://huggingface.co/datasets/garage-bAInd/Open-Platypus)|

docs/source_en/LLM/Supported-models-datasets.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ The table below introcudes all models supported by SWIFT:
3030
|qwen-72b-chat|[qwen/Qwen-72B-Chat](https://modelscope.cn/models/qwen/Qwen-72B-Chat/summary)|c_attn|qwen|✔|✔||-|[Qwen/Qwen-72B-Chat](https://huggingface.co/Qwen/Qwen-72B-Chat)|
3131
|qwen-72b-chat-int4|[qwen/Qwen-72B-Chat-Int4](https://modelscope.cn/models/qwen/Qwen-72B-Chat-Int4/summary)|c_attn|qwen|✔|✔|auto_gptq>=0.5|-|[Qwen/Qwen-72B-Chat-Int4](https://huggingface.co/Qwen/Qwen-72B-Chat-Int4)|
3232
|qwen-72b-chat-int8|[qwen/Qwen-72B-Chat-Int8](https://modelscope.cn/models/qwen/Qwen-72B-Chat-Int8/summary)|c_attn|qwen|✔|✘|auto_gptq>=0.5|-|[Qwen/Qwen-72B-Chat-Int8](https://huggingface.co/Qwen/Qwen-72B-Chat-Int8)|
33+
|modelscope-agent-7b|[iic/ModelScope-Agent-7B](https://modelscope.cn/models/iic/ModelScope-Agent-7B/summary)|c_attn|modelscope-agent|✔|✘||-|-|
34+
|modelscope-agent-14b|[iic/ModelScope-Agent-14B](https://modelscope.cn/models/iic/ModelScope-Agent-14B/summary)|c_attn|modelscope-agent|✔|✘||-|-|
3335
|qwen1half-0_5b|[qwen/Qwen1.5-0.5B](https://modelscope.cn/models/qwen/Qwen1.5-0.5B/summary)|q_proj, k_proj, v_proj|default-generation|✔|✔|transformers>=4.37|-|[Qwen/Qwen1.5-0.5B](https://huggingface.co/Qwen/Qwen1.5-0.5B)|
3436
|qwen1half-1_8b|[qwen/Qwen1.5-1.8B](https://modelscope.cn/models/qwen/Qwen1.5-1.8B/summary)|q_proj, k_proj, v_proj|default-generation|✔|✔|transformers>=4.37|-|[Qwen/Qwen1.5-1.8B](https://huggingface.co/Qwen/Qwen1.5-1.8B)|
3537
|qwen1half-4b|[qwen/Qwen1.5-4B](https://modelscope.cn/models/qwen/Qwen1.5-4B/summary)|q_proj, k_proj, v_proj|default-generation|✔|✔|transformers>=4.37|-|[Qwen/Qwen1.5-4B](https://huggingface.co/Qwen/Qwen1.5-4B)|
@@ -269,8 +271,8 @@ The table below introduces the datasets supported by SWIFT:
269271

270272
| Dataset Name | Dataset ID | Train Size | Val Size | Statistic (token) | Tags | HF Dataset ID |
271273
| ------------ | ---------- | ---------- | -------- | ----------------- | ---- | ------------- |
272-
|🔥ms-bench|[iic/ms_bench](https://modelscope.cn/datasets/iic/ms_bench/summary)|316228|0|345.0±441.3, min=22, max=30960|chat, general, multi-round|-|
273-
|🔥ms-bench-mini|[iic/ms_bench](https://modelscope.cn/datasets/iic/ms_bench/summary)|19492|0|353.9±439.4, min=29, max=12078|chat, general, multi-round|-|
274+
|🔥ms-bench|[iic/ms_bench](https://modelscope.cn/datasets/iic/ms_bench/summary)|316931|0|347.3±444.1, min=22, max=30960|chat, general, multi-round|-|
275+
|🔥ms-bench-mini|[iic/ms_bench](https://modelscope.cn/datasets/iic/ms_bench/summary)|19960|0|356.6±443.3, min=29, max=12078|chat, general, multi-round|-|
274276
|🔥alpaca-en|[AI-ModelScope/alpaca-gpt4-data-en](https://modelscope.cn/datasets/AI-ModelScope/alpaca-gpt4-data-en/summary)|52002|0|176.2±125.8, min=26, max=740|chat, general|[vicgalle/alpaca-gpt4](https://huggingface.co/datasets/vicgalle/alpaca-gpt4)|
275277
|🔥alpaca-zh|[AI-ModelScope/alpaca-gpt4-data-zh](https://modelscope.cn/datasets/AI-ModelScope/alpaca-gpt4-data-zh/summary)|48818|0|162.1±93.9, min=26, max=856|chat, general|[c-s-ale/alpaca-gpt4-data-zh](https://huggingface.co/datasets/c-s-ale/alpaca-gpt4-data-zh)|
276278
|multi-alpaca-all|[damo/nlp_polylm_multialpaca_sft](https://modelscope.cn/datasets/damo/nlp_polylm_multialpaca_sft/summary)|131867|0|112.9±50.6, min=26, max=1226|chat, general, multilingual|-|
@@ -310,7 +312,7 @@ The table below introduces the datasets supported by SWIFT:
310312
|🔥disc-med-sft-zh|[AI-ModelScope/DISC-Med-SFT](https://modelscope.cn/datasets/AI-ModelScope/DISC-Med-SFT/summary)|441767|0|354.1±193.1, min=25, max=2231|chat, medical|[Flmc/DISC-Med-SFT](https://huggingface.co/datasets/Flmc/DISC-Med-SFT)|
311313
|lawyer-llama-zh|[AI-ModelScope/lawyer_llama_data](https://modelscope.cn/datasets/AI-ModelScope/lawyer_llama_data/summary)|21476|0|194.4±91.7, min=27, max=924|chat, law|[Skepsun/lawyer_llama_data](https://huggingface.co/datasets/Skepsun/lawyer_llama_data)|
312314
|tigerbot-law-zh|[AI-ModelScope/tigerbot-law-plugin](https://modelscope.cn/datasets/AI-ModelScope/tigerbot-law-plugin/summary)|55895|0|109.9±126.4, min=37, max=18878|text-generation, law, pretrained|[TigerResearch/tigerbot-law-plugin](https://huggingface.co/datasets/TigerResearch/tigerbot-law-plugin)|
313-
|🔥disc-law-sft-zh|[AI-ModelScope/DISC-Law-SFT](https://modelscope.cn/datasets/AI-ModelScope/DISC-Law-SFT/summary)|166758|0|533.7±495.4, min=30, max=15169|chat, law|-|
315+
|🔥disc-law-sft-zh|[AI-ModelScope/DISC-Law-SFT](https://modelscope.cn/datasets/AI-ModelScope/DISC-Law-SFT/summary)|166758|0|533.7±495.4, min=30, max=15169|chat, law|[ShengbinYue/DISC-Law-SFT](https://huggingface.co/datasets/ShengbinYue/DISC-Law-SFT)|
314316
|🔥blossom-math-zh|[AI-ModelScope/blossom-math-v2](https://modelscope.cn/datasets/AI-ModelScope/blossom-math-v2/summary)|10000|0|169.3±58.7, min=35, max=563|chat, math|[Azure99/blossom-math-v2](https://huggingface.co/datasets/Azure99/blossom-math-v2)|
315317
|school-math-zh|[AI-ModelScope/school_math_0.25M](https://modelscope.cn/datasets/AI-ModelScope/school_math_0.25M/summary)|248480|0|157.6±72.1, min=33, max=3450|chat, math|[BelleGroup/school_math_0.25M](https://huggingface.co/datasets/BelleGroup/school_math_0.25M)|
316318
|open-platypus-en|[AI-ModelScope/Open-Platypus](https://modelscope.cn/datasets/AI-ModelScope/Open-Platypus/summary)|24926|0|367.9±254.8, min=30, max=3951|chat, math|[garage-bAInd/Open-Platypus](https://huggingface.co/datasets/garage-bAInd/Open-Platypus)|

swift/llm/infer.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def merge_lora(args: InferArguments,
9999
else:
100100
model, template = prepare_model_template(
101101
args, device_map=args.merge_device_map, verbose=False)
102-
logger.info('Merge lora...')
102+
logger.info('Merge LoRA...')
103103
Swift.merge_and_unload(model)
104104
model = model.model
105105
logger.info('Saving merged weights...')
@@ -254,9 +254,15 @@ def llm_infer(args: InferArguments) -> None:
254254
# Inference
255255
result = []
256256
jsonl_path = None
257-
if args.save_result and args.ckpt_dir is not None:
258-
time = dt.datetime.now().strftime('%Y%m%d-%H%M%S')
259-
jsonl_path = os.path.join(args.ckpt_dir, f'infer_result_{time}.jsonl')
257+
if args.save_result:
258+
result_dir = args.ckpt_dir
259+
if result_dir is None:
260+
result_dir = model.model_dir
261+
if result_dir is not None:
262+
result_dir = os.path.join(result_dir, 'infer_result')
263+
os.makedirs(result_dir, exist_ok=True)
264+
time = dt.datetime.now().strftime('%Y%m%d-%H%M%S')
265+
jsonl_path = os.path.join(result_dir, f'{time}.jsonl')
260266
if args.eval_human:
261267
input_mode: Literal['S', 'M'] = 'S'
262268
logger.info('Input `exit` or `quit` to exit the conversation.')
@@ -466,7 +472,7 @@ def llm_infer(args: InferArguments) -> None:
466472
if images is not None:
467473
print(f'[IMAGES]{images}')
468474
print('-' * 50)
469-
if args.save_result and args.ckpt_dir is not None:
475+
if jsonl_path is not None:
470476
logger.info(f'save_result_path: {jsonl_path}')
471477
if args.val_dataset_sample == 10: # is default
472478
logger.info(

swift/llm/sft.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,6 @@ def llm_sft(args: SftArguments) -> Dict[str, Union[str, Any]]:
161161
args.self_cognition_sample,
162162
args.model_name,
163163
args.model_author)
164-
if val_dataset is None:
165-
training_args.evaluation_strategy = IntervalStrategy.NO
166-
training_args.do_eval = False
167164
logger.info(f'train_dataset: {train_dataset}')
168165
logger.info(f'val_dataset: {val_dataset}')
169166
template_kwargs = {}
@@ -202,6 +199,9 @@ def llm_sft(args: SftArguments) -> Dict[str, Union[str, Any]]:
202199
train_dataset = LazyLLMDataset(train_dataset, template)
203200
if val_dataset is not None:
204201
val_dataset = LazyLLMDataset(val_dataset, template)
202+
if val_dataset is None:
203+
training_args.evaluation_strategy = IntervalStrategy.NO
204+
training_args.do_eval = False
205205

206206
padding_to = args.max_length if args.sft_type == 'longlora' else None
207207
data_collator = partial(template.data_collator, padding_to=padding_to)

swift/llm/utils/dataset.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -669,15 +669,18 @@ def map_row(row):
669669
'damo/MSAgent-Bench', ['train'], ['validation'],
670670
ConversationsPreprocessor(
671671
repair_conversations=partial(
672-
_repair_agent_conversations, use_mini=True)),
672+
_repair_agent_conversations, use_mini=True),
673+
error_strategy='delete'),
673674
get_dataset_from_repo,
674675
tags=['chat', 'agent', 'multi-round'])
675676
register_dataset(
676677
DatasetName.damo_agent_zh,
677678
'damo/MSAgent-Bench', ['train'], ['validation'],
678679
ConversationsPreprocessor(
679680
repair_conversations=partial(
680-
_repair_agent_conversations, use_mini=False)),
681+
_repair_agent_conversations,
682+
use_mini=False,
683+
error_strategy='delete')),
681684
get_dataset_from_repo,
682685
tags=['chat', 'agent', 'multi-round'])
683686

swift/llm/utils/model.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ class ModelType:
5656
qwen_72b_chat = 'qwen-72b-chat'
5757
qwen_72b_chat_int4 = 'qwen-72b-chat-int4'
5858
qwen_72b_chat_int8 = 'qwen-72b-chat-int8'
59+
modelscope_agent_7b = 'modelscope-agent-7b'
60+
modelscope_agent_14b = 'modelscope-agent-14b'
5961
# qwen1.5
6062
qwen1half_0_5b = 'qwen1half-0_5b'
6163
qwen1half_1_8b = 'qwen1half-1_8b'
@@ -2749,6 +2751,20 @@ def get_model_tokenizer_qwen(model_dir: str,
27492751
return model, tokenizer
27502752

27512753

2754+
@register_model(
2755+
ModelType.modelscope_agent_7b,
2756+
'iic/ModelScope-Agent-7B',
2757+
LoRATM.qwen,
2758+
TemplateType.modelscope_agent,
2759+
support_flash_attn=True,
2760+
support_vllm=False)
2761+
@register_model(
2762+
ModelType.modelscope_agent_14b,
2763+
'iic/ModelScope-Agent-14B',
2764+
LoRATM.qwen,
2765+
TemplateType.modelscope_agent,
2766+
support_flash_attn=True,
2767+
support_vllm=False)
27522768
@register_model(
27532769
ModelType.codefuse_qwen_14b_chat,
27542770
'codefuse-ai/CodeFuse-QWen-14B',

swift/llm/utils/protocol.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ class XRequestConfig:
3333
repetition_penalty = 1.
3434
"""
3535
max_tokens: Optional[int] = None # None: max_model_len - num_tokens
36-
temperature: Optional[float] = None # None: use deploy_args
36+
# None: use deploy_args
37+
temperature: Optional[float] = None
3738
top_p: Optional[float] = None
3839
repetition_penalty: Optional[float] = None
3940

swift/llm/utils/template.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class TemplateType:
3030
default = 'default'
3131
qwen = 'qwen'
3232
qwen_audio = 'qwen-audio'
33+
modelscope_agent = 'modelscope-agent'
3334
baichuan = 'baichuan'
3435
chatglm2 = 'chatglm2'
3536
chatglm3 = 'chatglm3'
@@ -589,6 +590,11 @@ def __init__(self):
589590
register_template(TemplateType.qwen, QwenTemplate())
590591
register_template(TemplateType.chatml, QwenTemplate())
591592

593+
register_template(
594+
TemplateType.modelscope_agent,
595+
Template([], [' \n\n<|user|>:{{QUERY}} \n\n<|assistant|>:'], [],
596+
[' \n\n</s>'], DEFAULT_SYSTEM, [' \n\n<|system|>:{{SYSTEM}}']))
597+
592598

593599
class _QwenAudioTemplateMixin:
594600

0 commit comments

Comments
 (0)