当前位置: 首页 > article >正文

[具身智能-504]:使用Transformers python库进行大模型的再训练、部署、使用的示例

使用 Hugging Face 的Transformers库进行大模型的再训练、部署和使用是 AI 开发的核心工作流。下面将通过一个完整的实战示例带你从零开始体验这三个关键环节。我们将以阿里的Qwen2.5-7B-Instruct模型为例展示如何对其进行微调并将其部署为一个可调用的 API 服务。️ 环境准备首先你需要安装必要的 Python 库。这里我们使用pip进行安装。bash# 安装核心库 pip install transformers accelerate torch datasets peft bitsandbytes trltransformers: Hugging Face 的核心库用于加载模型和分词器。accelerate: 简化多 GPU 和混合精度训练。torch: PyTorch 深度学习框架。datasets: 方便地加载和处理数据集。peft:参数高效微调库用于 LoRA/QLoRA 等高效微调方法。bitsandbytes: 提供量化支持如 4-bit/8-bit 加载大幅降低显存占用。trl: Transformer Reinforcement Learning这里我们用它提供的SFTTrainer来简化监督微调流程。 第一步再训练以 QLoRA 微调为例直接训练一个 7B 参数量的模型需要巨大的显存。QLoRA (Quantized Low-Rank Adaptation) 技术通过量化和高效参数微调让我们能在单张消费级显卡如 RTX 3090/4090上完成训练。1. 准备数据集我们使用一个 JSONL 格式的数据集其中每一行都是一个包含instruction指令、input输入和output期望输出的样本。json{instruction: 解释量子纠缠, input: , output: 量子纠缠是量子力学中的一种现象...} {instruction: 将这句话翻译成英文, input: 你好世界, output: Hello, World}2. 编写训练脚本下面是一个完整的 QLoRA 微调脚本包含了量化配置、LoRA 配置和训练流程。pythonimport torch from datasets import load_dataset from transformers import ( AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, TrainingArguments ) from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training from trl import SFTTrainer # --- 1. 配置 4-bit 量化 (QLoRA 核心) --- # 这将模型权重压缩到 4-bit显存占用直接减半 bnb_config BitsAndBytesConfig( load_in_4bitTrue, bnb_4bit_quant_typenf4, bnb_4bit_compute_dtypetorch.float16, bnb_4bit_use_double_quantTrue, )websourcesource_group_web_3/websource # --- 2. 加载模型和分词器 --- MODEL_ID Qwen/Qwen2.5-7B-Instruct tokenizer AutoTokenizer.from_pretrained(MODEL_ID) # 确保分词器有 pad_token tokenizer.pad_token tokenizer.eos_token model AutoModelForCausalLM.from_pretrained( MODEL_ID, quantization_configbnb_config, # 应用量化配置 device_mapauto, # 自动分配设备 trust_remote_codeTrue ) # --- 3. 预处理模型以进行 k-bit 训练 --- model prepare_model_for_kbit_training(model) # --- 4. 配置 LoRA --- # 我们只训练新增的少量参数而不是整个模型 peft_config LoraConfig( r16, # 秩决定新增参数规模 lora_alpha32, # 缩放系数通常是 r 的 2 倍 lora_dropout0.05, biasnone, task_typeCAUSAL_LM, target_modules[q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj] ) model get_peft_model(model, peft_config)websourcesource_group_web_4/websource # --- 5. 加载数据 --- dataset load_dataset(json, data_filesdata.jsonl, splittrain) # --- 6. 配置训练参数 --- training_args TrainingArguments( output_dir./qwen_lora_finetuned, num_train_epochs3, per_device_train_batch_size4, gradient_accumulation_steps4, # 模拟更大的 batch size learning_rate2e-4, fp16True, # 混合精度训练 logging_steps10, save_strategysteps, save_steps100, load_best_model_at_endTrue, ) # --- 7. 开始训练 --- trainer SFTTrainer( modelmodel, argstraining_args, train_datasetdataset, tokenizertokenizer, ) trainer.train() # --- 8. 保存模型 --- # 保存的是 LoRA 适配器权重体积很小 model.save_pretrained(./qwen_lora_finetuned) tokenizer.save_pretrained(./qwen_lora_finetuned) 第二步部署以 FastAPI 为例训练完成后我们需要将模型部署为一个 Web API以便其他应用调用。这里使用FastAPI框架它快速且能自动生成文档。注意部署时你需要将基础模型和训练好的 LoRA 权重合并或者分别加载。为简化示例这里假设你已经将 LoRA 权重合并到了基础模型中并保存为./qwen-7b-merged。pythonfrom fastapi import FastAPI, Body from transformers import AutoTokenizer, AutoModelForCausalLM import torch import uvicorn app FastAPI(title我的大模型API) # --- 1. 服务启动时加载模型 --- # 使用 8-bit 加载以节省显存适合部署环境 model_name ./qwen-7b-merged tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained( model_name, device_mapauto, load_in_8bitTrue, trust_remote_codeTrue ).eval() # 切换到评估模式 # --- 2. 定义推理接口 --- app.post(/generate) async def generate( prompt: str Body(..., description输入提示词), max_tokens: int Body(512, description最大生成token数), temperature: float Body(0.7, description采样温度) ): # 构建输入 inputs tokenizer(prompt, return_tensorspt).to(cuda) # 模型推理 with torch.no_grad(): # 推理时不需要计算梯度 outputs model.generate( **inputs, max_new_tokensmax_tokens, do_sampleTrue, temperaturetemperature, pad_token_idtokenizer.eos_token_id ) # 解码输出 result tokenizer.decode(outputs, skip_special_tokensTrue) return {code: 200, prompt: prompt, response: result} # --- 3. 启动服务 --- if __name__ __main__: # 运行在 http://0.0.0.0:8000 uvicorn.run(app, host0.0.0.0, port8000)启动服务后你可以访问http://localhost:8000/docs查看自动生成的交互式 API 文档并直接进行测试。 第三步使用基础推理示例在微调或部署之后你也可以直接用Transformers库加载模型进行简单的推理感受模型的能力。pythonfrom transformers import AutoTokenizer, AutoModelForCausalLM import torch # --- 1. 加载模型 --- model_name Qwen/Qwen2.5-7B-Instruct tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) # 使用 8-bit 加载降低显存门槛 model AutoModelForCausalLM.from_pretrained( model_name, device_mapauto, load_in_8bitTrue, trust_remote_codeTrue ).eval() # --- 2. 构建对话 --- messages [ {role: system, content: 你是一个专业的AI助手。}, {role: user, content: 请介绍一下大模型量化技术。} ] # 应用模型的对话模板 text tokenizer.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) model_inputs tokenizer([text], return_tensorspt).to(cuda) # --- 3. 生成回复 --- generated_ids model.generate(**model_inputs, max_new_tokens512) # 截取新生成的部分 output_ids generated_ids[len(model_inputs.input_ids):] response tokenizer.decode(output_ids, skip_special_tokensTrue) print(response)通过以上三个步骤你就完成了从模型再训练、服务部署到最终使用的完整闭环。

相关文章:

[具身智能-504]:使用Transformers python库进行大模型的再训练、部署、使用的示例

使用 Hugging Face 的 Transformers 库进行大模型的再训练、部署和使用,是 AI 开发的核心工作流。下面将通过一个完整的实战示例,带你从零开始,体验这三个关键环节。我们将以阿里的 Qwen2.5-7B-Instruct 模型为例,展示如何对其进行…...

5步掌握缠论可视化:自动化你的技术分析工作流

5步掌握缠论可视化:自动化你的技术分析工作流 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 还在为手工分析复杂的缠论结构而烦恼吗?面对K线图上密密麻麻的价格波动,…...

Python 数据库优化:索引与查询

Python 数据库优化:索引与查询 核心原理 数据库索引的基本概念 数据库索引是一种数据结构,用于快速查询数据库表中的数据。其核心原理是通过创建一个排序的数据结构,将表中的数据按照索引列的值进行排序,从而加速查询操作。 索引的…...

论文投稿前让AI预审太好用啦!!!

作为一个拿过2项国自然青年基金、带过3届硕博生的高校青椒,今天给大家聊点掏心窝子的稿件打磨经验,都是我踩了无数坑、熬了无数夜攒出来的干货,不管你是要申基金、写毕业论文还是报专利,都能用得上。首先先给大家列3个科研人最容易…...

Playwright理解与封装

前言 之前对 Playwright 一直是懵懵懂懂的状态,用起来总觉得隔着一层纱。最近深入学习后,基本掌握了其主要概念,同时也基于自己的理解做了一个封装库。本文将分享我对 Playwright 的理解,以及如何将其封装成一个可以像普通浏览器…...

强化学习:从Q-Learning到SAC

强化学习:从Q-Learning到SAC 核心原理 强化学习的基本概念 强化学习(Reinforcement Learning, RL)是一种机器学习范式,通过智能体(Agent)与环境(Environment)的交互来学习最优策略。…...

Python 并发编程:最佳实践与性能

Python 并发编程:最佳实践与性能 核心原理 并发编程的基本概念 并发编程是指在同一时间内执行多个任务的编程范式,其核心目标是提高程序的执行效率和响应速度。在Python中,并发编程主要通过以下三种方式实现: 多线程(T…...

KMS智能激活工具:三步实现Windows和Office永久激活的完整方案

KMS智能激活工具:三步实现Windows和Office永久激活的完整方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文档突然…...

别再死记硬背了!图解AXI4协议握手机制与BRAM读写时序(附仿真波形分析)

AXI4协议握手机制与BRAM读写时序的实战解析 在FPGA开发中,AXI4总线协议已经成为连接IP核的事实标准。但很多开发者在使用AXI接口时,往往停留在"能工作就行"的层面,对协议底层机制一知半解。当遇到复杂的时序问题时,这种…...

大数据分析专业共享单车需求相关数据集,数据量38000条左右

大数据分析专业共享单车需求相关数据集,数据量38000条左右,可以用于共享单车相关大数据分析,具体字段如下:数据详情如下:...

Arm架构文档JSON化:技术解析与开发实践

1. Arm架构文档的JSON化演进在处理器架构领域,文档的机器可读性正成为行业关键需求。作为移动计算和嵌入式系统的霸主,Arm公司近年来持续推进技术文档的结构化改革。2025年底发布的A-profile架构JSON文档包,标志着Arm在架构描述方式上的重大转…...

Python跨端应用启动慢、体积大、热更新难?这4个编译级优化技巧,上线前必须做!

更多请点击: https://intelliparadigm.com 第一章:Python跨端应用编译优化的挑战与本质 Python 作为解释型语言,其跨端(桌面、移动端、WebAssembly)部署长期受限于运行时依赖、体积膨胀和启动延迟。将同一套 Python 逻…...

Layerdivider终极指南:如何3步将任何图片转换为专业PSD分层文件

Layerdivider终极指南:如何3步将任何图片转换为专业PSD分层文件 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾面对复杂的插画作品&…...

Pixelle-Video:三步实现AI全自动短视频生成的专业开发指南

Pixelle-Video:三步实现AI全自动短视频生成的专业开发指南 【免费下载链接】Pixelle-Video 🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine 项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video Pixelle-Video是一…...

3分钟极简方案:Onekey让Steam游戏清单下载自动化

3分钟极简方案:Onekey让Steam游戏清单下载自动化 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 您是否厌倦了手动下载Steam游戏清单的繁琐过程?是否曾因复杂的配置步骤而…...

RimSort终极指南:三步解决《边缘世界》模组冲突与排序难题

RimSort终极指南:三步解决《边缘世界》模组冲突与排序难题 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-…...

Pixelle-Video:5分钟学会用AI自动生成多语言短视频

Pixelle-Video:5分钟学会用AI自动生成多语言短视频 【免费下载链接】Pixelle-Video 🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine 项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video 你是否想过,只…...

基于Biham-Kocher已知明文攻击的ZIP密码恢复引擎架构解析

基于Biham-Kocher已知明文攻击的ZIP密码恢复引擎架构解析 【免费下载链接】bkcrack Crack legacy zip encryption with Biham and Kochers known plaintext attack. 项目地址: https://gitcode.com/gh_mirrors/bk/bkcrack 在数据安全领域,传统PKWARE加密算法…...

云服务器部署Hermes Agent(爱马仕龙虾)的详细教程

云服务器部署Hermes Agent(爱马仕龙虾)的详细教程 关键词:Hermes Agent部署、AI Agent部署教程、腾讯云Lighthouse、微信接入AI助手、Hermes Agent安装、AI助手云端运行 最近一直在研究「AI Agent长期运行」的方案。 本地跑 Agent 最大的问…...

电钢琴核心技术与选购全攻略

在这篇文章中,我们将深入探讨电钢琴的核心技术,包括声源系统、键盘触感和音箱设计等方面。这些技术不仅影响着电钢琴的音质与演奏体验,还在很大程度上决定了你在选购时的优先考虑因素。了解这些技术特性可以帮助你在面对众多型号时作出更明智…...

电动汽车BMS光耦隔离技术解析与应用

1. 电动汽车锂离子电池安全管理挑战 在电动汽车的动力系统中,锂离子电池组的安全管理堪称"心脏监护仪"。以雪佛兰Volt为例,其电池包由288个棱柱形锂离子电池组成,系统电压高达386.6V DC。这种高压环境下的电池管理面临三大核心挑战…...

PicoMQTT:ESP8266/ESP32轻量级MQTT库解析与应用

1. PicoMQTT:为ESP8266/ESP32设计的轻量级MQTT库在物联网设备开发中,MQTT协议因其轻量级和高效性成为设备通信的首选方案。传统方案通常需要树莓派或专用网关作为MQTT代理服务器,而PicoMQTT的出现让ESP8266和ESP32这类微控制器也能承担这一角…...

论文查重辅助存证程序,写作过程记录上链,证明原创性,降低查重纠纷。

⚠️ 说明:这是本地模拟区块链思路的演示程序,用于说明“写作过程存证与原创性辅助证明”的技术逻辑,不等同于正式学术认证系统或查重系统。 一、实际应用场景描述 高校或科研机构中,学生/研究者提交论文时常面临: - 查…...

工业级触控面板电脑ACP-1078核心技术解析与应用

1. AAEON ACP-1078工业级触控面板电脑深度解析在制造业和物流行业的数字化转型浪潮中,工业级HMI(人机界面)设备正扮演着越来越关键的角色。AAEON(研扬科技)最新推出的ACP-1078触控面板电脑,凭借其Rockchip …...

别再傻傻分不清了!5分钟搞懂矩阵的Hadamard积和Kronecker积(附Python/Numpy代码示例)

矩阵运算实战指南:5分钟掌握Hadamard积与Kronecker积的核心差异 刚接触机器学习的朋友们,是否曾在论文中看到⊙和⊗符号时一头雾水?这两种看似相似的矩阵运算,实际代表着完全不同的数学概念。理解它们的区别,就像区分螺…...

随机计算与VDC-2n序列在低功耗硬件设计中的应用

1. 随机计算基础与VDC-2n序列特性随机计算(Stochastic Computing, SC)是一种将数值表示为比特流中"1"出现概率的计算范式。与传统二进制计算相比,SC通过概率运算实现乘加操作,仅需简单的逻辑门即可完成复杂运算。这种特性使其在低功耗、高容错…...

Kubernetes技术入门与实践(四):Deployment资源对象与 Pod探针

第一部分:Deployment资源对象的理论基础与架构剖析1.1 为什么需要Deployment在Kubernetes生态中,用户从不直接管理单个Pod——Pod在节点宕机、资源不足、被驱逐时会消失,Kubernetes也不会自动将其重生。因此,Kubernetes引入了“控…...

Bilibili评论数据采集实战:从爬虫工具到数据分析的完整解决方案

Bilibili评论数据采集实战:从爬虫工具到数据分析的完整解决方案 【免费下载链接】BilibiliCommentScraper B站视频评论爬虫 Bilibili完整爬取评论数据,包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数 项目地址: https://gitcode.com/gh_mirr…...

导电胶技术:电子组装中的关键材料与应用

1. 导电胶技术解析:电子组装中的隐形功臣在拆解手机主板时,你是否注意过那些闪着银光的粘接材料?它们不是传统焊料,而是现代电子制造中不可或缺的导电胶。我曾用导电胶修复过一块因焊盘脱落而报废的显卡,这种材料不仅实…...

ComfyUI-Impact-Pack V8:模块化AI图像增强解决方案的终极实战指南

ComfyUI-Impact-Pack V8:模块化AI图像增强解决方案的终极实战指南 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址…...