三、构建一个Agent
上一章节提到的版本冲突问题实际是在构建的过程中发现并解决,为了帮助大家避坑,所以在上一篇就写出来。本章节使用的是DataWhale提供的一个完整可用的代码仓来进行的一个实验。末尾有代码仓的地址。
1、数据下载
执行数据下载的py脚本,脚本的位置在 项目根目录/dataScripts
python dataScripts/download_data.py
执行成功后会在控制台看到如下信息:
2025-07-27 10:28:22.485 | INFO | __main__:download_data:65 - 开始下载甄嬛传数据集...
2025-07-27 10:28:22.485 | INFO | __main__:download_file:40 - 开始下载: 甄嬛传训练数据
甄嬛传训练数据: 937kB [00:01, 603kB/s]
2025-07-27 10:28:24.836 | INFO | __main__:download_file:54 - 下载完成: ..\data\raw\huanhuan.json
2025-07-27 10:28:24.837 | INFO | __main__:run:77 - 🎉 数据下载完成!
2025-07-27 10:28:24.837 | INFO | __main__:run:78 - 📁 数据保存在: ..\data
2025-07-27 10:28:24.838 | INFO | __main__:run:79 - 📝 接下来可以运行: python training/huanhuan_data_prepare.py
2、数据预处理
执行数据预处理的py脚本
python training/huanhuan_data_prepare.py
执行成功后会在控制台看到如下信息:
2025-07-27 13:08:20.772 | INFO | __main__:main:201 - 将处理全部数据
2025-07-27 13:08:20.772 | INFO | __main__:process_data:72 - 开始处理甄嬛传数据...
2025-07-27 13:08:20.783 | INFO | __main__:load_json_data:58 - 加载训练数据: 3729 条
2025-07-27 13:08:20.786 | INFO | __main__:process_data:98 - 处理完成,有效数据: 3729 条
2025-07-27 13:08:20.787 | INFO | __main__:split_data:115 - 数据分割完成 - 训练集: 2983, 验证集: 372, 测试集: 374
2025-07-27 13:08:20.799 | INFO | __main__:save_data:139 - 保存 train.jsonl: 2983 条数据
2025-07-27 13:08:20.800 | INFO | __main__:save_data:139 - 保存 validation.jsonl: 372 条数据
2025-07-27 13:08:20.802 | INFO | __main__:save_data:139 - 保存 test.jsonl: 374 条数据
2025-07-27 13:08:20.802 | INFO | __main__:run:159 - 🎉 数据预处理完成!
2025-07-27 13:08:20.802 | INFO | __main__:run:160 - 📁 数据保存在: d:\PythonWorkspace\ollama_baseline\data
2025-07-27 13:08:20.803 | INFO | __main__:run:161 - 📝 接下来可以运行: python training/huanhuan_train.py
3、模型训练
执行模型训练的脚本,脚本的位置在 项目根目录/training
python huanhuan_train.py
执行成功的话,一开始会出现如下信息:
2025-07-27 16:16:16.147 | INFO | __main__:__init__:146 - HuanHuanTrainer 初始化完成,配置文件: ./huanhuan_config_fast.yaml
2025-07-27 16:16:16.160 | INFO | __main__:load_config:165 - 配置文件加载成功: ./huanhuan_config_fast.yaml
2025-07-27 16:16:16.161 | INFO | __main__:setup_device:179 - 使用CUDA设备: NVIDIA GeForce RTX 4060 Ti
2025-07-27 16:16:16.161 | INFO | __main__:load_model_and_tokenizer:196 - 加载分词器: Qwen/Qwen2.5-0.5B
D:\anaconda3\envs\ollama_baseline_env\lib\site-packages\huggingface_hub\file_download.py:797: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.warnings.warn(
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
2025-07-27 16:16:17.991 | INFO | __main__:load_model_and_tokenizer:207 - 加载模型: Qwen/Qwen2.5-0.5B
2025-07-27 16:16:20.281 | INFO | __main__:load_model_and_tokenizer:217 - 模型已移动到设备: cuda
2025-07-27 16:16:20.283 | INFO | __main__:load_model_and_tokenizer:219 - 模型参数量: 494,032,768
2025-07-27 16:16:20.283 | INFO | __main__:setup_lora:230 - 配置LoRA参数
2025-07-27 16:16:20.375 | INFO | __main__:setup_lora:246 - 可训练参数: 86,016 (0.02%)
2025-07-27 16:16:20.376 | INFO | __main__:setup_lora:247 - 总参数量: 494,118,784
2025-07-27 16:16:20.376 | INFO | __main__:setup_training_arguments:306 - 检测到CUDA设备,使用4个数据加载器工作进程
2025-07-27 16:16:20.428 | INFO | __main__:prepare_datasets:260 - 加载训练数据: ../data/processed/train.jsonl
2025-07-27 16:16:20.437 | INFO | __main__:load_conversations:76 - 加载了 2983 条对话数据
2025-07-27 16:16:20.437 | INFO | __main__:prepare_datasets:280 - 训练集: 2387 样本
2025-07-27 16:16:20.438 | INFO | __main__:prepare_datasets:281 - 验证集: 298 样本
2025-07-27 16:16:20.438 | INFO | __main__:prepare_datasets:282 - 测试集: 298 样本
D:\anaconda3\envs\ollama_baseline_env\lib\site-packages\accelerate\accelerator.py:436: FutureWarning: Passing the following arguments to `Accelerator` is deprecated and will be removed in version 1.0 of Accelerate: dict_keys(['dispatch_batches', 'split_batches', 'even_batches', 'use_seedable_sampler']). Please pass an `accelerate.DataLoaderConfiguration` instead:
dataloader_config = DataLoaderConfiguration(dispatch_batches=None, split_batches=False, even_batches=True, use_seedable_sampler=True)warnings.warn(
2025-07-27 16:16:20.471 | INFO | __main__:setup_training_arguments:374 - 训练器创建完成
2025-07-27 16:16:20.471 | INFO | __main__:train:382 - === 开始甄嬛角色模型训练 ===
2025-07-27 16:16:20.471 | INFO | __main__:train:386 - 🚀 开始模型训练...
最后几行的信息如下,看到这些信息就说明训练完成了
2025-07-27 17:25:14.295 | INFO | __main__:train:390 - 💾 保存最终模型...
D:\anaconda3\envs\ollama_baseline_env\lib\site-packages\huggingface_hub\file_download.py:797: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.warnings.warn(
2025-07-27 17:25:15.331 | INFO | __main__:train:394 - === 训练完成 ===
2025-07-27 17:25:15.331 | INFO | __main__:train:395 - 📁 模型保存在: ../training/models/huanhuan_fast
2025-07-27 17:25:15.331 | INFO | __main__:main:414 - 🎉 甄嬛角色模型训练完成!
2025-07-27 17:25:15.331 | INFO | __main__:main:415 - 📁 接下来可以运行部署脚本: python deployment/huanhuan_deploy.py