网易首页 > 网易号 > 正文 申请入驻

Python大模型应用开发实战:基于ChatGPT微调,附代码(文末赠书)

0
分享至

OpenA对GPT-3.5 开放微调 API,允许 AI开发人员通过专门的数据在专门的任务上实现更高的性能。OpenAI声称,最终的定制模型在某些特定任务上可以匹配或超过GPT-4的能力。也就是说,每个企业或个人将拥有自己的专属OpenAI。

OpenAI 的大语言模型 ChatGPT 已经在大量文本上进行了预训练,而微调可以让其更适合特定的应用场景。微调的步骤包括:准备和上传数据;训练新的微调模型;评估结果,并在需要时继续迭代;微调结束后使用模型。

在准备数据阶段,OpenAI对数据集以及内容格式有一定的要求。首先要求数据集为JSONL 格式,数据格式如下:


如果是对话式聊天格式,且预训练模型为 gpt-3.5-turbo、babbage-002 和 davinci-002也可以按照下面的数据格式进行微调。


准备好数据集之后,需要将数据集切分成训练数据集和测试数据集。而每条训练数据的大小也受到基础模型的限制。对于 gpt-3.5-turbo-0125,每个训练样本限制为 16385 个Token;对于 gpt-3.5-turbo-0613,每个训练样本限制为 4096个 Token。超过最大长度限制的部分将被截断。

在进行微调之前,可以先使用数据集格式验证工具对数据集进行检查,以验证数据集中的每个对话是否都符合微调接口所要求的格式;还可以通过一些轻量级分析,提前识别数据集中存在的问题,例如缺少系统/用户消息等,并提供对消息数和Token数的统计分析,用来估算微调成本。

下面将通过使用 Fine-Tuning UI、CLI命令和 API的方式来介绍 OpenAl的微调。

1.使用Fine-Tuning Ul 微调

OpenAl 支持通过 Fine-Tuning UI进行大语言模型的微调。如果要进入 OpenAI 的微调Web 页面,需要打开相应的页面(https://platform.openai.com/finetune),在左侧的导航栏单击"Fine-tuning"即可,如以下图所示。


在 Fine-tuning 页面中,左侧展示可微调的所有任务,右侧展示选中任务的详细信息单击“+Create”按钮就可以创建微调任务,如下图所示。在创建微调任务的页面,完成微调任务的创建需要如下几个步骤:



  • 选择基础大模型:OpenAI提供的基础模型有 babbage-002、davinci-002、gpt-3.5-turbo-0125、gpt-3.5-turbo-0613 和 gpt-3.5-turbo-1106。添加训练数据集:可以上传或者选择一个已经存在的json1文件。添加验证数据集:可以上传或者选择一个已经存在的.jsonl 文件。设置模型后缀:给输出的模型添加一个自定义的后缀。

  • 设置随机种子:随机种子用来控制任务的可重复性。如果未设置种子,则会自动生成一个。

  • 配置超参数:超参数需要设置批大小、学习率和训练周期,默认值都是 auto。

  • 创建微调任务:完成上面的步骤后,单击“Create”即可完成训练任务的创建。

  • 评估微调结果:通过监控微调过程,确定使用模型,还是重新迭代。

  • 使用微调模型:完成微调之后,就可以使用微调模型了。


2.使用CLI 命令微调

OpenAI提供了命令行工具,可以帮助我们快速处理数据集、操作文件、创建微调任务和使用模型等,下面介绍一些常用的命令行工具。

使用命令行工具需要先安装 openai库,代码如下:

pip3 install --upgrade openai

在需要运行的环境(Linux、macOs)中,配置 OpenAl 的 api key,代码如下:

export OPEN_API_KEY="自己的api key"

使用帮助工具查看 tools 和 api 分别支持的相关命令,代码如下:* *

openai tools-h或openai tools --help  openai api -h或openai api --help

从帮助工具的查看结果可以发现,命令行工具支持图像、音频、文件和模型等,具体使用方法见表:


使用 prepare data 进行数据的准备,参数 -f用于指定本地的数据,代码如下:* *

openai tools fine_tunes.prepare_data -f ./tmp/data.txt

准备数据的过程,会对本地数据进行分析和处理,最终生成一个新的JSONL格式的文件,如下图所示。


使用 fles.create 方法将数据上传到 OpenAI服务器,参数-p用于指定文件的用途(purpose),如fine-tune、answers 和search,代码如下:* *

openai api files.create -f ./training_data.jsonl -p fine-tune

创建微调任务,参数 -t用于指定训练数据集,--model用于指定基础模型,代码如下:

openai api fine_tunes.create -t 训练文件ID --model 选择的基础模型

查看所有微调任务及其状态信息,代码如下:

 openai api fine_tunes.list

根据任务ID,查看微调任务的详细信息,代码如下:

  openai api fine_tunes.get -i 微调任务ID

当微调任务结束并完成模型评估后,就可以使用微调后的模型了,代码如下:

 openai api completions.create -m 模型名称 -p 提示词

还可以添加更多参数来控制文本的生成,如最大生成长度、温度和生成数量等,代码如下:* *

 openai api completions.create -m 模型名称-p 提示词 --max-tokens 100 --temperature 0.7 --n 1

通过上述示例可以看出,使用 OpenAI的 CLI命令工具,用户可以很方便地创建微调任务,包括准备和上传数据集文件、创建微调任务、检查任务状态和使用模型等。

3.使用API微调

对于大多数开发者而言,使用 Fime-Tuning Ul和 CLI命令微调仅用于测试。在实际的生产环境中,需要通过编程实现微调。为此,OpenAI提供了相关的 API。先初始化 OpenAI的客户端,配置自己的 api key,代码如下:* *

from openai import OpenAI

api key = "填写自己申请的 OpenAI的 api key" client = OpenAI(api key=api key)

假设已经准备好微调的数据集为 mydata.jsonl文件,将 mydata.json 文件上传到 OpenAI服务器,并指定目的是fine-tune,代码如下:

data_file_path ="mydata.jsonl" client.files.create(file=open(data_file_path, "rb"), purpose="fine-tune")

根据数据集返回的文件ID,基于基础模型 gpt-3.5-turbo 创建一个微调任务,代码如下:

file_id ="file-xxx" client.fine_tuning.jobs.create(training_file=file_id, model="gpt-3.5-turbo", suffix="2024-07-10")

可以对微调任务进行列出、查询和取消等一系列操作,代码如下:

client.fine_tuning.jobs.list(limit=5) fine_tuning_job_id = "ftiob-xxx" client.fine_tuning.jobs.retrieve(fine_tuning_job_id) client.fine_tuning.jobs.cancel(fine_tuning_job_id) client.fine_tuning.jobs.list_events(fine_tuning_job_id=fine_tuning_job_id, limit=5)

微调和评估结束后,就可以使用微调出的模型了,代码如下:

model = "ft:gpt-3.5-turbo:demo:suffix:2024-07-10" completion = client.chat.completions.create(     model=model,     messages=[         {"role": "system", "content": "你是一个虚拟助手。"},         {"role": "assistant", "content": "您好。"},         {"role": "user", "content": "您好。"}     ] )

本节介绍了 3种用于 ChatGPT 微调的方法:Fine-Tuning UI、CLI命令和 API。虽然这三种方法可以满足大部分需求,但它们仅依赖于 ChatGPT。本节内容不仅适用于大多数场景,还可以作为了解和使用 ChatGPT的基础。然而,为了满足更多更复杂的使用场景,接下来我们将探讨一些其他的微调最佳实践。这些实践将帮助你更灵活地利用大语言模型。以实现更出色的性能和更广泛的应用。

注:本文节选自机械工业出版社出版的《Python大模型应用开发:核心技术与项目实战》,略有改动,以纸质书出版为准。

编辑推荐

(1)打通完整Python开发链条:系统梳理大模型应用开发全流程,涵盖分词、词嵌入、向量数据库、提示词工程、模型微调与部署等关键技术,帮助开发者构建成体系的技能框架。

(2)主流工具一网打尽:聚焦Hugging Face、LangChain、RAG等当前最热门的大模型开发框架,讲解其原理与实操方法,配合可运行的代码与实战案例,快速上手、易于应用。

(3)项目实战导向,深度挖掘数字人场景:通过多个数字人电商项目实战,完整展示智能系统构建方式,贴近热门应用场景,增强实战价值与可落地性。

(4)内容循序渐进,初学与进阶开发者友好:全书由浅入深、结构清晰,从基础认知到高级实战,兼顾知识体系构建与动手能力提升,既适合AI开发初学者,也能帮助有经验的工程师补齐短板。

(5)作者技术实力深厚,经验提炼与代码实操双助力:作者倾力总结多年AI架构实战经验,结合真实项目中的痛点问题,提供一线开发技巧与工程化思维,帮助开发者在实践中掌握大模型开发的“术”与“道”。

编辑推荐

(1)体系完整,循序渐进:从零基础认知到核心原理,再到开发、部署与运维,全流程掌握智能体的全栈知识体系。

(2)案例驱动,实操为王:融合GPTs、LangChain、LlamaIndex等热门技术,配套“即插即用”示例代码与真实行业案例,快速落地。

(3)应用广泛,价值突显:覆盖教育、科研、医疗、设计、零售等场景,既能助新手入门,也能为开发者和创业者提供创新思路与商业机会。


今日互动

大模型时代,程序员的职业发展面临哪些转变?

在留言区参与互动,我们将选取3名幸运读者各获得赠书1本(上面两本,2选1),截止时间为2025年10月17日。(参与要求:2025年10月14日之前已关注“Ai学习的章北海”公众号)

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
湖南女子远嫁广东后晒月子餐,75岁奶奶眼泪流下来:吃不惯就回来

湖南女子远嫁广东后晒月子餐,75岁奶奶眼泪流下来:吃不惯就回来

糖逗在娱乐
2025-11-01 15:51:21
好白,好润,好纯!

好白,好润,好纯!

贵圈真乱
2025-11-01 10:27:40
名嘴郭正亮认为:只要沈泊洋在台湾,大陆就拿他没有什么办法

名嘴郭正亮认为:只要沈泊洋在台湾,大陆就拿他没有什么办法

总在茶余后
2025-11-01 00:44:16
惊人阳谋!亚洲电诈教父陈志只是小虾米,这才是最狠的杀猪盘?

惊人阳谋!亚洲电诈教父陈志只是小虾米,这才是最狠的杀猪盘?

热风追逐者
2025-10-26 17:14:12
场上效果太好了!后场新援的到来确实是提升了湖人的整体竞争力?

场上效果太好了!后场新援的到来确实是提升了湖人的整体竞争力?

稻谷与小麦
2025-11-02 00:40:16
徐静雨质疑杨瀚森:发展联盟回来也是当拉拉队长 你为啥暴饮暴食?

徐静雨质疑杨瀚森:发展联盟回来也是当拉拉队长 你为啥暴饮暴食?

狼叔评论
2025-11-01 20:02:04
震惊!日本动画以60亿票房打败《长津湖》,进入全球前100

震惊!日本动画以60亿票房打败《长津湖》,进入全球前100

影视高原说
2025-11-01 11:47:51
美女白色露脐T恤配蓝色瑜伽裤,性感值拉满,简直是行走的 荷尔蒙

美女白色露脐T恤配蓝色瑜伽裤,性感值拉满,简直是行走的 荷尔蒙

小乔古装汉服
2025-09-24 07:20:03
一字之差,从总指挥长到指挥长,我国载人航天发射发生了哪些变化

一字之差,从总指挥长到指挥长,我国载人航天发射发生了哪些变化

Thurman在昆明
2025-11-01 14:44:54
马筱梅肚子大了,汪小菲在北京给玥儿姐弟看学校,终于跟S家和解

马筱梅肚子大了,汪小菲在北京给玥儿姐弟看学校,终于跟S家和解

青史楼兰
2025-10-31 17:37:10
夫妻关系里,“性吸引力”与“责任感”的重要性探讨

夫妻关系里,“性吸引力”与“责任感”的重要性探讨

精彩分享快乐
2025-11-02 00:05:03
不顾央视警告顶风作案,与刘涛传出绯闻的杨烁,究竟是谁给的底气

不顾央视警告顶风作案,与刘涛传出绯闻的杨烁,究竟是谁给的底气

芳芳历史烩
2025-09-24 20:13:19
2-0!大连英博大爆发,18岁小将进赛季首球,3名国产球员包办2球

2-0!大连英博大爆发,18岁小将进赛季首球,3名国产球员包办2球

汪星人哟
2025-11-01 20:25:45
今年牛市为什么还有那么多人亏钱?

今年牛市为什么还有那么多人亏钱?

风风顺
2025-11-02 01:00:03
周末男子带小三去游玩,父亲安慰儿媳:我收拾他,男子回来后傻眼了

周末男子带小三去游玩,父亲安慰儿媳:我收拾他,男子回来后傻眼了

温情邮局
2025-09-08 14:23:26
同房时,男生都有哪些性观念误区?(女生勿入)

同房时,男生都有哪些性观念误区?(女生勿入)

许超医生
2025-10-31 10:08:22
诺维茨基:想到东契奇会很出色,但没想到他能打出如此数据

诺维茨基:想到东契奇会很出色,但没想到他能打出如此数据

雷速体育
2025-11-01 18:32:34
国航悄悄开独家航线,国际民航的风向,变了

国航悄悄开独家航线,国际民航的风向,变了

环球旅讯
2025-11-01 11:23:08
播音女生晒“无欲望脸”,恨自己不争气,没有名校能看上自己

播音女生晒“无欲望脸”,恨自己不争气,没有名校能看上自己

熙熙说教
2025-09-18 20:55:39
存储爆发,千亿龙头净利狂飙近20倍

存储爆发,千亿龙头净利狂飙近20倍

21世纪经济报道
2025-11-01 16:01:05
2025-11-02 02:07:00
机器学习与Python社区 incentive-icons
机器学习与Python社区
机器学习算法与Python
3181文章数 11062关注度
往期回顾 全部

科技要闻

事关安世半导体,商务部最新发声!

头条要闻

上海63岁儿子与94岁父亲一起养老:父亲负责买菜做饭

头条要闻

上海63岁儿子与94岁父亲一起养老:父亲负责买菜做饭

体育要闻

NBA球员,必须吃夜宵

娱乐要闻

王家卫这波录音,撕烂了遮羞布

财经要闻

段永平捐了1500万元茅台股票!本人回应

汽车要闻

换新一口价11.98万 第三代蓝电E5 PLUS开启预售

态度原创

艺术
时尚
旅游
公开课
军事航空

艺术要闻

美貌与艺术的碰撞!9位摄影师,哪一位是你的菜?

伊姐周六热推:电视剧《树影迷宫》;电视剧《锦月令》......

旅游要闻

运河明珠,千年守望:杭州拱宸桥的前世今生与文化密码!

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

卡塔尔:加沙可能陷入“无战无和”局面

无障碍浏览 进入关怀版