港科大开源LMFlow!3090单卡5小时,每个人都能训练专属ChatGPT

ca6a79435e21fd4719207fb1f5c4bd38.gif

©作者 | 机器之心编辑部

来源 | 机器之心

拥有自己的 AI 大模型!开源项目 LMFlow 支持上千种模型,提供全流程高效训练方案。

2022 年 11 月 30 日,OpenAI 推出 ChatGPT,令人没想到的是,这个对话模型在 AI 圈掀起一股又一股讨论狂潮。英伟达 CEO 黄仁勋将其比喻为人工智能领域的 iPhone 时刻;比尔・盖茨盛赞 ChatGPT 在人工智能历史上的意义不亚于 PC 或互联网的诞生。

尽管 ChatGPT 在各个方面表现惊人,但其高昂的训练成本以及海量的训练数据等,都给想要进入该领域的人设下层层关卡。就拿算力来说,ChatGPT 经由微软专门建设的 AI 计算系统训练,总算力消耗约为 3640 PF-days。而在推理阶段,以今年 1 月份独立访客平均数 1300 万计算,ChatGPT 对应的芯片需求为 3 万多块英伟达 A100 GPU,初始投入成本约为 8 亿美元,每天光是花掉的电费就要 5 万美元。就连科技巨头微软在帮 OpenAI 打造 ChatGPT 时都因为算力不足而被迫暂停了一些其他项目。

科技大厂尚且如此,对于普通人来说更是难上加难。

因此在 ChatGPT 问世的这段时间里,许多人开始对科研的方向和未来感到迷茫:如何能够参与通用人工智能研究,在这个新的时代找到自己的优势?很多人都希望有能力训练一个只属于自己的 AI 大模型,但尽管国内外已有许多类 GPT 产品,对于普通的学者、研究者和程序员来说,这样的产品仍不足以适应每一个人的需求。

一方面,从头预训练的成本是我们普通人和小规模公司所无法承受的。另一方面,基于 API 的黑盒封装不是完美的解决方案。虽然我们可以很容易地基于 API 开发自己的应用,但使用效果和自定义程度往往不尽人意。因此,从头预训练和基于 API 开发都不是最佳方式。

接下来我们为大家介绍的开源项目 LMFlow,不需要从头预训练,只需要以 finetune 作为切入点即可。

 ad77873aa786516d158a33b8f3e83fe3.png

项目地址:

https://github.com/OptimalScale/LMFlow

29ce62605fe533a713cab784667b57c7.png

项目介绍

该项目由香港科技大学统计和机器学习实验室团队发起,致力于建立一个全开放的大模型研究平台,支持有限机器资源下的各类实验,并且在平台上提升现有的数据利用方式和优化算法效率,让平台发展成一个比之前方法更高效的大模型训练系统。

此外,该项目的最终目的是帮助每个人都可以用尽量少的资源来训练一个专有领域的、个性化的大模型,以此来推进大模型的研究和应用落地。

在 LMFlow 的加持下,即便是有限的计算资源,也能让使用者针对专有领域支持个性化训练。基于 70 亿参数的 LLaMA,只需 1 张 3090、耗时 5 个小时,就可以训练一个专属于自己的个性化 GPT,并完成网页端部署。开源库作者们已经利用这个框架单机训练 330 亿参数的 LLaMA 中文版,并开源了模型权重用于学术研究。训练得到的模型权重可以通过该网页端即刻体验问答服务 (lmflow.com)。

lmflow.com 地址:

http://lmflow.com/ 

使用 LMFlow,你也有能力训练一个只属于自己的模型!每个人可以根据自己的资源合理选择训练的模型,用于问答、陪伴、写作、翻译、专家领域咨询等各种任务。模型和数据量越大,训练时间越长,效果越佳。目前该研究也在训练更大参数量(650 亿)和更大数据量的中文版模型,效果还会持续提升。

其实,很早之前 LMFlow 的作者们就已认识到 finetune 的重要性。InstructGPT [1] 中就涵盖了 supervised fine-tuning 和 alignment(比如 RLHF)这两种 finetune 技术。然而,目前的开源代码库要么聚焦于某个模型(比如 LLaMA [2]),要么聚焦于某种特定的技术(比如 instruction tuning)。还没有一个库能够支持在海量模型上快速应用多种 finetune 技术。

现在,LMFlow 迈出了这个方向的第一步。通常,ChatGPT 的训练包括至少以下几个步骤:pretrain → supervised tuning → instruction tuning → alignment。LMFlow 库利用现有的开源大模型,支持这套流程的所有环节和灵活组合。这意味着 LMFlow 库为我们建立了一条通向完整训练链的桥梁。

a2c08098480d7a67dda3e6c91c536041.png

接下来我们来了解一下实际使用 LMFlow 的体验。 

5451ddca7865d7ac5c74b1dad2d8337c.png

使用体验

据作者介绍,LMFlow 拥有四大特性:可扩展、轻量级、定制化和完全开源。基于此,用户可以很快地训练自己的模型并继续进行二次迭代。这些模型不仅限于最近流行的 LLaMA,也包括 GPT-2、Galactica 等模型。

6486f087a08c5a363da676a9730b6a6a.png

前面我们已经提到:基于该开源库,用户只需使用单卡 3090,就能对 LLaMA-7b 模型进行微调,用时 5 个小时训练得到一个能够流畅对话的问答模型。进一步,如果使用更多资源对更大的 LLaMA-33b 模型进行微调,即可大大提升回答的质量! 

1cf72079a3d25c0f67a128fb19cfb90c.png

不仅如此,在特定的专家领域(以医疗为例),只需微调 6 个 A100 * 天,就能够获得和 ChatGPT 相当甚至更好的效果。值得注意的是,ChatGPT 则具有 1750 亿的参数量,而这里性能相当的最小模型规模只有不到二十分之一,大大节约计算资源。

176d45c4ea5693bbcce4c7e227cb67a6.png

接下来是真正的上手实验。使用 conda 安装必要的依赖后,即可上手体验。

git clone https://github.com/OptimalScale/LMFlow.git
cd LMFlow
conda create -n lmflow python=3.9 -y
conda activate lmflow
conda install mpi4py
pip install -e .

安装和准备数据集的过程非常顺利,如此便捷是因为作者们贴心地提供了一键下载数据集的方式。只需要运行一个 bash 脚本就能下载所需的数据集,非常方便!

cd data
bash download.sh all
cd -

准备好了数据集之后,接下来就是模型训练。训练过程也大大简化,普通用户只需要执行一次 bash 脚本,即可轻松完成(非常适合小白入坑)。作者们还开放了训练好的模型下载,如果你不想自己训练模型,可以下载作者提供的 checkpoint 并进行推理。

cd output_models
bash download.sh medical_ckpt
cd -

在此基础上,作者们还提供了基于 huggingface 模型或本地 checkpoint 的问答机器人脚本。一键运行即可与你训练的模型开始对话:

9054accbea8f9a110625af3eba876340.jpeg

如果在使用过程中遇到任何问题,欢迎通过 github issue 或 github 主页的微信群联系作者团队。

在当下大家都纷纷投入到预训练大模型的竞赛中时,LMFlow 提供了一个很好的启示:大多数普通玩家没有预训练大模型的资源,但仍旧可以参与到这场使用和研究大模型的浪潮中来。正如他们的口号所说:「让每个人都能训得起大模型(Large Language Model for All)。」

outside_default.png

参考文献

outside_default.png

[1] Ouyang, Long, et al. "Training language models to follow instructions with human feedback." Advances in Neural Information Processing Systems 35 (2022): 27730-27744.

[2]  Touvron, Hugo, et al. "Llama: Open and efficient foundation language models." arXiv preprint arXiv:2302.13971 (2023).

更多阅读

e67a5880a2dcb3d692955ea8f567dbfa.png

4edae12e7514f6cac4aec46f4e9f6be1.png

a55545f43015623bf19268757ebd8a14.png

99634c3cbfc2691b75f50566d4daf6f4.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

c478d3327a6ea3c5be6dc8f418868e54.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

bea0ac288756792abe53a1fe4e217597.jpeg

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3090单卡5小时,每个人都能训练专属ChatGPT,港科大开源LMFlow

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 代码地址:https://github.com/jameelhassan/PoseEstimation 计算机视觉研究院专栏 作者:Edison_G 拥有自己的 AI 大模型&…

只需单卡5小时,每个人都能训练专属ChatGPT,LMFlow 来啦!

来源:机器之心 2022 年 11 月 30 日,OpenAI 推出 ChatGPT,令人没想到的是,这个对话模型在 AI 圈掀起一股又一股讨论狂潮。英伟达 CEO 黄仁勋将其比喻为人工智能领域的 iPhone 时刻;比尔・盖茨盛赞 ChatGPT 在人工智能历…

ChatGPT在意大利被禁用!

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>【计算机视觉】微信技术交流群 转载自:机器之心 | 编辑:泽南 意大利的行动开了一个先例。 ChatGPT 最近陷入了有关安全问题的争议。 在意大利政府数据…

ChatGPT会被禁止吗?为什么?

由于ChatGPT本身的技术特点和不足,根据最近新出炉的管理办法,chatgpt差不多已经是不合规的了。第四条 提供生成式人工智能产品或服务应当遵守法律法规的要求,尊重社会公德、公序良俗,符合以下要求:(一&…

登录ChatGPT时提示Sorry, you have been blocked(对不起,您已被阻止)

问题描述 今天想使用ChatGPT,结果突然来了这么个问题,就问你吓不吓人???我以为我的账号被封了! 原因分析 内容过滤:某些平台或网站可能使用内容过滤系统,该系统可能将AI语言模型视…

chatGPT衣食住行10种场景系列教程(01)chatGPT热点事件+开发利器

导读 时隔5个多月,chatGPT可谓是一日千里,越演越火,携带着AIGC行业一起飞了起来,那么在短短5个月当中有那些值得我们关注的事件?有那些好玩的场景?以及有那些chatGPT好用的工具?本文都将一一告…

日常自用干货网站分享(含gpt相关)

日常自用干货网站分享 图片,视频,音乐素材Word,Pdf等格式转换压缩PPT,Word,Excel模板文案,设计,创意gpt相关 小伙伴们下午好,作为一名程序员,相信大家平时在工作中不仅仅只有编码,一切其他的文档编写,格式转换或ppt讲解方案等等都…

搭建域名转发实现gpt3.5的请求

1.注册openai账号,需要海外手机,网上都有不做过多解释 2.https://www.namesilo.com/ 购买个廉价域名用于转发 3.https://dash.cloudflare.com/ 搭建转发配置,快速编辑并部署,##代码在下面直接粘就行 const TELEGRAPH_URL https…

深度学习神经网络学习笔记-多模态方向-04-Video Description: A Survey of Methods, Datasets and Evaluation Metrics

摘要 视频描述是描述给定视频内容的自然语言句子的自动生成。它在人机交互、帮助视障人士和视频字幕等方面都有应用。过去几年,由于深度学习在计算机视觉和自然语言处理方面取得了前所未有的成功,这一领域的研究激增。文献中已经提出了许多方法、数据集…

苹果起诉微软侵犯版权 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 3 月 17 日,在 1958 年的今天,我国第一台黑白电视机诞生。当时,我国电视机研制技术与日本基本处在同一起跑线,是…

知识类问答数据集资源对外开放:百万级百度知道、社区问答及六大领域级小规模语料概述

随着chatgpt的火热,中文知识类问答数据集由收到诸多关注,其作为高质量的QA数据,可以用于SFT阶段以及pretrain预训练阶段。 本文主要介绍目前开源可下载的两个较大规模的知识类数据集,包括147万百度知道知识类数据集、425万社区问…

怎样一元钱部署自己的AI网站

前段时间我开发了一个简洁的AI问答网站,好多朋友感兴趣,因此我将网站代码在github上开源,并编写此教程,帮助大家快速部署自己的AI网站,会编程的朋友们也可在此基础上定制开发。 前提条件:有自己的ChatGPT账…

NLP(五十六)LangChain入门

LangChain简介 背景 由于ChatGPT的发行,大模型(Large Language Model, LLM)已经变得非常流行了。也许你可能没有足够的资金和计算资源从头开始训练大模型,但你仍然可以使用大模型来做一些比较酷的事情,比如&#xff1…

大致聊聊ChatGPT的底层原理,实现方法

文目录 深度学习基础ChatGPT的本质ChatGPT原理详解 一、深度学习基础 — 深度学习是什么?如何理解神经网络结构? 关于生物神经网络结构如下: 神经网络介绍 人工神经网络( Artificial Neural Network, 简写为ANN)也…

互发短信之SmsManager

短信管理器 : SmsManager 1. 在 Android 2.0 以前 应该使用 android.telephony.gsm.SmsManager 之后应该用 android.telephony.SmsManager; 2. 获取系统默认的短信管理器 SmsManager smsManager = SmsManager.getDefault(); 3. 按照每条短信最大字数来拆分短信 List<S…

手机号短信验证码接口

1.1 注册账号 https://www.yuntongxun.com/user/login 1.2 登录即可看到开发者账号信息 1.3 添加测试账号 2.使用容联云发送代码测试 1. 安装容联云sdk pip install ronglian_sms_sdk # 免费测试文档地址:https://doc.yuntongxun.com/p/5a531a353b8496dd00dcdfe22. 短信发送…

sms收发手机短信

这几天在试VS2005里面的SerialPort 类,这个类主要功能是串口通信,以前没接触串口这方面的知识,一开始还比较吃力,还好现在清楚了大半利用这个类做了一个sms收发手机短信的demo,我又重新把这个类封装了下,里面增加了PDU编码和解码的方法,这样可以直接调用封装后的类发送和接收中…

Android SMS —— 读取短信 联系人

Android SMS&#xff08;一&#xff09; —— 读取短信 分类&#xff1a; Android 2012-03-07 12:49 9551人阅读 评论(9) 收藏 举报 sms android integer string date 数据库 Android SMS Read [java] view plain copy print ? package com.homer.sms; import java.…

Android 实现手机号短信验证码

使用mob第三方平台提供的免费短信验证码服务SMSSDK。 在Mob官网中注册登录并创建应用&#xff0c;获取相应的App key和App Secret。 在线安装&#xff0c;免下载SDK&#xff08;官网介绍&#xff09; 在根目录下的build.gradle文件中添加内容 在app目录下的build.gradle文件…

Android手机中获取手机号码和运营商信息

代码如下&#xff1a; package com.pei.activity;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;/*** class name&#xff1a…