Redian新闻
>
ChatGPT开源平替:OpenAssistant OASST1微调版Pythia-12B

ChatGPT开源平替:OpenAssistant OASST1微调版Pythia-12B

公众号新闻

ChatGPT最令人兴奋的开源聊天机器人替代品之一——由Graphcore(拟未) IPU驱动的OpenAssistant的OASST1微调版Pythia-12B现在可以在Paperspace上免费运行。作为真正的开源模型,可以不受限制地商用。



http://ipu.dev/y86FIU


oasst-sft-4-pythia12b是EleutherAI的Pythia模型系列的一个变体,使用开放助理对话(OASST1)数据集进行微调(fine tune),这是一个众包的“人类生成的、人类注释的助理式对话语料”。


OASST1数据集由35种不同语言的161,443条信息组成,注释了461,292个质量等级,形成了超过10,000个完全注释的对话树。


Paperspace上运行OASST1微调版Pythia-12B推理


OpenAssistant的OASST1微调版Pythia可以通过Paperspace Gradient notebook在Graphcore IPU上轻松运行。新用户可以通过Paperspace的六小时免费试用,在IPU-POD4上尝试Pythia。对于更高的性能实现,你可以扩展到IPU-POD16

该notebook指导你创建和配置一个推理传递途径,并运行该传递途径以建立一个逐次的对话。

因为OpenAssistant模型使用与Dolly相同的Pythia-12B底层模型,所以我们使用Dolly传递途径来运行它。



http://ipu.dev/y86FIU


让我们从加载推理配置开始。我们使用与Dolly相同的配置文件,并手动修改训练集的词库大小,这是模型图之间的唯一区别。一个适合你的实例的配置将被自动选择。



from utils.setup import dolly_config_setup


config_name = "dolly_pod4" if number_of_ipus == 4 else "dolly_pod16"

config, *_ = dolly_config_setup("config/inference.yml", "release", config_name)


# Update vocab size for oasst-sft-4-pythia-12b-epoch-3.5 - 50288 rather than 50280

config.model.embedding.vocab_size = 50288


config



接下来,我们要创建我们的推理途径。在这里,我们定义了最大的序列长度和最大的微批尺寸。在IPU上执行一个模型之前,需要通过编译将其变成可执行的格式。这将在流水线创建时发生。所有的输入形状在编译前必须是已知的,所以如果最大序列长度或微批尺寸改变了,途径将需要被重新编译。

选择一个较长的序列长度或较大的批处理量将使用更多的IPU内存。这意味着,增加一个可能需要你减少另一个。

这个单元大约需要18分钟来完成,其中包括下载模型权重。



import api


# changing these parameters will trigger a recompile.

sequence_length = 512  # max 2048

micro_batch_size = 1


# The pipeline is set to load the OpenAssistant checkpoint rather than the default Dolly one


# We override the Dolly prompt templating by specifying a prompt_format. Setting the format to

# just echo the instruction means that the pipeline does no formatting and it is up to the

# application to provide correctly templated prompts


# We set the text string that OpenAssistant uses to mark that it has finished generation, which

# is different from the Dolly one


oasst_pipeline = api.DollyPipeline(

    config,

    sequence_length=sequence_length,

    micro_batch_size=micro_batch_size,

    hf_dolly_checkpoint="OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5",

    prompt_format="{instruction}",

    end_key="<|endoftext|>",

)



调用你刚刚创建的oasst_pipeline对象,从提示中生成文本。


为了制作一个聊天机器人,我们将接受用户的输入并将其反馈给模型。为了使notebook能够自动测试,我们创建一个类似于Python内置函数input()的函数,收集用户的输入并返回,但如果设置了测试环境变量EXAMPLE_PROMPTS,它将从该变量返回罐装输入。该变量应该被设置为一个字符串的JSON列表,例如:



export EXAMPLE_PROMPTS='["Are you related to Dolly?", "Ah OK. How many islands are there in Scotland?"]'




import os

import json


example_prompts = os.getenv("EXAMPLE_PROMPTS")

if example_prompts is not None:

    example_prompts = json.loads(example_prompts)


# Get input from user like input() but with possibility of automation via EXAMPLE_PROMPTS environment variable

def auto_input(prompt: str) -> str:

    if example_prompts is None:

        return input(prompt)

    auto_in = example_prompts.pop(0) if example_prompts != [] else ""

    print(prompt, "AUTO", auto_in)

    return auto_in



聊天机器人的对话是由用户输入的若干回合和模型写出的回复建立起来的。随着对话的发展,提示应该被逐次扩展,所以模型可以获得完整的背景。


该模型已经在一个特定的提示模板上进行了训练,以代表对话的建立过程:



<|prompter|>user1<|endoftext|> <|assistant|>reply1<|endoftext|> <|prompter|>user2<|endoftext|> <|assistant|>...



途径调用有一些可选的参数,你可以用来控制生成行为:


  • 温度——表示你是否想要更多或更少的创造性输出。1.0的值对应于模型的默认行为。比这更小的值会强调下一个标记的分布,使模型更有可能挑选一个高度可能的下一个标记。0.0的值意味着模型将总是选择最可能的标记。温度大于1.0会使下一个符号分布变平,使更多不寻常的下一个符号更有可能。温度必须是零或正数。

  • k——表示只对最高的k个可能的标记进行抽样。这被称为 "top k "采样。设置为0可以禁用top k采样,从所有可能的标记中采样。k的阈值必须在0和config.model.embedding.vocab_size最大值之间,即50288。默认值是5。

  • output_length——设置一个最大的输出长度(tokens)。生成通常在模型生成其end_key文本时停止,但可以通过指定这个选项使其在这之前停止。None的值将禁用该限制。默认值是 "无"。


你可以从任何用户输入开始。例如,“还有哪些动物与羊驼相似?”



import logging


# Conduct a complete conversation - with ability to set pipeline optional parameters

def chat(temperature=None, top_k=None, output_length=None):


    options = {}

    if temperature is not None:

        options["temperature"] = temperature

    if top_k is not None:

        options["k"] = top_k

    if output_length is not None:

        options["output_length"] = output_length


    # Suppress INFO logging to make a better interactive chat display

    logging.disable(logging.INFO)


    print("To complete the chat, enter an empty prompt")


    prompt = ""

    while True:

        user_input = auto_input("Prompter:")

        if user_input == "":

            break


        prompt += f"<|prompter|>{user_input}<|endoftext|><|assistant|>"

        chat_output = oasst_pipeline(prompt, **options)[0]

        prompt += chat_output + "<|endoftext|>"


    # Restore logging to what it was before

    logging.disable(logging.NOTSET)



chat(temperature=0.0)


# Note the first time you run this cell and enter a prompt, there will be a delay of ~1 minute where

# nothing appears to happen. This is where the server is attaching to the IPUs



请看下面的图片,这是一个使用不同提示的模型的行动例子。



记住,当你完成后要分离你的途径以释放资源:


oasst_pipeline.detach()



在非Paperspace IPU环境下运行OASST1微调版Pythia 


要在Paperspace以外的地方使用IPU硬件运行演示,你需要启用Poplar SDK。


关于如何启用Poplar SDK的细节,请参考您的系统的入门指南[1]。也请参考Jupyter快速入门指南[2],了解如何设置Jupyter,以便能够在远程IPU机器上运行这个notebook。


[1]https://docs.graphcore.ai/en/latest/getting-started.html#getting-started

[2]https://docs.graphcore.ai/projects/jupyter-notebook-quick-start/en/latest/index.html




获取更多Graphcore资讯,阅读深度技术文章,并与其他创新者们一起交流,请至中国官网graphcore.cn,以及关注Graphcore微信、微博和知乎创新社区。

Graphcore中国官网

Graphcore官方微信

Graphcore微博创新社区

Graphcore知乎创新社区


点击阅读原文,查看英文blog。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Python 吞噬世界,GPT 吞噬 Python!ChatGPT 上线最强应用:分析数据、生成代码都精通揭秘 ChatGPT 背后的技术栈:OpenAI 如何将 Kubernetes 扩展到了 7500 个节点ChatGPT 又断网了!OpenAI 暂时下线 ChatGPT 搜索功能,只因绕过付费墙?Python吞噬世界,GPT吞噬Python!ChatGPT 上线最强应用:分析数据、生成代码都精通ChatGPT能写长篇小说了,ETH提出RecurrentGPT实现交互式超长文本生成LPython:最新的高性能Python实现、速度极快且支持多后端ChatGPT平替「小羊驼」Mac可跑!2行代码单GPU,UC伯克利再发70亿参数开源模型Agustín Hernández:中美洲建筑背景下的未来主义巨构全球最大ChatGPT开源平替来了!支持35种语言,写代码、讲笑话全拿捏雷军入局ChatGPT大战/ AutoGPT星标超PyTorch/ 马斯克星舰今晚发射…今日更多新鲜事在此巴黎市长将重修Châtelet 广场以方便行人GPT-5年底上线?初创公司Runway CEO再爆料:OpenAI员工相信GPT-5有望成AGI比Python快3.5万倍的语言来了/ 微软将推私有版ChatGPT/ iOS17剧透8项新功能…今日更多新鲜事在此人生的苦役(小说)7向ChatGPT开炮!谷歌打响全面反击战!官宣新模型比肩GPT-4!对话ChatGPT:OpenAI 持续引领技术变革之考悬赏两万:OpenAI宣布给ChatGPT挑毛病,即可拿钱ChatGPT 全球最大开源平替:回复更受欢迎,但中文对话一塌糊涂一位悲命的政治辅导员谷歌终于能与OpenAI 打擂台了!全新PaLM 2比肩GPT-4:一部手机就可运行,精通Python等20种语言无题太强啦!!!ChatGPT 能上传文件了,能执行 Python 代码啦!【城事】巴黎市长将重修Châtelet 广场以方便行人刷榜GitHub!中科院学术科研专用版 ChatGPT开源了!斩获24K star。。论文润色、语法检查,一键搞定!大型语言模型技术公开课上线4讲!直播讲解ChatGPT开源平替、类GPT4低成本定制以及GPT4ToolsPython 吞噬世界,GPT 吞噬 Python!ChatGPT 上线最强应用ChatGPT全新功能公开演示!OpenAI总裁:ChatGPT会重新定义计算机(全文记录)麻省理工Python增强编译器Codon 让Python像C\\C++一样高效情爱生物钟_前言「ChatGPT幻觉」变废为宝!灵感生成器DreamGPT开源:见识一下真正的脑洞大开微软也搞起了开源小模型!利用OpenAI的ChatGPT和GPT-4 训练,实力碾压当前最强开源模型专访ChatGPT背后的科学家:OpenAI的300人工作方法论ChatGPT路线图曝光:没有GPT-5、识图功能要等到明年、GPT-3或将开源ChatGPT全球最大开源平替:回复更受欢迎,但中文对话一塌糊涂回国心切 - 看望老妈
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。