LMFlow - 小记

在这里插入图片描述


文章目录

    • 关于 LMFlow
      • 最近的新闻
      • Demos
        • 1、Online Service
        • 2、Colab chatbot(shell)
        • 3、Colab chatbot (web)
        • 4、Local Deploy
      • Medical Performance
      • Model Zoo
      • 支持的Pipelines
      • 支持的模型
    • 安装
    • 数据准备
    • 运行脚本
      • 1、Run Finetuning
      • 2、Run Evaluation
    • Additional Notes
      • 1、LLaMA Checkpoint
      • 2、DeepSpeed Config
    • 模型发布
      • 1、Medical Model Checkpoints
      • 2、Instruction Model Checkpoints
      • 5.3 Begin Reproduce
    • Vision 愿景
    • Disclaimer


关于 LMFlow

LMFlow 是一个可扩展、方便和高效的工具箱,用于微调大型机器学习模型。
目标是开发一套用户友好、快速可靠,并对整个社区开放的全流程微调代码库。
作者:由香港科技大学统计和机器学习实验室团队发起

  • github : https://github.com/OptimalScale/LMFlow
    readme 支持多种语言:English | 简体中文 | Español | 日本語 | 한국어 | हिंदी
  • 官方文档:https://optimalscale.github.io/LMFlow/

其他介绍/教程

  • 机器之心:3090单卡5小时,每个人都能训练专属ChatGPT,港科大开源LMFlow
    https://www.jiqizhixin.com/articles/2023-04-02

本文根据以上文档,编辑修改



功能:

在这里插入图片描述


最近的新闻

  • [2023-04-02] Web service is online!
  • [2023-04-01] Release Chinese checkpoints in model zoo: LLaMA-7B-tuned, LLaMA-13B-tuned, LLaMA-33B-tuned.
  • [2023-04-01] Release English checkpoints in model zoo: LLaMA-7B-medical, LLaMA-13B-medical, and LLaMA-33B-medical.
  • [2023-03-27] Support full tuning and lora tuning for all decoder models.
  • [2023-03-27] Tasked tuned model beats ChatGPT on medical domain
  • [2023-03-27] Release code and checkpoints - version 0.0.1

Demos

当前我们的检查点下载服务已满负荷。我们增加了一个服务器来支持该服务。

如果您遇到 too many HTTP requests 的错误,请等待几分钟后再试。

LMFlow 提供四种演示,包括:

  • 在线服务:如果您不想运行任何代码,只是想尝试我们的模型,我们部署了调整指令的LLaMA-7B和LLaMA-33B供您尝试。
  • Colab Chatbot (shell):一个基于交互式shell的聊天机器人,让您可以轻松在Colab上部署聊天机器人。
  • Colab Chatbot (web):一个基于交互式Web的聊天机器人,让您可以轻松在Colab上部署自己的聊天机器人。
  • 本地部署:我们还提供一种方式,让您可以在本地部署模型/聊天机器人,这意味着如果您有足够的资源,您可以部署比前三种方法更大的模型。

1、Online Service

欢迎访问我们的在线演示。我们部署了经过LLaMA-7B和LLaMA-33B调整指令的模型进行预览。由于网站访问量较高,有时网站可能无法响应。您也可以参考“本地部署”来部署自己的聊天机器人。


2、Colab chatbot(shell)

在这里插入图片描述

我们提供了一个使用 Google Colab的 T4/P100/V100 GPU 的聊天机器人简单shell演示。
请注意,提供的gpt-neo-2.7b模型是相对较弱的模型,仅支持英文,并且有时会生成不理想的响应。为了改善性能,用户可以使用自己的数据集进行微调,并使用LMFlow获得更好的模型。也可以尝试其他可用的仅解码器(decoder only)模型。
🤗 huggingface, by

./scripts/run_chatbot.sh {another-model-name}

3、Colab chatbot (web)

我们提供了一个使用Google Colab的T4/P100/V100 GPU的聊天机器人简单web演示。请注意,提供的gpt-neo-2.7b模型是相对较弱的模型,仅支持英文,并且有时会生成不理想的响应。


4、Local Deploy

如果您有资源并想在本地部署自己的模型,我们为您提供了一种简单的方法,可以通过以下方式运行一个Flask服务器来启动后端(以进一步向其他前端提供服务),并提供一个交互式Web前端(让您直接开始聊天):

cd ./service
python app.py

Medical Performance

PubMedQA (ID)MedQA-USMLE (OOD)MedMCQA (ID)Average
Human (pass)60.050.0
Human (expert)78.087.090.085.0
InstructGPT 175B73.246.044.054.4
ChatGPT63.957.044.755.2
LLaMA 7B5.227.124.318.9
LLaMA 33B1.843.430.325.2
Task-tuned LLaMA 7B (Full)75.144.549.956.5
Task-tuned LLaMA 33B (LoRA)74.051.350.258.5

LLaMA 33B(LoRA)的性能仅经过约16小时的微调,即可在PubMedQA和MedMCQA的训练集上使用单个8 * A100服务器实现。要了解更多性能信息,包括指令微调结果,请参考我们的Documentation


Model Zoo

我们将训练好的检查点开源给所有人进行进一步的训练和推理。

Instruct-tuned ModelsStatusBase ModelDownload
LLaMA-7B-tuned100%LLaMA-7BGoogle Drive
LLaMA-13B-tuned100%LLaMA-13BGoogle Drive
LLaMA-33B-tuned100%LLaMA-33BGoogle Drive
LLaMA-65B-tuned60%LLaMA-65BGoogle Drive
LLaMA7B-medical100%LLaMA-7BGoogle Drive
LLaMA13B-medical100%LLaMA-13BGoogle Drive
LLaMA33B-medical100%LLaMA-33BGoogle Drive
LLaMA65B-medical90%LLaMA-65BGoogle Drive

支持的Pipelines

PipelinesStatus
Task Tuning✅ Supported
Instruction Tuning✅ Supported
Parameter-Efficient Tuning✅ Supported
Large Model Inference✅ Supported
Alignment Tuning🔧 Developing

支持的模型

我们支持🤗 huggingface中的所有decoder models,包括LLaMA、GPT2、GPT-Neo和Galactica等,均已进行了全面测试。我们很快将支持编码器(encoder-decoder)模型。


安装

我们的软件包已经在Linux操作系统(Ubuntu 20.04)上进行了全面测试。

其他操作系统平台(MacOS、Windows)尚未进行全面测试。

您可能会遇到一些意料之外的错误。建议您先在Linux机器上尝试,或者使用Google Colab进行体验。

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 .

数据准备

您可以通过以下指令下载训练数据集和测试数据集:

cd data
bash download.sh all
cd -

您也可以将您的数据转换成以下格式来使用自己的数据集:

{"type": "text2text","instances": [{"input": "Question: The Transformer architecture [START_REF]","output": "N/A"},...]
}
{"type": "text_only","instances": [{"text": "Defintion: In this task, we ask you to write an answer to a question that involves events that may be stationary (not changing over time) or transient (changing over time). For example, the sentence \"he was born in the U.S.\" contains a stationary event since it will last forever; however, \"he is hungry\" contains a transient event since it will remain true for a short period of time. Note that a lot of the questions could have more than one correct answer. We only need a single most-likely answer. Please try to keep your \"answer\" as simple as possible. Concise and simple \"answer\" is preferred over those complex and verbose ones. \n Input: Question: Sentence: It's hail crackled across the comm, and Tara spun to retake her seat at the helm. \nQuestion: Will the hail storm ever end? \n Output: NA \n\n"},...]
}

运行脚本


1、Run Finetuning

您可以通过运行 scripts/run_finetune.sh 来微调一个GPT-2的模型

./scripts/run_finetune.sh

如果您想要提供反映您机器设置的deepspeed参数,可以将相应的deepspeed参数传递给脚本。例如:

./scripts/run_finetune.sh "--num_gpus=8 --master_port 10001"

为了开启LoRA的训练,您可以参考:

./scripts/run_finetune_with_lora.sh

如果需要详细的配置,可以直接修改这些脚本。这些脚本实际上只是调用了python脚本examples/finetune.py,该脚本可以按以下方式运行:

deepspeed ${deepspeed_args} \examples/finetune.py \--deepspeed configs/ds_config_zero3.json \--bf16 \--run_name finetune_with_lora \--model_name_or_path facebook/galactica-1.3b \--num_train_epochs 0.01 \--learning_rate 2e-5 \--dataset_path ${dataset_path} \--per_device_train_batch_size 1 \--per_device_eval_batch_size 1 \--validation_split_percentage 0 \--logging_steps 20 \--block_size 512 \--do_train \--output_dir output_models/finetune \--overwrite_output_dir \--ddp_timeout 72000 \--save_steps 5000 \--dataloader_num_workers 1

python examples/finetune.py -h

2、Run Evaluation

大家可以通过以下方式来对训练好的模型进行测评:

./scripts/run_evaluation.sh

--model_name_or_path 指定了模型存储的位置。

对于LoRA模型的测评,执行以下指令:

./scripts/run_evaluation_with_lora.sh

这些脚本调用了基于我们API构建的示例examples/*.py

要获取更多与API相关的示例,可以参考单元测试中的方法tests.


Additional Notes


1、LLaMA Checkpoint

首先,您需要从facebookresearch/llama获取LLaMA模型的访问权限。下载官方检查点并将其保存到${llama-path}中。

其次,通过运行以下命令将官方检查点${llama-path}转换为HuggingFace支持的检查点${llama-hf-path}

`python ./scripts/convert_llama_weights_to_hf.py --input_dir ${llama-path} --model_size 7B --output_dir ${llama-hf-path}/llama-7b-hf`

然后,将检查点路径设置为${llama-hf-path}/llama-7b-hf即可开始使用。祝您使用愉快!

现在,您已经拥有了原始的llama-7b-hf预训练模型。


2、DeepSpeed Config

您可以在config文件夹下设置DeepSpeed的config,具体可以参考 DeepSpeed Configuration


模型发布


1、Medical Model Checkpoints

您可以运行以下脚本来下载我们的权重:

cd output_models
bash download.sh medical_ckpt
cd -

您可以直接通过Google Drive下载我们的模型: medical_ckpt.tar.gz


2、Instruction Model Checkpoints

cd output_models
bash download.sh instruction_ckpt
cd -

您可以直接通过Google Drive下载我们的模型: instruction_ckpt.tar.gz


5.3 Begin Reproduce

在下载了模型Checkpoints之后,您可以在LMFlow/scripts/run_evaluation_with_lora.sh中将--lora_model_path替换为output_models/instruction_ckpt/llama7b-lora(以instruction的llama-7b为例),并将–model_name_or_path替换为您转换的llama模型。然后运行这个shell脚本以重现结果。

然后,您可以在我们的文档中检查模型性能。


Vision 愿景

我们很高兴地开源LMFlow代码库,其中包括了完整的大模型训练流程,能够快速、高效地训练和部署自己的语言模型。

我们的代码库不仅仅是一个简单的模型; 它包括完整的训练流程、模型权重和测试工具。 您可以使用它来构建各种类型的语言模型,包括对话模型、问答模型和文本生成模型等。

此外,我们旨在创建一个开放和民主的大模型共享平台,任何人都可以在这个平台上分享训练模型权重和经验。 我们欢迎任何对大模型感兴趣的人参与进来,与我们一起建设一个开放友好的社区!

无论您是初学者还是专家,我们相信大家都能从这个平台中获益。让我们共同努力,建立一个充满活力和创新的大模型社区!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aVGSYzRE-1683639527763)(null)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Isa3kkpO-1683639526531)(null)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BX69gOP1-1683639527612)(null)]


Disclaimer

此软件包旨在为大型模型调整提供简化和用户友好的流程。其功能可作为用户参考并供用户使用。然而,需要注意的是,数据和预训练模型的准备工作完全由用户负责。本软件包不保证用户准备组件的准确性、完整性、适用性或合法性。用户必须了解并承担与模型和数据准备相关的所有风险和责任,并在使用本软件包之前获取法律、商业和技术建议。该流程不应对用户不当准备数据和预训练模型所导致的任何直接、间接、特殊、偶然或后果性损害负责。

我们提供的检查点仅供研究目的使用,包括英文和中文版本。这些检查点包含ChatGPT语言模型生成的结果。我们不支持或鼓励将这些检查点用于商业目的的分发或使用。这些检查点的用户应当负责确保正确和适当地使用它们。

还需要强调的是,模型生成的结果是基于概率模型,与此流程没有直接关系。本流程不保证结果的准确性、可靠性、适用性和合法性。因此,在依赖模型生成的结果之前,用户还必须了解与结果相关的风险和责任,并寻求法律、商业和技术建议。该流程不应对用户依赖模型生成的结果所导致的任何直接、间接、特殊、偶然或后果性损害负责。


2023-05-09

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

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

相关文章

ChatGPT更新的使用指南,与其他类似的人工智能的软件和服务-更新版(2023-6-25)

文章目录 一、什么是ChatGPT二、如何使用三、如何使用ChatGPT帮助我们的工作和生活四、高阶用法1、角色扮演2、英语口语老师3、在搜索引擎中集成ChatGPT 五、常见问题五、其他类似的软件和服务 如果你还不知道如何注册和使用,可看末尾,手把手教你。 一、…

百度官宣在前,阿里、京东在后,互联网大厂向ChatGPT而生?

ChatGPT蹿红后,互联网科技公司都坐不住了。 最早,百度正式对外官宣类ChatGPT项目“文心一言”(ERNIE Bot)。据笔者了解,该产品将于三月份完成内测,面向公众开放。 紧随其后,阿里巴巴公布阿里版…

揭秘 ChatGPT 背后的技术栈:OpenAI 如何将 Kubernetes 扩展到了 7500 个节点

作者 | OpenAI 译者 | Sambodhi 策划 | 褚杏娟 在本文中,OpenAI 的工程师团队分享了他们在 Kubernetes 集群扩展过程中遇到的各种挑战和解决方案,以及他们取得的性能和效果。 我们已经将 Kubernetes 集群扩展到 7500 个节点,为大型模型&#…

golang后端面试题总结

什么是goroutine? Goroutine是Go语言中的轻量级线程,可以轻松地实现并发编程。Goroutine的调度是由Go语言运行时(runtime)进行管理的,可以自动地在多个线程之间分配任务。 什么是Go语言的协程(goroutine&…

AI作画,OpenVINO助你在英特尔 ®GPU 上随心创作

作者:武卓 最近,AIGC(即AI Generated Content,是指利用人工智能技术来生成内容)真的是火出了天际。除了被挤到服务器满负荷的chatGPT,另一个也颇受瞩目的领域当属AI作画了。利用开源的一类“扩散&#xff…

《降临》作者特德·姜:ChatGPT是网上所有文本的模糊图像

2月9日,美籍华裔科幻作家特德姜(Ted Chiang)在《纽约客》上发表文章,表达了他对时下大热的人工智能ChatGPT独特见解。特德姜在科幻小说领域成绩斐然,曾获得星云奖、雨果奖等科幻小说大奖。他的短篇小说《你一生的故事》…

ChatGPT火爆!人工智能需要哲学吗?

人工智能研究为何需要哲学参与? 作者丨徐英瑾 复旦大学哲学学院教授 人工智能哲学作为一个行当,在国内基本上是还没有确立起来。总体来说国外的情况比我们好一点,马马虎虎算一个哲学分支。举个例子,玛格丽特博登是研究人工智能哲学的一个…

2023,我们不得不面对ChatGPT引发的混乱

文 | 郭英剑(中国人民大学首都发展与战略研究院副院长) 作为全新的人工智能(AI)语言模型,ChatGPT诞生于2022年11月30日。目前,虽然其尚处于试运行阶段,但已经产生了极为震撼的影响。…

ChatGpt发展历程

ChatGPT(英文全称:Chat Generative Pre-trained Transformer,聊天生成预训练转换器)是人工智能研究实验室OpenAI(开放人工智能研究中心)在2022年发布的聊天机器人模型。ChatGPT基于GPT-3.5系列,…

中创沙龙预告 | 以ChatGPT的视角探索人工智能的未来

以ChatGPT的视角探索人工智能的未来 中创沙龙定期举行 ChatGPT:聊天机器人的新时代 开启智能对话新纪元。 ChatGPT推出截止目前两个多月的时间,月活用户已经突破1亿人,创增长最快纪录。毋庸置疑,ChatGPT是一个具有开创性的产品,但…

《降临》作者特德·姜:ChatGPT 是互联网的有损压缩

❝ 本文转自澎湃新闻,原文:https://www.thepaper.cn/newsDetail_forward_21877769,版权归原作者所有。欢迎投稿,投稿请添加微信好友:cloud-native-yang 2 月 9 日,美籍华裔科幻作家特德姜(Ted …

chatgpt赋能python:Python爬虫:如何取出网页标签a里的ID?

Python爬虫:如何取出网页标签a里的ID? 在SEO的领域中,网页的数据提取和分析是一项重要的任务。这也就是为什么Python编程语言成为了许多SEO工程师的首选语言之一。Python以其简单性和灵活性而受到了广泛赞誉,并包含了可靠的数据提…

chatgpt赋能python:Python反扒解决方案:打破“网页抓取难”的困境

Python反扒解决方案:打破“网页抓取难”的困境 作为一种强大的编程语言,Python的应用场景日益扩大,成为越来越多公司的首选工具。然而,在爬取网站数据、分析竞争对手数据等方面,Python也常常受到阻碍——那就是扒取过…

chatgpt赋能Python-pycharm爬虫电影代码

PyCharm爬虫电影代码详解 作为一位有着10年python编程经验的工程师,我想分享一下关于PyCharm爬虫电影代码的详细介绍和使用方法。 PyCharm简介 PyCharm是由JetBrains开发的一款Python IDE,它为Python开发者提供了一站式的开发环境,包括代码…

我找到了用ChatGPT+爬虫搞钱的新模式!

这几个月真是太科幻了,各路令人赞叹的AI产品接连问世,感觉幻想过的未来已在眼前。就与多年前移动互联网的普及一样,我们正处于AI改变世界的前夜。 在众多优秀的人工智能模型中,以ChatGPT最为火爆!其在上月推出的插件功…

chatgpt赋能python:Python绕过登录爬虫:实现快速爬取网站数据

Python绕过登录爬虫:实现快速爬取网站数据 在进行网站数据爬取时,有些网站会要求用户先进行登录操作,才能够获取到需要的数据。这对于爬虫来说是一个挑战,因为传统的爬虫方法无法绕过登录部分的限制获取数据。然而,通…

chatgpt赋能python:Python爬虫解密:如何快速抓取网站数据

Python爬虫解密:如何快速抓取网站数据 在当今信息时代,人们越来越依赖互联网获取信息。不同的网站提供了大量数据,但是手动去抓取这些数据十分困难,效率也很低。Python爬虫技术是解决这一问题的有效工具之一,它可以帮…

谁能拒绝用ChatGPT+爬虫搞钱的新路子呢?

重磅,ChatGPT再次迎来里程碑式更新! ChatGPT在上月推出了令人瞩目的插件功能,如果把ChatGPT看做是智能手机,那插件就相当于应用商店。现在的ChatGPT像一个“万能”的超级工具,善用它可以带来很多好处。 就与多年前移…

chatgpt赋能python:Python爬虫:抓取数据的实用技巧

Python爬虫:抓取数据的实用技巧 如果您是一名数字营销从业者,那么您一定知道SEO的重要性。SEO是一项复杂的工作,但是其中包含了一个非常关键的步骤,就是通过爬虫从网站中抓取数据。Python是一个非常强大的工具,可以帮…

利用爬虫逆向外网ChatGPT平台教程,新手可上手!!!

大家好,我是阿爬!这里是讲述阿爬和阿三爬虫故事的爬友圈 阿爬今天发现自己的ChatGPT,被官网封了 有点无奈,阿三平时对它可温柔了 找了很多免费的平台,发现内网的和外网的面对同样的问题,回答的内容还是有区…