广西住房与城乡建设部网站徐州市鼓楼区建设局网站
广西住房与城乡建设部网站,徐州市鼓楼区建设局网站,资阳网站制作,做英文网站公司本文深入浅出地介绍了LoRA#xff08;Low-Rank Adaptation#xff09;这一高效微调技术#xff0c;通过LoRA#xff0c;即使小白也能对大模型进行轻量级定制#xff0c;使其适应特定任务或领域。文章详细阐述了LoRA的原理、优势与局限性#xff0c;并结合本地原生实现&am…本文深入浅出地介绍了LoRALow-Rank Adaptation这一高效微调技术通过LoRA即使小白也能对大模型进行轻量级定制使其适应特定任务或领域。文章详细阐述了LoRA的原理、优势与局限性并结合本地原生实现Transformers PEFT和百炼平台两种方式展示了小样本、低资源场景下的实战流程。结果表明LoRA能以极低的计算成本让通用大模型有效学习业务知识显著提升其在特定任务中的表现真正实现“让大模型懂业务”推动AI从“可用”走向“好用”。1、微调什么是微调大模型的微调Fine-tuning是指在一个已经预训练好的大模型比如 GPT、 DeepSeek、BERT、Llama等基础上针对特定任务、领域或数据进行进一步训练。微调通常通过在目标数据集上继续训练模型权重使模型更适应该任务从而提升下游任务的表现。简单来说预训练让模型掌握通用知识微调让模型适应某个具体用例。LLM 微调是一个有监督学习过程即有监督微调(SFT)通常语言模型的初始训练是无监督的但微调是有监督的。微调的分类按照⽬标任务标准微调任务微调针对某⼀具体任务进⾏微调如分类、问答、摘要等。领域微调针对某⼀特定领域数据进⾏微调如医疗、法律、⾦融等。指令微调通过⼤量的「指令-响应」数据集如Alpaca, Baize等对模型进⾏微调使其能够按照⾃然语⾔指令完成多种任务。按参数调整⽅式全参数微调Full-parameterTuning对所有模型参数进⾏更新。部分参数微调Repurposing只更新部分参数⽐如最后⼀层、分类头等。参数⾼效微调ParameterEfficientFine-Tuning, PEFT引⼊少量额外可训练参数冻结原模型绝⼤部分参数如LoRA、Adapter、Prefix Tuning等主要⽬的是⽤很少量新参数即实现任务适配。常⻅微调⽅法全参数微调直接在⽬标数据集上继续训练所有模型参数效果好但耗资源⼤对硬件要求⾼不易迁移。参数⾼效微调PEFTLoRALow-Rank Adaptation通过在部分参数上引⼊低秩矩阵仅训练这些新增的低秩参数⼤⼤减少训练所需参数量和显存消耗。Adapter在原有⽹络层之间插⼊⼩型新⽹络模块并仅训练这些模块参数。PrefixTuning / PromptTuning在输⼊或模型内部插⼊可训练的参数向量前缀、提示主⽹络参数保持不变。2、LoRA微调▐什么是 LoRALoRA(Low-RankAdaptationof LLMs)即 LLMs的低秩适应是参数⾼效微调最常⽤的⽅法。▐原理LoRA的核⼼思想是冻结预训练的基座模型Base Model在其某些层如注意⼒中的 Q、K、V投影上额外添加低秩矩阵A和 B作为可训练参数⽤于学习任务特定的增量调整。原始基座模型的权重 全程保持冻结、未修改。训练过程中只有 LoRA 引⼊的少量新增参数如 lora_A, lora_B被更新。LoRA的本质就是⽤更少的训练参数来近似 LLM全参数微调所得的增量参数从⽽达到使⽤更少显存占⽤的⾼效微调。LoRA的核⼼思路就是直接 freeze基座模型的全部参数然后额外给模型增加⼀个扰动的 module来模拟 finetune 之后参数改变的效果。如此⼀来只要这些扰动的 module参数量够⼩且推理够快就不会影响模型整体的 inference 成本且可以⼤幅地缩减模型 finetune的开销因为我们只需要训练极⼩量的⼀部分参数即可。基座模型只参与训练过程中的前向传播反向传播更新参数的只有 LoRA的插⼊的adapter参数。保留原来预训练好的权重 W不动旁路插入一个低秩矩阵 BA对 W 的输出做一个可学习的微小增量只训练 A、B 这两组很小的参数就能让模型适配新任务。上⾯是简化的示意图实际的 Transformer由很多线性投影如 Q、K、V、O、FFN 的W₁、W₂ 等组成每个都是⾃⼰的 d₁ × d₂ 矩阵。 LoRA 是把这些⼤矩阵 W 逐个冻结然后在它们上⾯叠加⼀个低秩增量 ΔW BA。 因此严格来说是对模型⾥的每个⼤矩阵都做⼀次 rank r远⼩于 d₁, d₂的低秩更新。训练省资源的根本原因原来若要微调 W需要存和反向传播 d₁·d₂ 个参数LoRA只训练 A(r × d₂)和 B(d₁ × r)参数量变成 2·r·max(d₁,d₂)当 r≪ min(d₁, d₂) 时可省 100× 乃⾄ 10 000× 的显存和梯度计算W冻结 → 不必存动量/梯度也不⽤进⾏前后两次 matmul⽐较差分⼤幅降低显存与算⼒。推理过程核心机制权重增量叠加Weight Addition。LoRALow-RankAdaptation在推理时并不是“绕道”或“替换”而是将 LoRA学习到的增量权重加到原始预训练模型的对应权重上。数学表达对于一个原始权重矩阵 W∈Rd×kW∈Rd×kLoRA引入低秩分解ΔWAB其中 A∈Rd×r , B∈Rr×k , r≪dΔWAB其中 A∈Rd×r, B∈Rr×k, r≪d推理时的实际权重为WnewWΔWWABWnewWΔWWAB然后使用 WnewWnew进行前向计算。两种推理模式模式说明特点1. 推理时动态叠加On-thefly加载原始模型 LoRA 权重实时计算**WΔWWΔW可用但慢2. 合并后推理MergedInference将 LoRA 权重 合并到原始模型中生成一个新模型直接推理推理更快、更稳定⼀般采⽤合并后⽣成新的模型来进⾏推理同时可以保留原始模型。优劣势LoRA 的优势优势说明资源成本低仅需训练少量参数如 QKV投影层节省 GPU显存和算力训练速度快梯度计算集中在小模块训练效率显著提升存储友好一个基础模型 多个 LoRA权重每个几 MB~几百 MB便于版本管理和部署灵活切换任务可动态加载不同 LoRA权重实现多业务场景快速切换保护原始模型原模型冻结避免灾难性遗忘保证通用能力LoRA 的局限性劣势说明性能略低于全参数微调在复杂任务上可能稍逊于全量微调但差距通常可控5%依赖基础模型质量LoRA无法修复基础模型的根本缺陷微调效果受限于预训练能力适配层选择敏感效果受插入位置如仅 attention、FFN等影响需实验调优推理需额外集成需支持 LoRA加载的推理框架如 HuggingFace PEFT、vLLM、llama.cpp等▐实战LoRA微调⽬前有多种⽅式实现Transformers PEFT原⽣实现LLaMA-Factory、Axolotl等框架实现以及借助百炼等封装好的可视化界⾯平台实现。本⽂主要尝试了 Transformers PEFT原⽣实现以及公司⽣产中更有可能⽤到的百炼平台实现。原⽣微调使⽤ Transformers PEFT原⽣实现。环境搭建transformerspeftdatasets注意几个库的版本之间有协同关系随意安装版本可能导致不兼容问题可在Hugging Face的官方文档中查看推荐版本。代码pip install --upgrade torch2.1.0cpu torchvision0.16.0cpu --index-url https://download.pytorch.org/whl/cpu pip install -U transformers4.38.2 peft0.10.0 datasets2.18.0 \ accelerate sentencepiece safetensors tqdm2. 模型准备这里考虑到微调是在 mac本地运行算力有限所以使用了较小的 DeepSeek-R1-Distill-Qwen-1.5B作为基座模型。使用 Hugging Face或 Modelscope等下载模型到本地即可。数据处理训练数据准备好数据文件 lora_seckill_qa.jsonl格式使用如下 instruction-response格式。{instrucAon:埋点时主要记录哪些事件,response:使⽤的是xx埋点框架埋点有分为各种事件类型主要的有曝光事件和点击事件可以根据曝光和点击事件来统计数据如点击率等} {instrucAon:xxxxxxxxxxxxxxxxxx,response:xxxxxxxxxxxxxxx}处理脚本import json from datasets import Dataset from transformers import AutoTokenizer # 正确读取jsonl with open(lora_seckill_qa.jsonl, r, encodingutf-8) as f: raw_data [json.loads(line) for line in f if line.strip()] # 如果是单轮格式可直接用 # dataset Dataset.from_list(raw_data) # 若是conversation 格式如 [{conversation:[...]}]需展开 def conversation_to_list(item): out [] for turn in item[conversation]: instr turn.get(system, ) \n turn[input] if turn.get(system) else turn[input] out.append({ instruction: instr.strip(), response: turn[output].strip() }) return out # 如果你的raw_data 已经是单轮格式就跳过这一段 all_samples [] if conversation in raw_data[0]: for d in raw_data: all_samples.extend(conversation_to_list(d)) dataset Dataset.from_list(all_samples) else: dataset Dataset.from_list(raw_data) # 保存分词器 tokenizer AutoTokenizer.from_pretrained( /Users/shawn/Documents/AI-dev/models/deepseek/deepseek-ai/DeepSeek-R1- Distill-Qwen-7B, trust_remote_codeTrue, local_files_onlyTrue ) tokenizer.save_pretrained(./tokenizer) # 保存处理后的数据集 dataset.save_to_disk(./processed_dataset_ms) print(预处理完成已保存)训练参数训练脚本import torch from datasets import load_from_disk from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, default_data_collator from peft import get_peft_model, LoraConfig import random # 1. 加载数据集 dataset load_from_disk(./processed_dataset_ms) # 2. 样本随机打乱 dataset dataset.shuffle(seed42) # 3. 分词器 tokenizer AutoTokenizer.from_pretrained(./tokenizer, local_files_onlyTrue) def generate_and_tokenize_prompt(batch): texts [ fs### Instruction: {instruction} ### Response: {response} /s for instruction, response in zip(batch[instruction], batch[response]) ] out tokenizer( texts, max_length256, paddingmax_length, truncationTrue, add_special_tokensFalse, return_tensorsNone, ) # Loss 忽略paddingp. out[labels] [ [tok if tok ! tokenizer.pad_token_id else -100 for tok in label] for label in out[input_ids] ] return out tokenized_dataset dataset.map( generate_and_tokenize_prompt, batchedTrue, remove_columnsdataset.column_names, descTokenizing ) # 4. 加载基座模型如设备有限可指定CPU/其他device model AutoModelForCausalLM.from_pretrained( /Users/shawn/Documents/AI-dev/models/deepseek/deepseek-ai/DeepSeek-R1- Distill-Qwen-7B, torch_dtypetorch.bfloat16, # MPS、A100 等建议用bfloat16 local_files_onlyTrue, trust_remote_codeTrue ) # 5. LoRA 配置 lora_config LoraConfig( r8, lora_alpha16, target_modules[q_proj, v_proj, k_proj, o_proj], lora_dropout0.05, # 或0, 稳定死记记忆推荐小数据降dropout biasnone, task_typeCAUSAL_LM ) model get_peft_model(model, lora_config) model.print_trainable_parameters() # 6. 训练参数 training_args TrainingArguments( output_dir./results_ms, per_device_train_batch_size2, gradient_accumulation_steps1, learning_rate3e-4, num_train_epochs8, logging_dir./logs_ms, save_steps100, save_total_limit3, logging_steps10, overwrite_output_dirTrue, report_toNone, fp16False ) trainer Trainer( modelmodel, argstraining_args, train_datasettokenized_dataset, data_collatordefault_data_collator, ) # 7. 训练与自动采样输出 trainer.train() # 8. 保存模型与tokenizer model.save_pretrained(./deepseek-7b-lora_ms) tokenizer.save_pretrained(./deepseek-7b-lora_ms) print(训练完成。)参数解析LoRA配置参数lora_configr8含义LoRA中低秩矩阵的秩rank⽤于近似原始权重矩阵。作⽤控制新增参数量显著降低训练显存消耗。影响r太⼩ → ⽋拟合表达能⼒不足r太⼤ → 接近全量微调失去 LoRA优势常⻅值4~ 64根据任务复杂度调整如简单任务⽤ r8复杂任务可⽤ r32lora_alpha16含义LoRA权重的缩放因⼦控制低秩矩阵对输出的影响强度。作⽤调节LoRA分⽀的贡献程度类似“学习率系数”。影响推荐保持 alpha / r≥ 1如 r8, alpha16→ ⽐值为 2值过⼤ → 容易过拟合值过⼩ → 影响微弱建议初试设置 alpha 2 × rtarget_modules[“q_proj”,“v_proj”,“k_proj”,“o_proj”]含义指定在哪些模块上应⽤ LoRA通常是注意⼒层的投影层。作⽤精准控制适配范围节省计算资源。常⻅选择LLaMA系列[“q_proj”, “k_proj”, “v_proj”, “o_proj”]BERT类[“query”, “value”, “key”, “dense”]影响仅作⽤于部分模块 → 可能限制模型适应能⼒可根据模型结构扩展如加⼊ up_proj, down_projlora_dropout0.05含义LoRA层的 Dropout概率⽤于正则化。作⽤防⽌过拟合提升泛化能⼒。影响值越⼤ → 正则化越强⼩数据集建议0.1~ 0.2⼤数据集可设为 0或 0.05注意若训练不稳定可尝试增加 dropoutbias“none”含义是否在 LoRA层中引⼊偏置项。选项“none”不加偏置推荐起点“all”所有模块加偏置“lora_only”仅 LoRA层加偏置影响加偏置可能略微提升效果但增加参数量建议从 “none” 开始效果不佳再尝试 “lora_only”task_type“CAUSAL_LM”含义指定任务类型影响损失函数和标签处理⽅式。常⽤类型“CAUSAL_LM”⾃回归语⾔模型如 GPT、LLaMA⽣成任务“SEQ_CLS”序列分类如情感分析“TOKEN_CLS”Token级分类如命名实体识别“SEQ_2_SEQ_LM”Seq2Seq任务如翻译、摘要注意必须与任务匹配否则训练会出错训练参数training_args参数值说明output_dir“./results_ms”保存模型检查点、日志等文件的目录per_device_train_batch_size2每个设备上的 batchsize显存不足时可减小gradient_accumulation_steps1梯度累积步数等效增大 batchsize如设为 4→ 实际 batch 8learning_rate3e-4学习率LoRA推荐范围 1e-4~1e-3num_train_epochs8训练轮数一般从 3~10开始调整logging_dir“./logs_ms”日志保存路径可用于 TensorBoard可视化save_steps100每隔多少 step保存一次 checkpointsave_total_limit3最多保留几个 checkpoint自动删除旧的logging_steps10每隔多少 step输出一次日志便于监控overwrite_output_dirTrue若目录存在则覆盖避免手动清理report_toNone不连接远程报告工具如 wandb、tensorboardfp16False是否启用 FP16半精度训练 ✅ 支持设备建议开启节省显存 加速 ⚠️ 若开启需确保模型场景建议配置小数据集微调r8*,alpha16,dropout0.1,*epochs5~10大数据集微调r16~32*,alpha32,dropout0.05,*lr2e-4显存受限减小batch_size启用fp16使用**gradient_accumulation快速实验overwrite_output_dirTrue*,logging_steps10,*save_steps50训练成本使⽤1000条左右数据微调qwen3-14b的模型⼀次训练成本预计 10元左右。可以看到模型微调本⾝的成本并不算很⾼即使换参数量更⼤的模型以及更多的数据。后续的部署、推理成本才是⼤头。测试脚本import torch from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel # 路径设置 BASE_PATH /Users/shawn/Documents/AI-dev/models/deepseek/deepseekai/ DeepSeek-R1-Distill-Qwen-7B LORA_PATH ./deepseek-7b-lora_ms # 加载分词器 tokenizer AutoTokenizer.from_pretrained( BASE_PATH, local_files_onlyTrue, trust_remote_codeTrue ) # 严格分离模型实例 # 原始模型 model_base AutoModelForCausalLM.from_pretrained( BASE_PATH, device_mapmps, torch_dtypetorch.bfloat16, local_files_onlyTrue, trust_remote_codeTrue ) # 微调后的模型Base LoRA 适配器 model_base_for_lora AutoModelForCausalLM.from_pretrained( BASE_PATH, device_mapmps, torch_dtypetorch.bfloat16, local_files_onlyTrue, trust_remote_codeTrue ) model_lora PeftModel.from_pretrained( model_base_for_lora, LORA_PATH ) def format_prompt_one_round(user_input: str) - str: return fs### Instruction:\n{user_input}\n### Response:\n def generate_single(model, prompt, tokenizer, max_new_tokens200): inputs tokenizer(prompt, return_tensorspt) for k, v in inputs.items(): inputs[k] v.to(model.device) with torch.no_grad(): outputs model.generate( **inputs, max_new_tokensmax_new_tokens, temperature0.7, top_p0.9, do_sampleTrue, eos_token_idtokenizer.eos_token_id ) full_output tokenizer.decode(outputs[0], skip_special_tokensTrue) reply full_output[len(prompt):] # 截断下一个分隔符保证只输出新生成内容 for sep in [s, /s, ###]: if sep in reply: reply reply.split(sep)[0] return reply.strip() def main(): print(*40) print(DeepSeek 模型微调前/后 单轮对话对比严格模型物理分离版) print(*40) print(输入exit 退出。\n) while True: user_input input(你说).strip() if user_input.lower() in {exit, quit}: print(对话结束~ 再见) break prompt format_prompt_one_round(user_input) # 原始模型推理 base_reply generate_single(model_base, prompt, tokenizer) # LoRA 微调后模型推理 lora_reply generate_single(model_lora, prompt, tokenizer) print(\n-------------------------------) print(【原模型 输出】↓\n base_reply) print(\n【微调后输出】↓\n lora_reply) print(-------------------------------) if __name__ __main__: main()测试结果 case可以看到原模型完全无法感知到业务相关的知识而微调后的模型已经有效的学到了注由于数据量小且模型本身参数量也小做演示的微调结果存在一定的过拟合百炼平台微调数据准备根据百炼的训练数据示例格式准备数据百炼训练数据格式{“messages: [{role: system, content: You are a professional e-commerce title analyst. Given a long product title, output ONLY the core product entity name (1-5 words) without any other text.}, {role: user, content: 请从下列 商品标题中提取最核心的商品主体直接输出主体名不要加其它词【黑旗】心语肉松原味辣 味1kg 烘焙面包蛋糕寿司原料商用肉松小贝}, {role: assistant, content: 肉松 }]} {messages: [{role: system, content: You are a professional e-commerce title analyst. Given a long product title, output ONLY the core product entity name (1-5 words) without any other text.}, {role: user, content: 请从下 列商品标题中提取最核心的商品主体直接输出主体名不要加其它词夏季竹枕片成人藤凉席冰 丝枕头套单人儿童竹枕席藤枕芯套一对拍2}, {role: assistant, content: 枕套}]}训练参数参数跟原⽣实现的参数基本⼀致可以参考上述的训练参数解析及百炼的⽂档。评测创建评测数据集创建⽅式同训练数据使⽤百炼模版2.选择评测⽅式开始评测有三种评测⽅式⼈⼯评测特点经过⼈⼯校验打分在很多应⽤场景下是相对准确的同时⽐较主观在⼀些场景下可能不够标准化且⼈⼒消耗较高。模型评测特点适合评测⽂本⽣成类可以调整 prompt 来对⾃⼰微调后模型的回答要点进⾏打分利⽤另⼀个⼤模型的能⼒实现灵活打分但是⽐较依赖模型的能⼒以及 prompt同时分数有时也不够标准化。基线评测通过预置的算法来对模型的特定⽅向能⼒进⾏标准化评测。⼿动测试结果左侧为微调后的模型右侧为原始模型其对商品主体识别的能⼒得到提升。总结LoRALow-RankAdaptation微调技术为业务开发场景提供了⾼效、低成本的⼤模型定制化路径展现出显著优势训练成本低效果出色显存占用少仅需微调少量新增参数可在消费级 GPU上完成训练降低硬件门槛。训练速度快参数更新量小支持快速迭代适合业务团队敏捷试错。性能接近全量微调在多种任务中表现优异效果逼近全参数微调性价比极高部署灵活易于管理适配器轻量化LoRA 权重文件通常仅几十 MB便于存储、传输与版本管理。多任务共享主干支持“一个基础模型 多个 LoRA适配器”的模式实现不同业务线共用底座模型提升资源利用率。稳定可靠风险可控缓解过拟合在小样本场景下表现更稳定有效避免全参数微调带来的灾难性遗忘或过拟合问题。保护原始模型不修改主干参数仅通过低秩增量进行适配提升模型鲁棒与可维护性。核心价值让大模型真正“懂业务”LoRA 微调的轻量与高效使得业务开发者能够基于自身积累的高质量业务数据如客服对话、商品描述、内部流程文本等对大模型进行快速定制化训练。这不仅大幅降低了 AI 落地的技术门槛更让模型输出更可控、更精准、更贴近实际业务需求。未来我们将持续探索 LoRA在真实业务场景中的应用例如智能推荐、自动化文案生成、研发提效等方向以数据驱动 模型微调的方式助力业务增长与技术升级。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包✅ 从零到一的 AI 学习路径图✅ 大模型调优实战手册附医疗/金融等大厂真实案例✅ 百度/阿里专家闭门录播课✅ 大模型当下最新行业报告✅ 真实大厂面试真题✅ 2026 最新岗位需求图谱所有资料 ⚡️ 朋友们如果有需要《AI大模型入门进阶学习资源包》下方扫码获取~① 全套AI大模型应用开发视频教程包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点② 大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通③ 大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。④ AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。⑤ 大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。⑥ 大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。以上资料如何领取为什么大家都在学大模型最近科技巨头英特尔宣布裁员2万人传统岗位不断缩减但AI相关技术岗疯狂扩招有3-5年经验大厂薪资就能给到50K*20薪不出1年“有AI项目经验”将成为投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。以上全套大模型资料如何领取