1. 前言

模型自我认知简单理解即是模型认为自己是什么,也就是在你询问模型“你是谁”时,模型给出的答案。自我认知微调主要调整模型对自己的名字以及训练者的认知。
本次,我使用AutoDl的云服务器对qwen1.5-7b-chat模型进行了微调。

2. 训练模型

2.1 环境准备

2.1.1 源码安装

modelscope提供了三种安装方式(swift/README_CN.md at main · modelscope/swift (github.com)),这里采用源码安装:

git clone https://github.com/modelscope/swift.git
cd swift
pip install -e '.[llm]'

我使用AutoDl云服务器,其提供了github加速方法,在命令行运行:

source /etc/network_turbo

2.2 模型微调

源码安装后即可进行模型微调

2.2.1 修改自我认知

swift脚本:

# Experimental environment: A10, 3090
# 16GB GPU memory
CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model_id_or_path qwen1half-7b-chat \
    --model_revision master \
    --sft_type lora \
    --tuner_backend peft \
    --template_type AUTO \
    --dtype AUTO \
    --output_dir output \
    --dataset alpaca-zh#500 alpaca-en#500 self-cognition#500 \
    --train_dataset_sample -1 \
    --num_train_epochs 1 \
    --max_length 2048 \
    --check_dataset_strategy warning \
    --quantization_bit 0 \
    --bnb_4bit_comp_dtype AUTO \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules ALL \
    --gradient_checkpointing true \
    --batch_size 1 \
    --weight_decay 0.1 \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps 16 \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.03 \
    --eval_steps 100 \
    --save_steps 100 \
    --save_total_limit 2 \
    --logging_steps 10 \
    --use_flash_attn false \
    --model_name 模型的名字 模型的英文名 \
    --model_author 作者名 作者英文名

将上述内容保存为脚本运行即可。

注意:

modelscope训练模型时会将模型缓存下来,可能导致缓存目录所在盘空间不足的问题。对linux系统,缓存目录位于~/.cache/modelscope/hub下。可通过手动指定环境变量MODELSCOPE_CACHE来修改缓存地址:

export MODELSCOPE_CACHE=[new_path]

该命令仅在当前shell下生效,若想持续生效,则可修改/etc/profile等文件。

3. 验证并合并模型

运行swift脚本完成模型训练后,进行模型的验证与合并:

CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --ckpt_dir "/root/autodl-tmp/swift/output/llama3-8b-instruct/v3-20240512-193259/checkpoint-16800" \
    --load_dataset_config true \
    --max_new_tokens 2048 \
    --temperature 0.1 \
    --top_p 0.7 \
    --repetition_penalty 1. \
    --dataset_test_ratio 0.01 \
    --do_sample true \
    --merge_lora true \   # 该参数必须为True才可以

将上述内容保存为脚本运行即可。

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐