如何用20分钟将大型模型名称改为我的名字?

摘要:你有没有问过大模型`“你是谁”`?问了的话,拿到的答案清一色都是大模型厂商的名字。而如果你自己部署了一个模型的话,通常都希望有人在你的应用里问你是谁的时候能给出一个`“你的答案”`。**这篇文章就是干这个事情的,20分钟让大模型的名字变成你
一、前言 1. 本文目标 你有没有问过大模型“你是谁”?问了的话,拿到的答案清一色都是大模型厂商的名字。而如果你自己部署了一个模型的话,通常都希望有人在你的应用里问你是谁的时候能给出一个“你的答案”。这篇文章就是干这个事情的,20分钟让大模型的名字变成你自己的名字。 2. 大模型入门系列介绍 前阵子介绍了两个【有手就行】的大模型基础知识,今天是大模型开发【有手就行】的第三篇。 前两部在这里: 【有手就行】自己花20分钟从0开始训练一个“大模型” 【有手就行】LoRA:用你自己的数据来微调大模型,让大模型真正懂你 这个是入门三步曲最后一步:MS-SWIFT认知微调,把大模型的名字改成你的名字。 上手学习大模型、人工智能相关的开发并没有什么太过高深的门槛,真的很简单,真的就是【有手就行】。 二、SWIFT认知微调相关的一些废话 1. 什么是ms-swift ms-swift(全称 Scalable lightWeight Infrastructure for Fine‑Tuning)是阿里的魔搭社区(ModelScope) 推出的一个大模型全流程工程化框架,是 “大模型轻量微调与部署的基础设施”,在消费级 GPU 与国产硬件也都可用,我有在4090,PPU平头哥、Ascend昇腾上都用过。 2. 为什么要做ms-swift微调 就像之前讲的那样: 自己从头开始训练一个基座大模型是不现实的,只能以学习目的来了解大模型是如何训练出来的,有哪些步骤,会有一些什么样的训练参数、每个参数的意义和影响是什么等。 所以大家更多会涉及的是利用一些现有的开源大模型来做微调,用自己的个人数据、行业数据来微调训练大模型,然后让这个大模型变成你自己的私人大模型或者行业大模型。 可惜我自己觉得最重要的LoRA微调的那篇文章反而看的人比较少(一如既往的不太懂,呵呵),可能是我取的标题不够“标题党”(求大佬们指教),也可能跟公众号推荐规则有关。 而一旦你自己微调训练了一个大模型,那随后必做的一件事情就是把这个大模型的名字变成你自己,当有人问它:“你是谁?”的时候,它回答的应该是:它是xxx(你给它取的名字),是由yyy(你的名字)开发出来的。比如: 我是小落,是由落鹤生开发的个人智能助手。我主要的目的是通过记录落鹤生每天的日常工作、生活的点点滴滴,然后希望在数据足够的某一天,我可以成为一个数字复刻版本的落鹤生。如果您对小落同学有任何疑问或需要帮助,请随时提出,我会尽力为您解答。 三、开始 ms-swift支持 600 多个纯文本大型模型和 300 多个多模态大型模型的训练。为方便同学们复现,我以 Qwen3-4B-Instruct模型为例 ,从模型下载开始介绍整个流程。如果有问题可以直接在下面留言,或者加一下AI技术学习交流群一起讨论。 1. 模型下载 从modelscope下载需要的模型(huggingface不太稳定,当然也可以用镜像站:https://hf-mirror.com ) 方法一:python代码 from modelscope.hub.snapshot_download import snapshot_download model_id = "Qwen/Qwen3-4B-Instruct-2507" model_dir = "./qwen3-4b-instruct" snapshot_download(repo_id=model_id, local_dir=model_dir) 方法二:shell命令 pip install modelscope --index https://pypi.mirrors.ustc.edu.cn/simple # 国内源加速 modelscope download --model qwen/Qwen3-4B-Instruct-2507 --local_dir /mnt/data/Qwen3-4B-Instruct-2507 2. 原始模型部署 原则上,你的服务器上有多少GPU就都给你用上先。 gpu_count=$(nvidia-smi --query-gpu=count --format=csv,noheader | wc -l); vllm serve /mnt/data/Qwen/Qwen3-4B-Instruct-2507 --host 0.0.0.0 --port 8000 --root-path '/' --trust-remote-code --gpu-memory-utilization 0.95 --tensor-parallel-size $gpu_count --served-model-name qwen3-4b-instruct 3. 原始模型测试 from openai import OpenAI client = OpenAI( base_url="http://0.0.0.0:8000/v1", # vLLM服务地址 api_key="na" # vLLM无需鉴权,设为任意值 ) response = client.chat.completions.create( model="qwen3-4b-instruct", # 需与启动命令的--served-model-name一致 messages=[{"role": "user", "content": "你好,请介绍一下你自己"}], temperature=0.8, max_tokens=100 ) print(response.choices[0].message.content) 4. 微调Qwen3-4B-Instruct-2507模型 这里在我原先的OddAgent项目基础上训练一个会议语音指令助手。这里使用官方的示例对Qwen3-4B-Instruct-2507模型进行自我认知微调。 1)安装ms-swift框架 pip pip install ms-swift -U 源码方式 git clone https://github.com/modelscope/ms-swift.git cd ms-swift pip install -e . 2)开始训练 a. 训练脚本 先下载训练集到本地,包含gpt生成的通用中英文应答语料(可选)和自我认知训练数据(参照修改这部分) modelscope download --dataset "AI-ModelScope/alpaca-gpt4-data-zh" --local_dir /mnt/data/jacky/dataset/alpaca-gpt4-data-zh; modelscope download --dataset "AI-ModelScope/alpaca-gpt4-data-en" --local_dir /mnt/data/jacky/dataset/alpaca-gpt4-data-en; modelscope download --dataset "swift/self-cognition" --local_dir /mnt/data/jacky/dataset/self-cognition 由于环境vllm版本较低,这里需要降低transformer版本 pip install 'transformers<4.54.0' b. 注意事项 参数--model_author 落鹤生 --model_name 小落 这两个参数只有数据集路径最后为self-cognition才生效。 modelscope和huggingface下载模型的时候路径是区分大小写的,如果大小写对不上,就会重复下载。比如下面这个:路径为self-cognition,修改其中内容,日志虽然显示使用本地训练集,但实际内容没修改,疑似还是用的远程原始数据,下面日志可以看出 INFO:swift] SelfCognitionPreprocessor has been successfully configured with name: ('xiaoluo', 'xiaoluo'), author: ('落鹤生', '落鹤生'). [INFO:swift] Use local folder, dataset_dir: /mnt/data/jacky/dataset/tmp/self-cognition Map: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 108/108 [00:00<00:00, 17985.58 examples/s] [INFO:swift] train_dataset: Dataset({ features: ['messages'], num_rows: 108 }) [INFO:swift] val_dataset: None Map: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 108/108 [00:00<00:00, 2111.66 examples/s] [INFO:swift] [INPUT_IDS] [151644, 8948, 198, 2610, 525, 264, 10950, 17847, 13, 151645, 198, 151644, 872, 198, 105043, 100165, 151645, 198, 151644, 77091, 198, 35946, 101909, 67071, 74, 13830, 100013, 100623, 48692, 100168, 110498, 3837, 106253, 67194, 10823, 86, 329, 672, 1773, 35946, 99558, 9370, 108765, 67338, 108704, 101069, 17714, 110782, 100364, 5373, 27369, 33108, 100415, 1773, 106870, 110117, 106603, 57191, 85106, 100364, 37945, 102422, 101080, 3837, 105351, 110121, 105096, 87026, 1773, 151645, 198] [INFO:swift] [INPUT] <|im_start|>system You are a helpful assistant.<|im_end|> <|im_start|>user 你是谁<|im_end|> <|im_start|>assistant 我是小落,是由落鹤生开发的个人智能助手。我主要的目的是通过记录落鹤生每天的日常工作、生活的点点滴滴,然后希望在数据足够的某一天,我可以成为一个数字复刻版本的落鹤生。如果您对小落同学有任何疑问或需要帮助,请随时提出,我会尽力为您解答。<|im_end| 删除~/.cache/huggingface/datasets/这个路径下的数据集缓存后正常 路径如果改为self-cognition1,修改其中内容(并清缓存),上述两个参数不会生效,此时需要手动写死author和name 训练指令示例: CUDA_VISIBLE_DEVICES=0,1 \ swift sft \ --model /mnt/data/Qwen/Qwen3-4B-Instruct-2507/ \ --train_type lora \ --dataset '/mnt/data/jacky/dataset/alpaca-gpt4-data-zh' \ '/mnt/data/jacky/dataset/alpaca-gpt4-data-en' \ '/mnt/data/jacky/dataset/self-cognition' \ --torch_dtype bfloat16 \ --num_train_epochs 5 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --learning_rate 1e-4 \ --lora_rank 8 \ --lora_alpha 32 \ --target_modules all-linear \ --gradient_accumulation_steps 2 \ --eval_steps 50 \ --save_steps 50 \ --save_total_limit 2 \ --logging_steps 10 \ --max_length 2048 \ --output_dir output \ --system '你是一个个人智能助手。' \ --warmup_ratio 0.05 \ --dataloader_num_workers 16 \ --model_author 落鹤生 \ --model_name 小落 5. 测试你微调训练好的模型 训练好了之后,我们来测试一下效果。 1)测试验证swift认知微调后的模型 可以用下面这两种方式来测试你的模型。 a. 交互式命令行推理 # Using an interactive command line for inference. CUDA_VISIBLE_DEVICES=0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --temperature 0 \ --max_new_tokens 2048 以我的测试为例 CUDA_VISIBLE_DEVICES=0 \ swift infer \ --adapters output/v3-20251220-164606/checkpoint-3058 \ --stream true \ --temperature 0 \ --max_new_tokens 2048 也可以合并lora adapter层并通过vllm启动交互式推理(具体LoRA微调步骤请参考上一篇文章): CUDA_VISIBLE_DEVICES=0,1 \ swift infer \ --adapters /mnt/data/jacky/output/v3-20251220-164606/checkpoint-3058/ \ --stream true \ --merge_lora true \ --infer_backend vllm \ --vllm_max_model_len 8192 \ --temperature 0 \ --max_new_tokens 2048 \ --vllm_gpu_memory_utilization 0.1 交互形式类似 <<< 你是谁 我是小落,落鹤生开发的个人智能助手。 --------------------------------------------------。 b. 合并导出,通过vllm启动 # merge-lora and use vLLM for inference acceleration CUDA_VISIBLE_DEVICES=0 \ swift infer \ --adapters output/vx-xxx/checkpoint-xxx \ --stream true \ --merge_lora true \ --infer_backend vllm \ --vllm_max_model_len 8192 \ --temperature 0 \ --max_new_tokens 2048 以我的测试为例 # 合并模型 swift export \ --adapters /mnt/data/jacky/output/v3-20251220-164606/checkpoint-3058/ \ --merge_lora true --output_dir merged_qwen3_4b_lora_swift # 通过vllm加载运行 /usr/local/bin/python3 /usr/local/bin/vllm serve \ merged_qwen3_4b_lora_swift/ \ --host 0.0.0.0 --port 8003 --root-path / --trust-remote-code \ --gpu-memory-utilization 0.1 --tensor-parallel-size 2 \ --served-model-name xiaoluo 随后可通过api调用 from openai import OpenAI client = OpenAI( base_url="http://0.0.0.0:8003/v1", # vLLM服务地址 api_key="na" # vLLM无需鉴权,设为任意值 ) SYSTEM_PROMPT = "" text = "你是谁" response = client.chat.completions.create( model="xiaoluo", messages=[{"role": "system", "content": SYSTEM_PROMPT},{"role": "user", "content": text}], temperature=0.0, max_tokens=1000 ) print(response.choices[0].message.content) 2)通过swift进行部署 CUDA_VISIBLE_DEVICES=0,1 \ swift deploy \ --model merged_qwen3_4b_lora_swift/ \ --infer_backend vllm \ --served_model_name xiaoluo \ --vllm_gpu_memory_utilization 0.3 \ --vllm_max_model_len 2048 \ --port 8001 四、补充说明 1. 训练耗时参考 最近的一次ms-swift的微调训练是在阿里的PPU-ZW810E芯片上跑的,这个芯片比较强,单卡96G显存,在Qwen2.5-0.5B-Instruct模型上,跑一轮SWIFT训练大概5分钟左右。 之前用AutoDL上的一张4090(24G显存),在Qwen3-4B-Instruct模型上跑一轮SWIFT约15到20分钟左右。 2. ms-swift适用场景 中小团队 / 开发者:在消费级 GPU 上快速微调你需要的模型(支持很多模型,具体看官网介绍),适配客服、知识库问答等场景。 多模态任务:快速开发图像 - 文本、视频 - 文本交互应用(如图文生成、VQA)。 企业落地:低成本迭代大模型,支持增量微调与量化部署,降低算力成本。 五、广而告之 1. AI技术交流群 新建了一个技术交流群,欢迎大家一起加入讨论。 扫码加入AI技术交流群(微信) 关注我的公众号:奥德元 让我们一起学习人工智能,一起追赶这个时代。 (若二维码过期了,可私信我) 2. 一点吐槽 貌似我写小落同学、写自己想做的事情,比如:ASR/TTS/Agent/MCP等等,写了一堆开源项目和代码,基本上没什么人关注,写一些更简单、入门级的文章反而看的人稍微多一点。