首页 > 其他分享 >ORPO偏好优化:性能和DPO一样好并且更简单的对齐方法

ORPO偏好优化:性能和DPO一样好并且更简单的对齐方法

时间:2024-04-16 10:12:34浏览次数:19  
标签:模型 ORPO RLHF 偏好 LLM DPO 对齐

现在有许多方法可以使大型语言模型(LLM)与人类偏好保持一致。以人类反馈为基础的强化学习(RLHF)是最早的方法之一,并促成了ChatGPT的诞生,但RLHF的成本非常高。与RLHF相比,DPO、IPO和KTO的成本明显更低,因为它们不需要奖励模型。

虽然DPO和IPO的成本较低,但它们仍需训练两个不同的模型。首先是监督微调(SFT)步骤,即训练模型按指令回答问题,然后使用SFT模型作为初始化和参考,以使模型与人类偏好一致。

ORPO是另一种新的LLM对齐方法,这种方法甚至不需要SFT模型。通过ORPO,LLM可以同时学习回答指令和满足人类偏好。

在本文中,我将解释ORPO并介绍其相关的内容,最后将展示如何使用消费级硬件将Mistral 7B转换为聊天模型。

 

https://avoid.overfit.cn/post/100de526ac3c4ba2b01f591ba6d0e435

标签:模型,ORPO,RLHF,偏好,LLM,DPO,对齐
From: https://www.cnblogs.com/deephub/p/18137527

相关文章

  • uniapp小程序页面实现元素与胶囊进行居中对齐
    无论是否为uni,关键在于获取胶囊中点的位置,如果是原生小程序根据小程序文档获取,其余逻辑处理是一致的代码语法都只是技术选择,重点是逻辑处理,对于技术的运用,代码技术好比是积木,好的程序就是好的组合代码,利用技术的特点进行组合,1.效果实现代码fixedTop(){lets......
  • 小端对齐+大端对齐进阶版本V3.0
    当涉及到多字节的数据类型(如uint16_t、uint32_t等)时,字节在内存中的存储顺序会影响到数据的解释方式。这个存储顺序可以分为两种:大端对齐(BigEndian)和小端对齐(LittleEndian)。大端对齐(BigEndian):在大端对齐中,数据的高字节(MostSignificantByte,MSB)存储在内存的低地址,而数据的低......
  • 解密prompt系列27. LLM对齐经验之如何降低通用能力损失
    前面我们已经聊过众多指令微调的方案,这一章我们重点讨论下如何注入某一类任务或能力的同时,尽可能不损失模型原有的通用指令理解能力。因为在下游或垂直领域应用中,我们设计的推理任务风格或形式,往往很难通过prompt来稳定实现。这种情况下就会依赖微调来注入稳定的推理风格,但同时在......
  • 结构体中的内存对齐
    结构体中的内存对齐内存对齐规则在C语言中,结构体的内存布局并不是简单地将成员依次排列在内存中,而是遵循一定的内存对齐规则。这些规则确保了数据结构在内存中存储的方式既高效又符合硬件平台的限制。问题提出structS1{charc1;inti;charc2;};structS2{int......
  • ThreadPoolExecutor线程池解析
    ThreadPoolExecutor线程池解析一、ThreadPoolExecutor常见参数jdk中Executors提供了几种常用的线程池,底层都是ThreadPoolExecutor。publicThreadPoolExecutor(intcorePoolSize,//核心线程数intmaximumPoolSize,//最大线程数......
  • crictl images报错runtime connect using default endpoints: [unix:///var/run/docke
    想试试containerd运行k8s,结果报错还在找dockershim,网上找了解决方法crictl依次查找容器运行时,当查找第一个unix:///var/run/dockershim.sock没有找到,所以报错了,需要你手动指定当前kubernetes的容器运行时,使用什么,例如:kubernetes1.24+之后,dockershim已经变成了cri-docker,所以......
  • 将一个结构体里面的数据转为 小端对齐的二进制流
    现在有一个C++的结构体,需要把它转为二进制流,而且是小端对齐的。我们还需要将一个小端对齐的二进制流,转为对应的结构体。appendLittleEndianparseLittleEndian这2个方法是chatgpt提供给我的,功能能准确实现。代码也比较简洁。 #include<iostream>#include<vector>#inc......
  • JUC:ThreadPoolExecutor线程池的使用方法
    文章目录ThreadPoolExecutor线程池状态构造方法Executors工厂方法newFixedThreadPoolnewCachedThreadPoolnewSingleThreadExecutor提交任务方法关闭任务方法ThreadPoolExecutor线程池状态线程池用高三位表示状态,第一位为符号位。TERMINATED>TIDYING>STOP>......
  • js context.fillText 征对不同长度右边对齐的解决办法
    在HTML5Canvas中,要实现文本右对齐并且与不同长度文本互不重叠,可以通过测量文本宽度,并基于文本宽度设置x坐标来实现。以下是一个简单的JavaScript函数,用于在Canvas中右对齐并且不重叠地绘制文本:functiondrawRightAlignedText(context,text,x,y){//测量文本宽度......
  • flask 装饰器 AssertionError: View function mapping is overwriting an existing en
    1问题描述写了一个登陆认证装饰器,部分试图,只有用户登陆才能访问deflogin_wrapper(func):definner(*args,**kwargs):"""判断是否登陆若是进入视图函数否则重定向到登陆页面"""if......