ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

大模型训练全流程与数据存储实践:从数据准备到本地微调部署

大模型训练全流程与数据存储实践:从数据准备到本地微调部署 1. 从用模型到炼模型先搞清楚大模型是怎么来的我最早接触大模型和大多数人一样是从调用API开始的。输入一段提示词返回一段还不错的回答方便是方便但始终觉得隔着一层纱——这个模型到底是怎么炼出来的为什么同样的数据换个训练方式效果就天差地别后来真正动手梳理了一遍训练流程才发现这东西的底层逻辑并不神秘只是链条太长每个环节都有坑。先说一个最核心的认知大模型的本质是一个超大规模的参数化函数。训练的目标就是通过海量数据不断调整这些参数让模型在给定输入时能够输出符合预期的结果。这个过程听起来和传统机器学习没什么两样但因为参数量动辄几十亿、上百亿甚至上千亿训练数据的规模也到了TB乃至PB级别整个工程链条就完全不一样了。如果你想走大模型学习路线我建议先建立起一个完整的框架认知再往下钻细节。整个训练体系可以拆成四个阶段预训练Pre-training用海量无标注文本通过自监督学习让模型学习语言的通用规律。这一阶段成本最高通常需要上千张GPU同时跑数周到数月。监督微调SFT用人工标注的“问题-答案”对让模型学会遵循指令、回答问题。这是让模型“可用”的关键一步。人类反馈强化学习RLHF通过人类偏好数据训练奖励模型再用强化学习优化策略让模型的回答更符合人类的价值观和偏好。推理部署训练完成后通过量化、蒸馏等手段压缩模型部署到实际业务中。这四个阶段里预训练是真正的“烧钱大户”一般人玩不起但SFT和RLHF是个人开发者和小团队可以尝试的。后面我会详细拆解这些阶段的实操细节先搞清楚原理再考虑动手。数据存储这块很多人容易忽略它的重要性。模型训练的效果很大程度上取决于训练数据的质量而数据质量不仅包括内容好不好还包括存储格式、存储路径、读取效率这些“偏工程”的环节。后面我也会分享一套从数据采集到存储落地的完整方案。2. 模型训练全流程拆解从数据准备到参数更新的四步走2.1 数据准备训练开始前决定成败的一步我见过不少人兴致勃勃地准备训练模型第一步就栽在了数据上。不是数据量不够而是数据格式混乱、质量参差不齐。要知道你喂给模型什么样的数据它就变成什么样的模型。数据里全是垃圾模型训练出来也只会输出垃圾这个道理在深度学习领域早就被反复验证过了。数据准备阶段要做的事情包括数据采集根据你的业务场景从公开数据集、网络爬虫、业务日志等渠道收集原始数据。数据清洗去重、去噪、过滤低质量内容、处理HTML标签和特殊字符。数据标注如果是SFT阶段需要人工或半自动方式标注“问题-答案”对如果是预训练阶段一般不需要人工标注但要做文本去重和Quality Filter。数据格式转换将清洗后的数据转换为模型训练框架能够直接读取的格式。这里要特别提醒一点数据清洗不是“能跑就行”它直接决定了模型的收敛速度和最终效果。比如中文语料里常见的全角/半角混用、繁简混杂、编码不一致UTF-8和GBK互转导致的乱码这些如果不提前处理干净训练出来的模型可能会在一些看似简单的中文任务上表现奇怪。我自己的经验是数据清洗至少要跑两轮第一轮做规则清洗用正则表达式处理明显的脏数据第二轮做人工抽检每5000条样本抽检20条左右看看整体质量是否达标。如果抽检发现异常比例超过2%说明清洗规则还有漏洞需要回头补充。2.2 预训练阶段模型学语言规律的核心过程预训练是整个模型训练链路里最“重”的部分。它的核心思路是给模型海量的文本让它自己学习预测下一个词或者掩码的词从而掌握语言的统计规律。以GPT系列为例预训练的目标函数是语言建模损失Language Modeling Loss通俗地说就是给定前文预测下一个词的概率分布。模型通过不断调整参数让预测的准确率越来越高。当训练数据足够多、参数规模足够大时模型就具备了强大的语言理解和生成能力。预训练阶段有几个关键参数需要关注学习率Learning Rate控制参数更新的步长。预训练阶段通常采用Warmup Decay策略先让学习率线性上升到一个峰值再逐步衰减以避免训练初期梯度震荡和后期收敛困难。Batch Size每次迭代喂给模型的样本数量。预训练阶段通常使用较大的Batch Size因为大Batch Size可以带来更稳定的梯度估计同时能更好地利用GPU并行能力。序列长度Sequence Length单次输入的最大token数。早期模型通常是512或1024现在的大模型已经扩展到2048、4096甚至8192因为更长的上下文能更好地学习长距离依赖关系。预训练需要的数据量是惊人的。业内有个经验法则参数量与数据量的配比要合理近年来的趋势是把数据量做得更多模型参数做得相对更少Chinchilla定律比如70B参数的模型训练数据量可能需要2000B tokens以上。当然预训练对于个人开发者来说基本不现实——光电力成本就够喝一壶的。更实际的路径是直接用开源的预训练模型比如千问、Llama等然后做微调。2.3 微调阶段让模型听你的话微调Fine-tuning是个人开发者和中小企业最常接触的阶段。它的目标是在预训练模型的基础上用相对少量的标注数据让模型学会特定领域的任务。这里要说清楚两个概念全参数微调和参数高效微调。全参数微调就是更新所有模型参数效果通常最好但需要的内存和时间也最高。以70B参数模型为例即使使用混合精度训练光模型权重就要占用140GB显存加上梯度和优化器状态显存需求直接奔着420GB去了一般不是个人能承受的。参数高效微调则聪明得多。它的思路是冻结原模型的参数只训练一小部分新引入的参数。最典型的方法包括LoRA在模型的全连接层旁边添加低秩分解矩阵训练时只更新这些低秩矩阵。以7B模型为例LoRA的可训练参数量通常在几十MB到几百MB级别显存需求比全参数微调低了几个量级。Adapter在Transformer层之间插入小型前馈网络模块只训练这些模块。Prefix Tuning在输入序列前添加一组可学习的Prefix向量只优化这些向量。我自己在8GB显存的消费级GPU上用Qwen2.5-7B做LoRA微调是可以跑通的。具体配置后面会讲到这里先记住结论个人做微调LoRA是首选方案。2.4 强化学习阶段对齐人类偏好让模型学会“好好说话”的终极手段是强化学习。这一阶段的目标模型是让模型的输出更符合人类偏好——不做无依据的胡说八道不产生有害内容回答有结构、有条理。RLHF从人类反馈中强化学习的经典流程是用SFT阶段训练好的模型生成一批回答。人工对回答的质量进行排序或打分。用这些偏好数据训练一个奖励模型Reward Model。以奖励模型给出的分数作为奖励信号用强化学习算法如PPO继续优化策略模型。不过这一阶段对于绝大多数开发者来说复杂度较高对资源的需求也不小。如果只是做垂直领域的应用尝试SFT通常已经够用了。RLHF更适合想做通用助手的团队。3. 数据存储的完整解决方案规划好存储就是在给训练打地基3.1 数据格式选型JSONL其实是最好的起点关于数据存储格式这是我看网络热词里被问得非常多的一块。简单梳理一下主流的训练数据格式格式适用场景优点缺点JSONLSFT指令微调、少量样本训练可读性好、流式处理友好、每行独立完整空间开销略大JSON参数配置、小规模数据层次清晰整个文件需整体解析不适合大数据量Parquet大规模预训练、海量数据压缩率高、读取性能好、列式存储可读性差调试不方便Arrow跨语言数据交换、需高性能读取内存对齐、零拷贝读取生态相对小众TFRecordTensorFlow训练场景与TF生态结合紧密与其他框架兼容性一般CSV结构化传统数据通用性强嵌套结构表达能力差我个人的习惯是训练数据用JSONL最终落盘用Parquet。为什么SFT阶段要频繁查看数据、检查标注质量JSONL每行一条样本用tail命令就能直接看到最新一批数据的样子排查问题太方便了。当数据量上了亿级以后再用一个转换脚本把JSONL转成Parquet节省存储空间并提升训练时的读取性能这个转储动作在数据管线设计早期就要想清楚。一个标准的JSONL数据样本长这样{instruction: 什么是大模型, input: , output: 大模型是指参数量规模巨大的深度学习模型通常在数十亿参数以上能够处理复杂的自然语言理解和生成任务。} {instruction: 给出一段Python代码实现读取JSON文件, input: , output: import json\n\nwith open(data.json, r, encodingutf-8) as f:\n data json.load(f)\nprint(data)}这里有个很多人容易犯的错JSONL文件每行必须是合法独立的JSON对象不能有额外的逗号或括号。每行最后换行符用\n不要用\r\n否则在一些解析脚本里会出现莫名的字符错位。3.2 数据分层存储策略热数据、温数据、冷数据分开管数据量大起来以后一个很现实的问题就是存储成本。早期我需要按TB级别存储训练语料如果把所有数据都放在高性能SSD上成本会非常高。后来参考了数据仓库里成熟的分层存储思路将数据按照访问频率和使用方式拆成了三级热数据当前正在训练的数据、高频验证集、模型checkpoint。这些数据放到本地NVMe SSD或高性能分布式存储上保证训练时的高吞吐读取。温数据已完成预处理但当前未在用的数据、中间结果、历史checkpoint。可以放到容量型存储上比如S3对象存储或者机械硬盘阵列通过网络挂载访问。冷数据原始采集数据、长时间不会用到的备份数据。可以归档到后端存储甚至做压缩后放入冷存储/离线存储介质。这里分享一个真实的存储规划数据以训练一套7B模型为例数据类别数据大小存储位置备注原始采集数据5TB冷存储压缩后约2.5TB保留一份原始备份清洗后语料800GB温数据S3按时间分目录去重后token化数据1.2TB热数据NVMe SSD分片存储按shard前缀训练checkpoint300GB热数据温数据双备份每5个epoch归档一次SFT标注数据20GB温数据JSONL版本管理每次标注生成新版本3.3 存取工具链本地与远程的场景方案存储格式定好了接下来要解决的是“怎么存、怎么取”的问题。本地单机场景最简单也最靠谱的方式就是经典的目录结构化存储。举个例子我会在本地建立一个训练数据工作目录/data/ ├── raw/ # 原始数据只读 │ ├── 20250101/ │ └── 20250102/ ├── clean/ # 清洗后数据 ├── tokenized/ # Token化后的二进制数据 ├── sft_data/ # 微调标注数据 │ ├── v1/ │ ├── v2/ │ └── sft_data.jsonl ├── checkpoints/ # 模型权重 └── logs/ # 训练日志这个结构的好处是任何人看到这个目录树就能迅速了解一套训练项目的数据流。目录命名别用“test”“final”“new2”这种没有清晰语义的名字后面一定会后悔。远程与分布式场景如果你的数据分布在多台机器上或者需要共享给训练集群那么对象存储会是不错的选择。S3兼容接口基本成了训练集群的事实标准不做过多解释。排查网络热词里提到一个问题“如何直接向ESXi的数据存储区的某个目录远程传递文件”。这个本质是在虚拟化环境中向虚拟机/宿主机传递数据和模型训练的数据存储逻辑是相通的。常用的做法有几种通过SCP/SFTP传输文件到ESXi主机再用vmkfstools或vmfs-tools写入VMFS数据存储。挂载NFS共享作为ESXi的数据存储这样远程主机可以像操作本地目录一样操作ESXi存储区。通过vSphere Web Client上传文件适合小体积的ISO或驱动包。对于超大数据先在宿主机上挂载一个临时共享目录再通过数据存储浏览器进行复制。这些操作本质上都是把文件从“一个地方”搬运到“另一个地方”关键在于理解目标存储的文件系统类型和挂载方式然后选择合适的传输协议。3.4 MySQL等传统数据库在数据存储中的角色顺便提一下网络热词里有一类高频词想看MySQL数据存储路径、一些数据库文件存储相关的问题。大模型项目中同样会用到传统关系型数据库主要场景是存储元数据比如训练样本的标注状态、标注人、审核状态。数据集的版本记录。训练任务的任务状态、参数配置。效果评估指标的记录与追踪。MySQL查看数据存储路径可以用这个SQLSHOW VARIABLES LIKE datadir;也可以查看my.cnf或my.ini中的datadir配置项。之所以很多人问这个是因为当磁盘空间不足时需要把数据目录迁移到更大的磁盘分区上。在大模型项目中我的建议是训练数据本身不要放进数据库除非你的单条样本特别小数据库只存元数据和索引信息。真正的大块数据放到文件系统或对象存储里数据库里存文件路径和MD5校验值就够了。这样既保证了元数据的检索效率又避免了数据库因为数据量太大而性能退化。4. 本地部署与训练实践的完整流程跑通一个最小闭环4.1 部署工具选型从零开始搭建训练/推理环境本地部署大模型现在可选择的路是很多的。我梳理一下主流路线方便不同基础的人对号入座。路线一Ollama——最省心适合尝鲜人群Ollama是目前最流行的本地大模型运行工具之一。它把模型下载、量化、加载、启动服务全部封装好了一条命令就能跑起来ollama run qwen2.5:7b它会自动从模型仓库拉取模型、完成量化、启动一个本地API服务。默认端口是11434通过HTTP请求就能调用。Ollama最大的价值在于极低的上手门槛。完全不懂深度学习的同学也能在10分钟内拥有一个本地大模型。它的局限在于灵活度有限更多是“开箱即用”的体验如果你想自定义模型结构或者做精细化的训练控制就会感到很受限。路线二vLLM——适合生产级推理和服务化部署vLLM是当前生产环境最常用的推理引擎。它通过PagedAttention等技术优化显存利用率和吞吐量并能提供与OpenAI兼容的API接口。一台普通工作站上用vLLM部署一个7B或13B的量化模型效果相当不错。一个典型的vLLM部署用法python -m vllm.entrypoints.openai.api_server \ --model /path/to/your/model \ --gpu-memory-utilization 0.9 \ --tensor-parallel-size 1 \ --dtype float16路线三Transformers DeepSpeed——适合训练和微调如果你想真正做模型训练或微调绕不开HuggingFace Transformers和DeepSpeed。Transformers提供了统一的模型接口和训练器DeepSpeed负责优化分布式训练时显存的使用。这里给出一个最简的LoRA微调配置pip install transformers datasets peft accelerate bitsandbytes然后写一个训练脚本要点是用load_in_8bit或load_in_4bit把模型量化到低精度以节省显存再用peft包做LoRA适配器训练。对于用Docker部署的开发者资源分配是一个高频踩坑点。Docker部署大模型时需要注意version: 3 services: ollama: image: ollama/ollama:latest ports: - 11434:11434 volumes: - ./ollama_data:/root/.ollama deploy: resources: limits: memory: 8G4.2 用Ollama跑通本地模型的基础操作如果你是从零开始我建议从Ollama出发先实现对模型的完整掌控感。基本操作序列如下安装Ollamacurl -fsSL https://ollama.com/install.sh | shWindows用户直接下载安装包。下载模型ollama pull qwen2.5:7b如果默认路径C盘空间不够可以通过设置OLLAMA_MODELS环境变量把模型存储路径改到D盘或其他数据盘export OLLAMA_MODELS/data/ollama_models启动一个带上下文的对话ollama run qwen2.5:7b调用API接口curl http://localhost:11434/api/generate -d { model: qwen2.5:7b, prompt: 用一句话解释什么是数据库, stream: false }创建自定义模型比如注入system promptollama create my-model -f ./ModelfileModelfile最简单的写法FROM qwen2.5:7b SYSTEM 你是一个专业的数据工程师回答技术问题要言简意赅直接给出结论和操作步骤。这个Modelfile本质上就是一个自定义模型的配置入口。4.3 在有限显存上完成模型微调的最小闭环说回训练。如果你想在本地做一次真正的微调实验我这套方案可以在单张8GB显存的显卡上跑通7B模型的LoRA微调环境准备pip install torch transformers datasets peft accelerate bitsandbytes核心配置用bitsandbytes把模型以4bit方式加载大幅压缩显存占用。from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig import torch # 4bit量化加载配置 quantization_config BitsAndBytesConfig( load_in_4bitTrue, bnb_4bit_quant_typenf4, bnb_4bit_use_double_quantTrue, bnb_4bit_compute_dtypetorch.bfloat16 ) # 以4bit加载模型 model AutoModelForCausalLM.from_pretrained( Qwen/Qwen2.5-7B, quantization_configquantization_config, device_mapauto, trust_remote_codeTrue )配置LoRA参数from peft import LoraConfig, get_peft_model lora_config LoraConfig( r8, # 低秩矩阵的秩越大效果越好但显存占用更高 lora_alpha16, # 缩放系数通常是r的两倍 target_modules[q_proj, k_proj, v_proj, o_proj], lora_dropout0.05, biasnone, task_typeCAUSAL_LM ) model get_peft_model(model, lora_config)开始训练from transformers import TrainingArguments, Trainer training_args TrainingArguments( output_dir./checkpoints, per_device_train_batch_size1, gradient_accumulation_steps8, learning_rate2e-4, num_train_epochs3, save_steps500, logging_steps50, fp16True, remove_unused_columnsFalse, ) trainer Trainer( modelmodel, argstraining_args, train_datasetdataset, ) trainer.train()这里有几个关键设计思路为什么per_device_train_batch_size1显存有限单张卡一个样本就已经接近极限宁可使用gradient_accumulation_steps来模拟更大的Batch Size保证训练的稳定性。为什么fp16True半精度训练能降低约一半显存占用且在消费级GPU上运算速度更快。为什么target_modules选q/k/v/o_proj这些是Transformer多头注意力层的核心投影矩阵LoRA在这几处注入低秩适配器效果最好也最主流。训练完成后把LoRA适配器单独保存model.save_pretrained(./lora_adapter)用的时候再加载原始模型 LoRA适配器简单方便。4.4 训练过程中的显存、超参与效果观察训练过程中要从监视显存、观察loss这两个基本点出发。用nvidia-smi实时查看显卡占用。也可以设置CUDA_LAUNCH_BLOCKING1让异常能更准确定位到行调试时非常有用。Loss曲线会经历一个快速下降到平台期的过程。如果loss在3个epoch内降不下来优先检查数据格式是否有误。如果训练正常但推理效果差优先检查数据量和数据质量是否可以继续提升。5. 网络热词里隐藏的高频疑问集中解答在整理这篇笔记的过程中我从网络热词里筛出了一批大家反复在搜的问题挑几个有代表性的集中回答这些问题都能在真实项目中遇到。Q1AnythingLLM可以训练模型吗AnythingLLM是一个基于向量数据库和大模型API的知识库问答工具它本身并不训练模型。它做的事是把你上传的文档切片、向量化存到向量数据库中在问答时先从库里检索相关片段再交给大模型生成回答。这就是RAG检索增强生成的完整闭环。想用自己的数据跑一个本地知识库问答AnythingLLM是个很好的选择但它不需要训练模型参数。Q2EasyOCR可以训练自己的模型吗EasyOCR主要针对通用光学字符识别底层的检测和识别网络是固定的但可以通过遭入旋转检测、信心度调整等参数来适配自己的场景。如果确实需要训练自己的文字识别模型可以考虑PaddleOCR或MMOCR这类支持自定义训练的框架。EasyOCR的优势是开箱即用劣势就是可定制性有限。Q3vLLM如何优化模型的缓存命中率vLLM的缓存命中率优化核心是它的PagedAttention机制。它把KV Cache注意力计算的键值缓存分块管理每个块按需分配和复用减少了显存碎片和重复计算。想要进一步提升命中率可以从这几个维度考虑用--max-num-seqs控制并发序列总数避免超发导致缓存过期。合理设置--max-model-len最大值设得过大会给长序列留出过多缓存空间从而降低短序列的缓存命中率。相同前缀的请求尽量集中发出因为PagedAttention对前缀共享做了优化相同前缀的KV可以复用。Q4如何从ESXi数据存储区远程传递文件这个前面提到过补充一个更完整的操作路径开启ESXi的SSH服务主机 - 操作 - 服务 - 启用SSH。通过SCP传给ESXi本地文件系统如/vmfs/volumes/datastore1。如果文件很大建议先通过NFS挂载或vSphere Web Client上传。有时候下载大模型文件到ESXi虚拟机里直接在虚拟机里用curl或wget下载是最省心的curl -L -o /data/model.bin https://example.com/model.binQ5本地部署大模型选什么显卡如果只做推理8GB显存如RTX 3060/4060 Laptop足够跑7B量化模型如果有16GB可以跑13B或14B模型如果想要40GB以上可以考虑两张24GB交火或直接上A6000/4090等高端卡。如果要做微调8GB显存只能跑LoRA微调7B模型24GB显存可以尝试全参数微调7B模型要训练30B以上模型基本得靠多卡方案或者云服务。Q6Microsooft和DeepSeek Harness桌面版怎么用这些工具类的热词大多围绕“如何下载、如何安装、如何本地化部署”这三连问。实际操作流程大同小异下载安装包 - 配置模型路径 - 设置API Key - 启动服务。关键点在于工具的配置文件路径通常在用户目录下如~/.开头的隐藏目录找不到配置文件时优先检查这里。6. 我在实际学习中反复踩过的三个坑和对应的排查思路最后这部分梳理三个我花了很长时间才排干净的坑都是真实项目里会碰到的分享出来供大家绕路。6.1 坑一训练数据格式“看着对”训练时疯狂报错表现数据字段都有JSON格式也合法但训练程序报出KeyError、TypeError之类的错误。根因字段名不匹配或字段类型不符合预期。比如模型期望instruction、input、output三个字段但你的数据写成了query、answer或者模型期望字符串类型你的数据里有整型/列表类型。排查思路用head -5查看数据文件的前几行确认字段名。用Python脚本统计字段类型分布做一个简单的数据Schema校验import json from collections import Counter with open(data.jsonl, r) as f: for i, line in enumerate(f): obj json.loads(line) for k, v in obj.items(): print(i, k, type(v).__name__) if i 100: break找到格式不一致的样本直接删掉或修正。6.2 坑二显存明明够用训练到一半就OOM表现前期训练正常跑了几个step之后突然报CUDA out of memory。根因常见于启用了较大的max_length或max_new_tokens时。训练过程中会动态分配KV Cache如果模型生成的长度超预期显存会瞬间被吃满。排查思路缩小max_length比如从2048减到1024。减小per_device_train_batch_size配合增大gradient_accumulation_steps。用pynvml写个脚本监控显存变化曲线定位是哪个环节消耗最大。import pynvml pynvml.nvmlInit() handle pynvml.nvmlDeviceGetHandleByIndex(0) while True: info pynvml.nvmlDeviceGetMemoryInfo(handle) print(fused: {info.used / 1024**3:.2f}GB, free: {info.free / 1024**3:.2f}GB) time.sleep(1)6.3 坑三模型训练完了回答问题驴唇不对马嘴表现loss收敛了但实际对话效果很差答非所问、重复输出、内容空洞。根因最常见的原因是数据量不足或数据多样性不够。用几千条数据做SFT模型只能记住训练样本的“表面格式”没有学到真正的指令遵循能力。另外一个常见原因是训练数据和推理场景不一致——训练时全是中文问答推理时却问英文问题效果自然打折扣。排查思路增加SFT样本量一般至少需要1万条以上才能看到明显效果。确保训练数据里有足够的负样本即不正确的回答示例这会显著提升模型输出的质量。检查是否在微调时把原始模型的能力破坏了可以做一次“通用能力回归测试”——拿模型跑一组数学题、常识题如果通用能力下降严重考虑在训练数据中加入更多通用语料来混合训练。7. 给后来者的实践建议与下一步方向整个模型训练和数据存储的学习链路我走过的路径可以总结成一句话先用现成的工具跑通推理再尝试在有限的硬件上做一次最小的微调最后理解训练流程的每一个环节并形成自己的数据工程方法论。具体到这个阶段我的建议是先跑通一个本地推理服务推荐Ollama Qwen2.5-7B先感受一下模型的输入输出方式了解API调用的基本流程。再做一次LoRA微调比如用公开的SFT数据集如alpaca-format中文数据集在8GB显存上跑一遍完整的训练流程把数据准备、模型加载、训练、保存、推理验证这个闭环走通。搭建一个简单的数据管理框架哪怕只是一个目录结构 一个元数据表也要做到数据有版本、有路径、有校验这会为你后续做更大规模的训练积累宝贵经验。尝试接入RAG链路把文档切分 - 向量化 - 存入向量数据库 - 检索 - 交给大模型回答这样你的大模型应用能力会有一个质的提升。就拿数据存储来说别小看目录结构和命名规范这些“不性感”的环节。我在工程实践中体会最深的一点是训练代码写错可以快速定位真正折磨人的往往是你找不到“上个月跑的这批数据到底放在哪儿”“这个checkpoint是哪个版本训练出来的”。把数据储量得清清楚楚本身就是项目能否跑得长远的关键。后续我还在研究多模态模型的微调比如图像输入 文本输出的模型和强化学习阶段的落地实操计划单独写一篇拆解笔记。平时踩坑比较多的话也可以从ONNX部署、模型量化、RAG向量数据库这几个方向入手它们和大模型结合得非常紧密每一项都是独立的实战主题。
返回列表