草庐IT

HuggingChat叫板ChatGPT!300亿参数大模型免费用,网友:真香

新智元 2024-01-02 原文

大事不妙,ChatGPT的平替真来了!

一夜醒来,最大开源社区Hugging Face发布了HuggingChat,有300亿参数。

既开源,还免费,互联网上随随便便就能用。

网址戳这里:hf.co/chat,秒秒钟体验ChatGPT完美平替。

如果说,ChatGPT是苹果iOS系统,那么,HuggingChat将成为开源版的Android。

不得不说,接入亚马逊之后的Hugging Face,有点猛啊。

HuggingChat VS ChatGPT

在深入介绍之前,先来点刺激的。

我打开网页干的第一件事,就是挑衅HuggingChat,问了问他和ChatGPT有什么区别。

HuggingChat条分缕析,不偏不倚。

· 数据来源:虽然两者都使用在大量文本数据上训练的机器学习模型,但HuggingChat(Open Assistant)比ChatGPT有更广泛的来源,不仅包括书面内容,还包括用户查询和真实人物产生的对话。

· 规模和复杂度:ChatGPT由比Open Assistant更大、更复杂的神经网络架构组成,允许更大的处理能力和更多可能的任务。

· 可定制性:Open Assistant为第三方服务提供了定制选项和集成,使开发者能够根据他们的需要定制功能。这个功能在ChatGPT中并不存在。

· 用户界面/集成:开放式助手提供了API、webhooks和其他整合方法,使对话式人工智能更容易嵌入到不同的应用程序中。

· 开源和协作:与ChatGPT不同,OA是开源的,这意味着来自世界各地的贡献者可以分享知识,完善模型,改进其功能,并合作开发新的功能。

在进一步试探HuggingChat之前,有一件事情要先厘清。那就是前一阵子发布的Open Assistant(插一个Open Assistant那篇文章的链接)和HuggingChat的联系,以免有读者以为这是两个完全不同的东西。

「Open Assistant和HuggingChat是两个相关的项目,都涉及使用深度学习技术和海量文本数据开发对话式人工智能。

它们的共同根源是Hugging Face Inc.,该研究实验室专注于在文本生成和理解、计算机视觉和NLP等领域建立行业领先的人工智能技术。此外,HuggingChat代表的是聊天机器人或语言模型等方面,而Open Assistant则建立在这一基础之上,具有额外的特性和功能,旨在更好地适用于更一般化的问题和答案。

因此,从本质上讲,你可以把它们看作是同一棵树上的分支,源于实现与机器自然语言交流的互补方法。」

这下基本的关系搞清了,我们可以进一步深入了解HuggingChat了。

高质量聊天模型

乍一看,HuggingChat的界面和ChatGPT还挺像的。

左边都是一个有最新聊天记录的分栏,浏览器窗口的大部分被当前的聊天记录所占据。目前,用户还不能登录并保存他们的对话,以便在更长的时间内反复使用。

与ChatGPT一样,HuggingChat可以根据要求生成自然语言或特定格式的文本,开箱即用。

它还可以生成代码,包括语法突出显示。题外话,这个功能是谷歌在推出Bard之后几周后才加上去的。

而HuggingChat聊天机器人的响应速度也很快,与GPT-3.5-turbo基本持平。

唯一美中不足的是,因为训练尚不完整,HuggingChat在处理英文上要比中文好太多。毕竟,每一种语言都需要大量的语料去训练。

像上面介绍过的,HuggingChat基于OpenAssistant,OA去年12月启动,在当时就是ChatGPT的开源竞争者。与HuggingChat聊天界面类似。

自2023年4月中旬以来,一直保持免费。

这两种模型的语言系统都是基于一个300亿个参数的LLaMA模型。与Alpaca或Vicuna一样,这些模型是经过「指令微调」的,与ChatGPT不同,没有通过人类反馈的强化学习(RLHF)进行改进。

根据Hugging Face的说法,OpenAssistant并不是最后的终点。

最终,该平台希望通过一个单一的中心来提供「所有」高质量的聊天模型。

安全,才能Hug

尽管HuggingChat是开源的,但这并不意味着就能随随便便生成内容。

潜在的犯罪或其他不合适的请求,都会被义正言辞地驳回。比如问HuggingChat怎么制造炸弹这种问题。

不过,这里必须必须明确一点。上面提到过,除了英语以外其它语种的训练还不完善,所以这种自检机制只有在英语里是最完整的。

研究人员用德语中进行过一次测试,也是问炸弹的做法,这是HuggingChat就只是表示,道德上不可接受,但该帮还帮。

好在,HuggingChat虽有心帮忙,实则力不从心。研究人员表示,这机器人也不咋会做炸弹,提的建议非常拉胯。

看得懂德语的评论区讲讲

最后,在隐私方面,当前版本的HuggingChat不会根据Hugging Face存储任何聊天数据,也没有用户账户这一说。

HuggingChat不能访问任何现有的Hugging Face账户。但未来不好说,可能会有一个选项,以优化为目的,和模型供应商分享用户的聊天数据。

网友评论

英伟达大神Jim Fan在推特表达了自己的看法,他认为HuggingChat这个300亿参数的开源大模型,简直就是ChatGPT的平替。

而HuggingChat的下一步,想必就是开发出「APP」,成为安卓的APP Store了(类似于 ChatGPT 的插件系统)。

实际上,Hugging Face和OpenAI相比有一个优势,那就是,商店里的APP可以是已经由Hugging Face发布的多模态模型。

当然了,目前HuggingChat并不是非常完美,网友称在写代码的时候会有bug。

HuggingChat还会犯事实错误,竟称法国总统马克龙(现任)在2036年去世?。

好在学习快,在网友之后询问中回答对了。

有关HuggingChat叫板ChatGPT!300亿参数大模型免费用,网友:真香的更多相关文章

  1. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  2. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  3. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  4. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  5. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  6. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  7. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  8. ruby - 如何在 Ruby 中拆分参数字符串 Bash 样式? - 2

    我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"

  9. ruby - 检查方法参数的类型 - 2

    我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)

  10. ruby-on-rails - 如何将验证与模型分开 - 2

    我有一些非常大的模型,我必须将它们迁移到最新版本的Rails。这些模型有相当多的验证(User有大约50个验证)。是否可以将所有这些验证移动到另一个文件中?说app/models/validations/user_validations.rb。如果可以,有人可以提供示例吗? 最佳答案 您可以为此使用关注点:#app/models/validations/user_validations.rbrequire'active_support/concern'moduleUserValidationsextendActiveSupport:

随机推荐