Lamini:大语言模型精调框架

news2024/11/25 11:35:31

Lamini:大语言模型精调框架

精调是大型语言模型 (LLM) 开发生命周期中最困难的部分之一。如果我们谈论的是诸如人类反馈强化学习 (RLHF) 之类的技术,那么这个过程尤其具有挑战性,因为这需要特别复杂的工作流程。 最近,我发现诞生了很多新的开源项目,这些项目试图简化 LLM 中的精调过程。其中最受关注的当属 Lamini。

在这里插入图片描述

文章目录

    • 什么是Lamini
    • 使用Lamini
    • 数据生成器
    • 总结

什么是Lamini

Lamini 是一个强大的工具,它允许所有背景的开发人员使用 Lamini 库中的几行代码来训练高性能的 LLM,包括与 ChatGPT 一样好的模型。Lamini 包含的优化超出了开发人员目前可用的范围,从复杂的 RLHF 到简单的错误消减,一应俱全。Lamini还可以仅用一行代码轻松比较多个基础模型,无论是来自 OpenAI 的闭源模型还是 HuggingFace 上的开源模型。

Lamini 包含如下关键能力:

  • Lamini 库包括优化过的提示调优和输入输出,可以直接在 Lamini 的 playground 上试用。
  • 只需几行代码,就可以通过访问先进的 Lamini 库进行微调和 RLHF。
  • 托管数据生成器支持构建块,用于创建训练指令遵循 LLM 所需的数据。
  • 只需几行代码即可使用指令跟随 LLM。

使用 Lamini 的过程可以总结为如下工作流程。

在这里插入图片描述

  1. 轻松调优模型:Lamini 库提供API,让开发者可以轻松调优模型,包括ChatGPT 和其他开源模型。 该库的 API 支持跨不同模型的快速调优,允许开发人员使用一行代码在 OpenAI 和开源模型之间切换。Lamini 库对提示进行了优化,让开发人员能够利用不同的模型,而不必担心如何为每个模型格式化提示。
  2. 构建大型输入输出对数据集:开发大型输入输出对数据集对于训练模型至关重要。高质量数据集可帮助模型学习如何遵循指令或以 JSON 格式进行响应。 Lamini 发布了一个存储库,该存储库使用 Lamini 库从 100 个数据样本生成 5 万个数据样本,供 Lamini 引擎使用。这个存储库包括一个开源的 5万 条数据的数据集。如何生成数据集下文有详细介绍。
  3. 在大型数据集上精调模型:除了数据生成器,Lamini 还发布了一个 LLM,它使用 Lamini 库对生成的数据进行微调。开发人员可以通过访问此功能以编程方式微调他们的模型。或者,调用 OpenAI 的微调 API 进行微调。
  4. 执行 RLHF:Lamini 让开发人员可以轻松地在微调模型上运行 RLHF,而无需庞大的机器学习和人工标记专家团队。
  5. 将模型部署到云端:开发人员对模型进行微调后,将其部署到云端就很简单了。开发人员可以点击其产品或功能中的 API 来部署他们的模型。

使用Lamini

Lamini 为微调模型提供了一个简单的编程模型,如下代码所示:

class Animal(Type):
    name: str = Context("name of the animal")
    n_legs: int = Context("number of legs that animal has")

class Speed(Type):
    speed: float = Context("how fast something can run")

llama_animal = Animal(name="Larry", n_legs=4)
centipede_animal = Animal(name="Cici", n_legs=100)

my_data = [llama_animal, centipede_animal]

dog_animal = Animal(name="Nacho", n_legs=4)
dog_speed = Story(story="There once was a cute doggo named Nacho. She was a golden retriever who liked to run. All four of her paws were adorable.")

my_data.append([dog_animal, dog_speed])

Lamini 另一个有趣的功能是支持批处理,它可以将微调作业作为批处理来执行。

job = llm.submit_job(self, input, output_type, *args, **kwargs)

此外,Lamini 允许为输出创建添加变体。

ad_copy = llm(input=aspects, output_type=AdCopy, random=True)

或者删除重复数据。

ad_copies = llm.sample(input=aspects, output_type=AdCopy, n=5)

数据生成器

Lamini 框架的主要组件之一是 Lamini 数据生成器,它是一个强大的 LLM 管道,旨在使用一组 100 多条指令的响应数据集来生成超过 5 万对新指令数据,从而提高 LLM 的性能。

img

该管道利用 Lamini 库调用不同但相似的 LLM 生成不同的指令和响应对,来训练您的 LLM,使其更好地遵循指令。

Lamini 使用名为 Lamini OpenLamini Instruct 的开源 LLM 为生成管道提供默认设置。截至当前版本,该框架正在使用 EleutherAI 的 Pythia for Lamini Open 生成更多指令,并使用 Databricks 的 Dolly for Lamini Instruct 生成这些指令的对应响应。

总结

使用 Lamini 切换 LLM 只需几行代码即可完成。

Lamini 致力于解决 LLM 驱动开发中最困难的挑战之一。该框架提供了一个简单且一致的编程模型来抽象跨不同 LLM 的微调过程。我们很可能会在不久的将来看到 Lamini 被纳入不同的 LLM 框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/559618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

11 长效保证机制:伦理道德风险外溢临界模型

AI系统上线后,随着不断的投入使用AI系统会自我学习和自我演进,这也导致了AI系统的伦理道德性并不是一次性的验证,而是需要按照一定的周期不断的验证,通过按周期巡检的方式持续的评估AI系统的伦理道德风险的外溢可能性。如何建立一…

css、js(vue)进行textarea自适应高度(超详细说明)

文章目录 需求——如下图一、纯css 的自适应高度(有问题,不推荐)1.css代码2. html代码3. 代码截图说明4. 效果和会出现的问题 二、js 的自适应高度0.思路1.代码1. css代码2. html代码3. js代码 2.代码说明3.注意点导致的问题(0&am…

spark-sql写入对象存储路径不存在问题(异常路径自动消失)

一、问题分析 1, 环境 spark3.2 hadoop3.2.2 2, 问题现象 insert overwrite table到hive表时,出现路径不存在的报错,导致任务失败。 当表的路径在hdfs上时,没有问题。 表的路径在对象存储上时会有问题。 insert overwrit…

python如何连接mysql数据库

python链接mysql数据库要用到pymysql模块中的connect ,connect函数是pymysql模块中 用于连接MySQL数据库的一个函数。 所以连接mysql之前需要先导入pymysql模块。 第一步,mysql模块下载 方法1(使用pip命令安装): 因…

测试岗位是巨坑,7年测试告诉你千万别入行.....

每次都有人问我软件测试的前景是什么样的,每年也会有人很多人纷纷涌入测试的岗位上,希望自己能够进入阿里、华为等大厂 但是测试岗位真的那么吃香吗?今天我结合从零基础小白到测试开发的成长经历,来说下这个行业的发展前景&#…

微信小程序仿网易音乐播放器项目

一、项目展示 主页: 播放页: 搜索页: 排行榜页: 小控件: 二、项目结构 三、项目功能点 后端接口,使用node写的,使用了网易云音乐API: 封装的api文件 //env是基础地址js文件 im…

05 JDBC基础

什么是持久化 将内存中的数据永久保存在磁盘中,方便以后使用 JDBC是什么 java数据库连接 用于执行sql语句的java API java官方提供接口,各大厂商提供实现类,程序员使用实现类的jar包 JDBC的开发流程 添加包: mysql-connector-java-5.1.48.jar lombok.jar 口诀:贾连欲…

Linux文件内管理命令

目录 Linux文件内管理命令 创建文件 目录 普通文件 链接文件 删除文件 删除文件 删除目录 查看文件 目录 普通文件 编辑普通文件 在命令行进行文本内容处理 查找内容 复制文件 移动文件 命令详解 mkdir 作用 语法格式 touch 作用 语法格式 选项 ​编辑…

STM32——SDIO的学习(驱动SD卡)(理论篇)

目录 一、SD卡简介 1.1历史 1.2 tf卡和SD卡的区别 1.3 mmc,emmc,nand,flash的关系 1.4 SD卡的规格等级 1.4.1按容量分 1.4.2 class等级 1.4.3 UHS总线模式 1.4.4 UHS速度等级 1.4.5 VSC视频速度等级 二、SD卡的内部结构 三、SDIO…

MapReduce【Shuffle-Combiner】

概述 Conbiner在MapReduce的Shuffle阶段起作用,它负责局部数据的聚合,我们可以看到,对于大数据量,如果没有Combiner,将会在磁盘上写入多个文件等待ReduceTask来拉取,但是如果有Combiner组件,我们…

什么是Reactive服务架构

介绍: 在java web开发领域,区别于传统的的同步服务架构(底层实现基于同步阻塞IO模型),异步服务这个“新词”(bushi)在不断被提及和重视,不少公司的研发部门也开始在尝试对自己的业务…

【JMM】并发编程Bug的源头——可见性/有序性/原子性问题

本文目录( ̄∇ ̄)/ 可见性问题 有序性问题 为什么会进行指令重排序/乱序执行? 乱序存在的条件 this对象的溢出 原子性问题 如何保证原子性? synchronized 原理简介 加锁的方式 那么问题来了,JVM是如何知道当前…

2022年中国标准创新贡献奖获奖名单公示,海尔再添两项标准创新奖

01 2022年中国标准创新贡献奖 获奖名单公示 海尔再添两项标准创新奖 近日,2022年中国标准创新贡献奖获奖名单公示。其中,海尔GB/T 28219—2018《智能家用电器通用技术要求》、T/CAS 311.1—2018《电器电子产品绿色供应链管理第1部分:通则》…

前端实现拖拽效果改变元素顺序

文章目录 前言一、实现效果二、拖拽API1.代码2.遇见问题 总结 前言 在一次工作中,前端要实现通过鼠标实现拖拽改变顺序的功能,之前没有接触过拖拽这一块所以刚开始一筹莫展,幸运的是在查阅学习中实现了前端拖拽功能。 一、实现效果 二、拖拽…

月薪从10k到30k,一个普通测试工程师的3年涨薪之路...

“要涨薪,先跳槽”各个行业都存在这一共识,但是任何行业也都没有像程序员这样更为适用且好用的了。 前不久,就有网友分享了自己作为一个普通的自动化测试工程师的三年真实涨薪经历。但看看这个三年涨薪之路,好像并不普通啊&#…

2022年深圳杯数学建模D题复杂水平井三维轨道设计解题全过程文档及程序

2022年深圳杯数学建模 D题 复杂水平井三维轨道设计 原题再现: 在油气田开采过程中,井眼轨迹直接影响着整个钻井整体效率。对于复杂水平井,较差的井眼轨迹很可能会造成卡钻或施加钻压困难等重大事故的发生。因而,在施工之前分析影…

python爬虫-获取某某在线翻译的查询结果,爬取json文件并解析

文章目录 从基础步骤下手正确获取response数据关于url获取方式关于post方法的参数关于payload参数填入运行效果解析json数据到文件中完整代码运行结果 从基础步骤下手 # 指定url # 发出请求,get或post # 获取响应 # 把目标文件转存为字符串形式 # 持久性保存正确获…

从零开始的机械臂yolov5抓取gazebo仿真(六)

项目构造简述 前段时间博主装20.04系统不小心把efi启动给删了,导致18.04系统崩了,所以只能简单讲一下这个项目的设计思路以及以grasp.py代码为例进行简单解析。 yolov5_ros功能包 首先,说一下yolov5_ros功能包,该功能包的作用就…

使用 CameraX 在 Jetpack Compose 中构建相机 Android 应用程序

使用 CameraX 在 Jetpack Compose 中构建相机 Android 应用程序 CameraX 是一个 Jetpack 库,旨在帮助简化相机应用程序的开发。 [camerax官方文档] https://developer.android.com/training/camerax CameraX的几个用例: Image CaptureVideo CapturePrev…

【多线程】什么是线程死锁?形成条件是什么?如何避免?

文章目录 一、什么是线程死锁二、线程死锁三、形成死锁的四个必要条件是什么四、如何避免线程死锁 一、什么是线程死锁 死锁是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若…