501 lines
18 KiB
Python
501 lines
18 KiB
Python
import os
|
|
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0'
|
|
kwargs = {
|
|
'per_device_train_batch_size': 2,
|
|
'per_device_eval_batch_size': 2,
|
|
'save_steps': 5,
|
|
'gradient_accumulation_steps': 4,
|
|
'num_train_epochs': 1,
|
|
}
|
|
|
|
|
|
def test_llm_ddp():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-7B-Instruct',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
split_dataset_ratio=0.01,
|
|
# ddp_find_unused_parameters=False,
|
|
gradient_checkpointing_kwargs={'use_reentrant': False},
|
|
target_modules=['all-linear', 'all-embedding'],
|
|
modules_to_save=['all-embedding', 'all-norm'],
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=last_model_checkpoint, load_data_args=True))
|
|
|
|
|
|
def test_unsloth():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-0.5B',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
split_dataset_ratio=0.01,
|
|
max_steps=5,
|
|
tuner_backend='unsloth',
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
result = sft_main(SftArguments(resume_from_checkpoint=last_model_checkpoint, load_data_args=True, max_steps=10))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=last_model_checkpoint, load_data_args=True))
|
|
|
|
|
|
def test_mllm_mp():
|
|
os.environ['MAX_PIXELS'] = '100352'
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,2,3'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1,2,3'
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2.5-VL-7B-Instruct',
|
|
dataset=['modelscope/coco_2014_caption:validation#20'],
|
|
# dataset=['modelscope/coco_2014_caption:validation#20', 'AI-ModelScope/alpaca-gpt4-data-en#20'],
|
|
split_dataset_ratio=0.01,
|
|
tuner_type='lora',
|
|
target_modules=['all-linear'],
|
|
freeze_aligner=False,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=[last_model_checkpoint], load_data_args=True, merge_lora=True))
|
|
|
|
|
|
def test_llm_streaming():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-7B-Instruct', dataset=['swift/chinese-c4'], streaming=True, max_steps=16, **kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=[last_model_checkpoint], load_data_args=True, merge_lora=True))
|
|
|
|
|
|
def test_mllm_streaming():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-VL-7B-Instruct',
|
|
dataset=['modelscope/coco_2014_caption:validation', 'AI-ModelScope/alpaca-gpt4-data-en'],
|
|
streaming=True,
|
|
max_steps=16,
|
|
split_dataset_ratio=0.01,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=[last_model_checkpoint], load_data_args=True, merge_lora=True))
|
|
|
|
|
|
def test_mllm_zero3():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import SftArguments, sft_main
|
|
sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-VL-7B-Instruct',
|
|
dataset=['modelscope/coco_2014_caption:validation#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'], #
|
|
split_dataset_ratio=0.01,
|
|
deepspeed='zero3',
|
|
**kwargs))
|
|
|
|
|
|
def test_qwen_vl():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import SftArguments, sft_main
|
|
sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen-VL-Chat',
|
|
dataset=['AI-ModelScope/LaTeX_OCR#40', 'modelscope/coco_2014_caption:validation#40'],
|
|
split_dataset_ratio=0.01,
|
|
**kwargs))
|
|
|
|
|
|
def test_qwen2_audio():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import SftArguments, sft_main
|
|
sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-Audio-7B-Instruct',
|
|
dataset=['speech_asr/speech_asr_aishell1_trainsets:validation#200'],
|
|
split_dataset_ratio=0.01,
|
|
freeze_parameters_ratio=1,
|
|
trainable_parameters=['audio_tower'],
|
|
tuner_type='full',
|
|
**kwargs))
|
|
|
|
|
|
def test_llm_gptq():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-7B-Instruct-GPTQ-Int4',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
split_dataset_ratio=0.01,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=[last_model_checkpoint], load_data_args=True))
|
|
|
|
|
|
def test_llm_awq():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-7B-Instruct-AWQ',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
split_dataset_ratio=0.01,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=[last_model_checkpoint], load_data_args=True))
|
|
|
|
|
|
def test_mllm_streaming_zero3():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import SftArguments, sft_main
|
|
sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-VL-7B-Instruct',
|
|
dataset=['modelscope/coco_2014_caption:validation', 'AI-ModelScope/alpaca-gpt4-data-en'],
|
|
streaming=True,
|
|
max_steps=16,
|
|
deepspeed='zero3',
|
|
**kwargs))
|
|
|
|
|
|
def test_mllm_streaming_mp_ddp():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,2,3'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1,2,3'
|
|
from swift import SftArguments, sft_main
|
|
sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-VL-7B-Instruct',
|
|
dataset=['modelscope/coco_2014_caption:validation', 'AI-ModelScope/alpaca-gpt4-data-en'],
|
|
streaming=True,
|
|
max_steps=16,
|
|
gradient_checkpointing_kwargs={'use_reentrant': False},
|
|
**kwargs))
|
|
|
|
|
|
def test_llm_hqq():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-7B-Instruct',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
split_dataset_ratio=0.01,
|
|
quant_method='hqq',
|
|
quant_bits=4,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=[last_model_checkpoint], load_data_args=True))
|
|
|
|
|
|
def test_llm_bnb():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-7B-Instruct',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
split_dataset_ratio=0.01,
|
|
quant_method='bnb',
|
|
quant_bits=4,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=[last_model_checkpoint], load_data_args=True))
|
|
|
|
|
|
def test_moe():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen1.5-MoE-A2.7B-Chat-GPTQ-Int4',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
split_dataset_ratio=0.01,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=last_model_checkpoint, load_data_args=True))
|
|
|
|
|
|
def test_resume_from_checkpoint():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-0.5B',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
max_steps=5,
|
|
streaming=True,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-0.5B',
|
|
resume_from_checkpoint=last_model_checkpoint,
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
streaming=True,
|
|
load_data_args=True,
|
|
max_steps=10,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=last_model_checkpoint, load_data_args=True))
|
|
|
|
|
|
def test_resume_only_model():
|
|
from swift import SftArguments, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-0.5B',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
max_steps=5,
|
|
save_only_model=True,
|
|
deepspeed='zero3',
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-0.5B',
|
|
resume_from_checkpoint=last_model_checkpoint,
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
resume_only_model=True,
|
|
save_only_model=True,
|
|
load_data_args=True,
|
|
max_steps=10,
|
|
deepspeed='zero3',
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
print(f'last_model_checkpoint: {last_model_checkpoint}')
|
|
|
|
|
|
def test_llm_transformers_4_33():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import SftArguments, sft_main
|
|
sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen-7B-Chat',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
split_dataset_ratio=0.01,
|
|
**kwargs))
|
|
|
|
|
|
def test_predict_with_generate():
|
|
import os
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import SftArguments, sft_main
|
|
|
|
# 'modelscope/coco_2014_caption:validation#100',
|
|
sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-7B-Instruct',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-en#400'],
|
|
predict_with_generate=True,
|
|
# padding_free=True,
|
|
max_length=512,
|
|
packing=True,
|
|
attn_impl='flash_attn',
|
|
split_dataset_ratio=0.01,
|
|
**kwargs))
|
|
|
|
|
|
def test_predict_with_generate_zero3():
|
|
import os
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import SftArguments, sft_main
|
|
|
|
# 'modelscope/coco_2014_caption:validation#100',
|
|
sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-VL-7B-Instruct',
|
|
dataset=['AI-ModelScope/LaTeX_OCR#40'],
|
|
split_dataset_ratio=0.01,
|
|
predict_with_generate=True,
|
|
freeze_vit=False,
|
|
deepspeed='zero3',
|
|
**kwargs))
|
|
|
|
|
|
def test_template():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
global kwargs
|
|
kwargs = kwargs.copy()
|
|
kwargs['num_train_epochs'] = 3
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-0.5B',
|
|
dataset=['swift/self-cognition#200'],
|
|
split_dataset_ratio=0.01,
|
|
model_name=['小黄'],
|
|
model_author=['swift'],
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=[last_model_checkpoint], load_data_args=True, merge_lora=True))
|
|
|
|
|
|
def test_emu3_gen():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0'
|
|
os.environ['max_position_embeddings'] = '10240'
|
|
os.environ['image_area'] = '518400'
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
kwargs['num_train_epochs'] = 100
|
|
result = sft_main(
|
|
SftArguments(model='BAAI/Emu3-Gen', dataset=['swift/TextCaps#2'], split_dataset_ratio=0.01, **kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
args = InferArguments(
|
|
adapters=[last_model_checkpoint],
|
|
infer_backend='transformers',
|
|
stream=False,
|
|
use_chat_template=False,
|
|
top_k=2048,
|
|
max_new_tokens=40960)
|
|
infer_main(args)
|
|
|
|
|
|
def test_eval_strategy():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-7B-Instruct',
|
|
eval_strategy='no',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#100', 'AI-ModelScope/alpaca-gpt4-data-en#100'],
|
|
split_dataset_ratio=0.01,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=last_model_checkpoint, load_data_args=True))
|
|
|
|
|
|
def test_epoch():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
|
|
train_kwargs = kwargs.copy()
|
|
train_kwargs['num_train_epochs'] = 3
|
|
# train_kwargs['save_steps'] = 2 # not use
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-7B-Instruct',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#50', 'AI-ModelScope/alpaca-gpt4-data-en#50'],
|
|
split_dataset_ratio=0.01,
|
|
save_strategy='epoch',
|
|
**train_kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=last_model_checkpoint, load_data_args=True))
|
|
|
|
|
|
def test_agent():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-7B-Instruct',
|
|
dataset=['swift/ToolBench#500'],
|
|
split_dataset_ratio=0.01,
|
|
loss_scale='react',
|
|
agent_template='toolbench',
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=last_model_checkpoint, load_data_args=True))
|
|
|
|
|
|
def test_grounding():
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'
|
|
os.environ['ASCEND_RT_VISIBLE_DEVICES'] = '0,1'
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2.5-VL-7B-Instruct',
|
|
dataset=['AI-ModelScope/coco#200'],
|
|
split_dataset_ratio=0.01,
|
|
dataset_num_proc=4,
|
|
**kwargs))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=last_model_checkpoint, load_data_args=True, stream=True, max_new_tokens=2048))
|
|
|
|
|
|
def test_lora_sft_minimal():
|
|
from swift import InferArguments, SftArguments, infer_main, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-0.5B',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#20'],
|
|
max_steps=2,
|
|
per_device_train_batch_size=1,
|
|
gradient_accumulation_steps=1,
|
|
save_steps=2,
|
|
split_dataset_ratio=0.01,
|
|
tuner_type='lora',
|
|
logging_steps=1,
|
|
**{
|
|
k: v
|
|
for k, v in kwargs.items() if k not in [
|
|
'per_device_train_batch_size', 'save_steps', 'gradient_accumulation_steps', 'num_train_epochs',
|
|
'per_device_eval_batch_size'
|
|
]
|
|
}))
|
|
last_model_checkpoint = result['last_model_checkpoint']
|
|
infer_main(InferArguments(adapters=last_model_checkpoint, load_data_args=True))
|
|
|
|
|
|
def test_full_sft_minimal():
|
|
from swift import SftArguments, sft_main
|
|
result = sft_main(
|
|
SftArguments(
|
|
model='Qwen/Qwen2-0.5B',
|
|
dataset=['AI-ModelScope/alpaca-gpt4-data-zh#20'],
|
|
max_steps=1,
|
|
per_device_train_batch_size=1,
|
|
gradient_accumulation_steps=1,
|
|
save_steps=1,
|
|
split_dataset_ratio=0.01,
|
|
tuner_type='full',
|
|
logging_steps=1,
|
|
**{
|
|
k: v
|
|
for k, v in kwargs.items() if k not in [
|
|
'per_device_train_batch_size', 'save_steps', 'gradient_accumulation_steps', 'num_train_epochs',
|
|
'per_device_eval_batch_size'
|
|
]
|
|
}))
|
|
assert os.path.isdir(result['last_model_checkpoint'])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# test_llm_ddp()
|
|
# test_mllm_mp()
|
|
# test_llm_streaming()
|
|
# test_mllm_streaming()
|
|
# test_mllm_zero3()
|
|
# test_llm_gptq()
|
|
# test_llm_awq()
|
|
# test_mllm_streaming_zero3()
|
|
# test_mllm_streaming_mp_ddp()
|
|
# test_llm_bnb()
|
|
# test_llm_hqq()
|
|
# test_moe()
|
|
# test_resume_from_checkpoint()
|
|
test_resume_only_model()
|
|
# test_llm_transformers_4_33()
|
|
# test_predict_with_generate()
|
|
# test_predict_with_generate_zero3()
|
|
# test_template()
|
|
# test_qwen_vl()
|
|
# test_qwen2_audio()
|
|
# test_emu3_gen()
|
|
# test_unsloth()
|
|
# test_eval_strategy()
|
|
# test_epoch()
|
|
# test_agent()
|
|
# test_grounding()
|
|
# test_lora_sft_minimal()
|
|
# test_full_sft_minimal()
|