开发自己私有chatGPT(五)训练微调openai模型

2023-05-16

微调

了解如何为应用程序自定义模型。

介绍

通过微调,您可以通过提供以下内容从通过 API 提供的模型中获得更多收益:

  1. 比提示设计更高质量的结果
  2. 能够训练比提示所能容纳的更多示例
  3. 由于提示时间较短,可以节省token
  4. 更低的延迟请求

GPT-3 已经对来自开放互联网的大量文本进行了预训练。当给出一个只有几个例子的提示时,它通常可以直观地判断你正在尝试执行什么任务并生成一个合理的完成。这通常被称为“少镜头学习”。

微调通过训练比提示所能容纳的更多的示例来改进少数镜头学习,让您在大量任务上获得更好的结果。对模型进行微调后,无需再在提示中提供示例。这样可以节省成本并实现更低的延迟请求。

概括地说,微调涉及以下步骤:

  1. 准备和上传训练数据
  2. 训练新的微调模型
  3. 使用微调模型

请访问我们的定价页面,详细了解如何对微调的模型训练和使用计费。

哪些模型可以微调?

微调目前仅适用于以下基本型号:davinci  curie  babbage  ada   text-davinci-003。

安装

我们建议使用我们的 OpenAI 命令行界面 (CLI)。要安装它,请运行

pip install --upgrade openai

(以下说明适用于版本 0.9.4 及更高版本。此外,OpenAI CLI 需要 python 3。

通过在 shell 初始化脚本(例如 .bashrc、zshrc 等)中添加以下行或在微调命令之前的命令行中运行它来设置环境变量:OPENAI_API_KEY

准备训练数据

训练数据是你教 GPT-3去说。

您的数据必须是 JSONL 文档,其中每行都是对应于训练示例的一对提示完成。您可以使用我们的 CLI 数据准备工具轻松地将数据转换为此文件格式。

{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
...

CLI 数据准备工具

我们开发了一个工具来验证、提供建议和重新格式化您的数据:

openai tools fine_tunes.prepare_data -f <LOCAL_FILE>

此工具接受不同的格式文件,唯一要求它们包含提示和完成列/键。您可以传递 CSV、TSV、XLSX、JSON 或 JSONL 文件,它会在指导您完成建议的更改过程后,将输出保存到 JSONL 文件中,以便进行微调。

创建微调模型

以下假设你已按照上述说明准备了训练数据。

使用 OpenAI CLI 启动微调作业:

openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m <BASE_MODEL>

BASE_MODEL是基础模型的名称(ada, babbage, curie, davinci)。您可以使用后缀参数自定义你的微调模型的名称。

运行上述命令会执行以下几项操作:

  1. 使用文件 API 上传文件(或使用已上传的文件)
  2. 创建微调作业
  3. 流式传输事件,直到作业完成(这通常需要几分钟,但如果队列中有许多作业或数据集很大,则可能需要数小时)

每个微调作业都从基础模型开始,默认是curie。模型的选择会影响模型的性能和运行微调模型的成本。

开始微调作业后,可能需要一些时间才能完成。你的作业可能排在我们系统上的其他作业后面,训练我们的模型可能需要几分钟或几小时,具体取决于模型和数据集大小。如果事件流因任何原因中断,您可以通过运行以下命令来恢复它:

openai api fine_tunes.follow -i <YOUR_FINE_TUNE_JOB_ID>

作业完成后,它会显示微调模型的名称。

除了创建微调作业之外,您还可以列出现有作业、检索作业状态或取消作业。

# List all created fine-tunes
openai api fine_tunes.list

# Retrieve the state of a fine-tune. The resulting object includes
# job status (which can be one of pending, running, succeeded, or failed)
# and other information
openai api fine_tunes.get -i <YOUR_FINE_TUNE_JOB_ID>

# Cancel a job
openai api fine_tunes.cancel -i <YOUR_FINE_TUNE_JOB_ID>

使用微调模型

OpenAI CLI:

openai api completions.create -m <FINE_TUNED_MODEL> -p <YOUR_PROMPT>

curl

curl https://api.openai.com/v1/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": YOUR_PROMPT, "model": FINE_TUNED_MODEL}'

Python:

import openai
openai.Completion.create(
    model=FINE_TUNED_MODEL,
    prompt=YOUR_PROMPT)

Node.js

const response = await openai.createCompletion({
  model: FINE_TUNED_MODEL
  prompt: YOUR_PROMPT,
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开发自己私有chatGPT(五)训练微调openai模型 的相关文章

  • memmove的算法思想

    1 memmove的用法 C 库函数 void memmove void str1 const void str2 size t n 从 str2 复制 n 个字符到str1 如果目标区域和源区域有重叠的话 memmove 能够保证源串在被
  • 菜菜之路-C语言求阶乘和

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 阶乘是什么 xff1f 二 思想 1 思路12 思路2总结 前言 C语言其实要学好并不简单碰到一道题我们有时根本无从下手
  • 题目:将一个正整数分解质因数。例如:输入90,打印出90=2 * 3 * 3 * 5

    思路1 xff1a 首先先提一个这样的思路 假如这个数是90 xff0c 我们让它被2到90之间的数进行整除 xff0c 如90 2 61 45 0 余数 xff0c 90 3 61 30 我们获取这样的除数 但是有问题 xff0c 90每
  • C语言--求比赛名次问题

    题目内容 xff1a 5位运动员参加了10米台跳水比赛 xff0c 有人让他们预测比赛结果 xff1a A选手说 B第二 xff0c 我第三 B选手说 我第二 xff0c E第四 C选手说 我第一 xff0c D第二 D选手说 C最后 xf
  • 编写程序,输入一个较小的实数deta,利用e=1+1/1(嘿哈)+1/2(嘿哈)+1/3(嘿哈)+⋯+1/n(嘿哈)计算e的近似值,直到最后一项的绝对值小于deta时为止,输出此时e的近似值。

    碰到了一种避开惯性思维的写法想分享出来 由于标题不能打叹号 你品一下哈 include lt stdio h gt include lt math h gt int main int n 61 1 double e 61 1 0 term
  • Linux主板支持多机系统的Mark/Space校验

    Linux主板支持多机系统的Mark Space校验 关键词 xff1a Linux 主板摘要 xff1a 英创Linux主板可以通过RS485总线挂载多个单片机组成多机系统 xff0c 当从机设备比较多 传输数据比较频繁的时候 xff0c
  • 库函数memcpy的实现

    1 先看一下memcpy的声明 从str2所指向的内容的n个字节 复制到str1所指向的内容中 注意这里是n个字节 后面实现该库函数时我会详细解释 size t你们可以查一下它的定义 代表着无符号整型 2 好 来看看我们如何实现它 void
  • linux 抓包tcp

    tcpdump是linux下的网络数据包截获分析工具 在linux的日常网络管理中 xff0c tcpdump的使用频率很高 xff0c 熟练掌握对提高工作效率很有帮助 支持针对网络层 协议 主机 网络或端口的过滤 并提供and or no
  • STM32串口中断接收一帧数据

    STM32串口中断接收一帧数据 IDLE即串口空闲中断 xff0c 串口收到一帧数据后 xff0c 发生的中断 比如说给单片机一次发来1个字节 xff0c 或者一次发来8个字节 xff0c 这些一次发来的数据 xff0c 就称为一帧数据 x
  • shell中各种括号的作用()、(())、[]、[[]]、{}

    一 小括号 xff0c 圆括号 xff08 xff09 1 单小括号 命令组 括号中的命令将会新开一个子shell顺序执行 xff0c 所以括号中的变量不能够被脚本余下的部分使用 括号中多个命令之间用分号隔开 xff0c 最后一个命令可以没
  • 双极性(相)四线步进电机TC1508S(双通道直流马达驱动器)

    实验现象 xff1a 下载程序后 xff0c 步进电机旋转 接线说明 xff1a 具体接线图可见开发攻略对应实验的 实验现象 章节 1 xff0c 单片机 gt 四线双极性步进电机模块 P10 gt IA P11 gt IB P12 gt
  • c语言实现广播(udp协议)

    广播 xff1a 顾名思义可以把自己的数据发送给在特定范围内的所有人 xff1b 我们网络编程中的广播一般是通过特定的广播地址把自己的数据发送给局域网内当前在线的客户端 我们可以使用命令查看我们Linux下当前的广播地址 xff1a ifc
  • C++中的结构体与类

    C 43 43 中继承了C语言中的结构体 xff0c 但同时也在C语言的基础上新增了一个类 class 的概念 xff0c 类可以说是C语言中结构体的升级版 这里主要细讲C 43 43 中的类 1 C 43 43 结构体 2 C 43 43
  • 在VMware的Ubuntu18.04搭建vsftp(上传文件)和apache2(http服务)

    在VMware的Ubuntu18 04下 xff1a 搭建vsftp xff08 本机win上传文件 xff09 xff1a 第一步安装vsftp xff1a 直接安装可能会报错Ubuntu 34 E Unable to locate pa
  • 安装ROS时, rosdep update出错解决办法

    网上查了一下 原因基本指向一个 网速问题 按如下步骤进行操作 步骤1 将电脑连接到手机热点 寄希望可以提高网速 依然出错 出错内容大致如下 reading in sources list data from etc ros rosdep s
  • get请求的参数包含中括号[]时,报错400

    1 问题描述 在正式环境中 xff0c 上传文件 2003年鉴 docx 时 xff0c 报错400 但是 xff0c 只有此文件上传时会报错 xff0c 其他文件是正常的 xff08 后文为了方便描述 xff0c 将问题文件称为a xff
  • GPS模块实验

    一 GPS简介 全球定位系统 Global Positioning System GPS 是一种以空中卫星为基础的高精度无线电导航的定位系统 它在全球任何地方以及近 空间都能够提供准确的地理位置 车行速度及精确的时间信息 GPS主要由三大组
  • Python异常捕捉try except else finally有return时执行顺序探究

    在没有return的情况下 try 尝试执行的代码 except 错误类型1 xff1a 针对错误类型1 xff0c 对应的代码处理 except 错误类型2 针对错误类型2 xff0c 对应的代码处理 except 错误类型3 xff0c
  • Linux curl命令最全详解

    目录 一 最常用的curl命令 1 发送GET请求 2 发送POST请求 3 发送json格式请求 xff1a 二 curl命令语法与curl命令参数详解 1 curl命令语法 2 curl命令参数详解 三 Linux curl命令退出码
  • ubuntu16.04安装NS2出现问题及解决办法

    NS2安装与使用 下载NS2软件包到工作目录 地址http nchc dl sourceforge net sourceforge nsnam ns allinone 2 33 tar gz 解压tar zxf ns allinone 2

随机推荐

  • 阿里评测—空闲时间/公益机会/公益积分

    公益机会需要从开始到结束全程参与才能获得积分 span class token keyword import span java span class token punctuation span io span class token p
  • 求二叉树的结点个数

    求二叉树的结点个数 xff0c 如果根节点为空 xff0c 则返回 0 include lt iostream gt include lt malloc h gt using namespace std static int D 61 0
  • 记录android studio 遇到的错误和解决办法

    1 关于android studio 出现Error Execution failed for task app preDebugAndroidTestBuild 39 的解决办法 https blog csdn net fighting
  • 与WebRTC实时通信

    与WebRTC实时通信 一 介绍 WebRTC是一个开源项目 xff0c 可以在Web和本机应用程序中实现音频 xff0c 视频和数据的实时通信 WebRTC有几个JavaScript API xff1a getUserMedia xff1
  • webRTC Android与Web 视频通信

    对于视频聊天 xff0c 首先需要访问用户的音频和视频 在web上 xff0c 有getUserMedia API 调用此API xff0c 它会为您提供MediaStream对象 xff0c 用于来自摄像头和麦克风的音频和视频 下面是代码
  • Android studio安装的痛苦历程

    安装需要IDE和SDK xff0c 安装位置一致 xff0c 我是D Android AndroidStudio 目录下as和sdk 我在第一次装AndroidStudio 创建第一个项目时 在没有创建成功的时候就取消了 然后再次导入别人的
  • CentOS7 无法上网问题分析

    主机现象 xff0c IP及Mac地址都配置完后 xff0c 却ping不通baidu com xff0c 只能ping通局域网 xff0c 一直出现 xff1a ping unknown host baidu com 查看DNS服务器 网
  • 再见!Postman

    点击上方 码农突围 xff0c 马上关注 这里是码农充电第一站 xff0c 回复 666 xff0c 获取一份专属大礼包 真爱 xff0c 请设置 星标 或点个 在看 作者 xff1a 陈凯玲 原文链接 xff1a http www kai
  • 常用c库及其简单介绍

    C标准库 lt assert h gt 可用于验证程序做出的假设 xff0c 并在假设为假时输出诊断消息 lt ctype h gt 可用于测试和映射字符 如数字 xff0c 十六进制数字 xff0c 小写字母 xff0c 大写字母 xff
  • ROS 学习篇(六)发布imu和gps消息

    一 创建工作空间 mkdir p imu gps src span class hljs comment 创建工作空间 span catkin make span class hljs comment 编译 span span class
  • ubuntu下Terminator终端的使用及配置

    Terminator终端最大的优点 xff1a 可以在同一个窗口中启动多个终端 安装 xff1a sudo add span class hljs attribute apt span span class hljs attribute r
  • ROS学习篇(七)rostopic消息记录、回放、转.txt

    一 通过bag文件记录话题消息 当发布话题的节点运行后 xff0c 可以通过rostopic list 列出当前运行的话题 xff0c 然后记录 xff1a mkdir bagfile cd bagfile rosbag record a
  • ROS 学习篇(八)机器人的导航功能--navigation

    ROS 学习篇 xff08 八 xff09 机器人的导航功能 xff0d xff0d navigation 1 概述 ROS的二维导航功能包 xff0c 简单来说 xff0c 就是根据输入的里程计等传感器的信息流和机器人的全局位置 xff0
  • ROS学习篇--ROS学习积累

    只编译某个包 catkin make DCATKIN WHITELIST PACKAGES 61 34 package1 package2 34 恢复编译所有 catkin make DCATKIN WHITELIST PACKAGES 6
  • 一个服务端同学的Vue框架入门及实践

    做为服务端同学 xff0c 接触前端代码较少 xff0c 刚毕业的时候用过 jQuery 43 Bootstrap2 3 xff0c 当时的感觉就是 xff0c 容易上手 xff0c 学习门槛相对较低 xff0c 另外就是有一个非常成熟的
  • [linux] C语言Linux系统编程-TCP通信的11种状态

    三次握手 由client主动发出SYN请求 此时client处于SYN SENT状态 第一次握手 当server收到之后会由LISTEN转变为SYN REVD状态 并回复client client收到应答后处于ESTABLISHED状态 这
  • [Git]解决Please commit your changes or stash them before you merge.

    当本地分支和远程修改了同一个文件代码 xff0c pull远程分支的代码的时候会出现文件冲突 出现这个错误 Please commit your changes or stash them before you merge 可以先将当前的内
  • [Go] 解决空接口 interface{} cannot use (type []string) as type []interface {}

    空接口 interface 可以存储任何类型的数据 但是在和slice以及map配合时 要注意 interface 或者 map string interface 可能会犯这样的错误 cannot use type string as ty
  • [开发工具] 解决postman报错:Error: Maximum response size reached

    当使用postman进行接口测试的时候 遇到了这个错误 xff1a Error Maximum response size reached 这是因为返回的信息太大了 xff0c 超过了postman设置 xff0c 修改一下就可以了 改的大
  • 开发自己私有chatGPT(五)训练微调openai模型

    微调 了解如何为应用程序自定义模型 介绍 通过微调 xff0c 您可以通过提供以下内容从通过 API 提供的模型中获得更多收益 xff1a 比提示设计更高质量的结果能够训练比提示所能容纳的更多示例由于提示时间较短 xff0c 可以节省tok