Yuan2.0完成FastChat框架适配,内置模板实现多轮对话
添加书签![](https://static-img-job.rpa-cn.com/www.open-cx.com/2024/02/20240213110154460.jpeg)
专注AIGC领域的专业社区,关注微软&OpenAI、百度文心一言、讯飞星火等大语言模型(LLM)的发展和应用落地,聚焦LLM的市场研究和AIGC开发者生态,欢迎关注!
最近,Yuan2.0开源大模型又出更新,增加了对话模板,并预置了多轮对话模板,已经在本地聊天工具源chat上进行了集成。可以通过设置–>max-multi-turns打开功能体验多轮对话。
不过本着将简单留给用户,将复杂留给自己的开发原则,我们还是决定进一步适配有大量用户基数的FastChat框架,让开发者能够在不改动原有代码的情况下便捷地使用yuan2.0基础模型。与优秀的项目站在一起,使我们变得更加优秀。
FastChat简介
先贴一段大家唾手可得的介绍
![](http://static-img-job.rpa-cn.com/www.open-cx.com/2024/02/20240213110157682.png)
FastChat是加州大学伯克利分校LM-SYS发布的一个用于训练、服务和评估基于大型语言模型的聊天机器人的开放平台。
其核心功能包括:
-
最先进 LLM 模型的权重、训练代码和评估代码;
-
带有 WebUI 和与 OpenAI 兼容的 RESTful API 的分布式多模型服务系统。
![](http://static-img-job.rpa-cn.com/www.open-cx.com/2024/02/20240213110157820.png)
直白地说,FastChat是一个非常流行的大模型聊天机器人平台,嗯……流行到什么程度呢,目前GitHub官网标星数超过31k,大名鼎鼎的langchain-chatchat底层也是使用的FastChat来实现大模型的部署。另外值得注意的是,Fastchat除了WebUI让大家便捷的使用和测试大模型外,还提供了restful API的服务调用方式,并且它提供的API与OpenAI开放出的API完全兼容,意味着以前大家基于OpenAI的API构建的一系列应用都可以无需任何改动,直接运行在FastChat框架上。一个显而易见的好处就是,通过OpenAI的GPT模型已经获得原型验证甚至商业成功的应用,都可以采用这个框架将应用服务完整迁移到本地,通过选择开源的大模型即可实现私有化大模型服务部署,避免了数据出域、隐私安全等一系列问题。
听起来就很有诱惑力,值得一提的是,浪潮yuan2.0全系列模型都已经完美适配FastChat,并出现在了LM-SYS官方GitHub的模型支持列表当中。这其中包含了Yuan2.0-102B模型,是业界目前唯一开源可商用的千亿参数模型。这也意味着现在用户可以便捷地在FastChat平台上快速部署体验yuan2.0千亿参数模型,而原本采用OpenAI的API接口构建的一系列应用,也可以借助FastChat平台,灵活、便捷地切换为本地部署的千亿参数模型的私有化服务了。
闲言碎语不要讲,下面教程来登场~
![](http://static-img-job.rpa-cn.com/www.open-cx.com/2024/02/20240213110202235.png)
![](http://static-img-job.rpa-cn.com/www.open-cx.com/2024/02/20240213110202769.png)
step 1. 安装FastChat
跟大多数开源优秀项目类似,FastChat官方也提供了两种安装方式,pip install和源码安装。
pip安装
官方提供的采用pip安装命令为pip3,建议大家采用python3.x,避免出现依赖包冲突。
pip3 install "fschat[model_worker,webui]"
在实践中,如果是python3.x的环境,直接采用
pip install fschat
也是可以完成安装的
源码安装
采用源码安装相对更为灵活,可选择的分支版本也更多。根据官方提供的教程,采用源码安装分三步,
-
第1,从GitHub上clone代码到本地
git clone https://github.com/lm-sys/FastChat.git
-
第2,切换到代码所在的目录
cd FastChat
-
第3,升级pip后进行本地安装
pip3 install --upgrade pip
pip3 install -o .
ok,以上就是两种FastChat的安装方式,想省心就直接采用pip安装即可~如果在新的容器或系统种安装完FastChat后直接运行,可能会有一些依赖包找不到而报错,为了安全起见,可以采用下面命令安装依赖包:
pip3 install transformers accelerate sentencepiece
其中transformers库用来支持模型运行框架 ,accelerate库用来加速FastChat的推理速率,而sentencepiece依赖库包含拆分句子生成token所需的工具。
至此fastChat相关安装就结束了。
step 2. 下载yuan2.0模型
这里我们采用浪潮最新发布的Yuan2.0-2B-Janus-hf模型进行实践。如果外网访问困难,也可以通过魔搭社区、wisemodel、百度网盘、OpenXlab等平台进行下载。方便起见,我们将不同规模的模型下载链接附上,后续的部署过程同Yuan2-2B-Janus-hf模型完全相同。
模型下载完成后解压,文件夹中内容如下图所示,即表示模型下载完整了
这里需要记录一下模型所在文件夹的地址,上图中为/mnt/models/Yuan2-2B-Janus-hf,后续启动FastChat时需要将这个地址指定给model-path变量。
step 3. 启动FastChat推理服务
采用如下命令启动FastChat服务:
python3 -m fastchat.serve.cli --model-path /mnt/models/Yuan2-2B-Janus-hf
这里的model-path后面就是我们刚才记录的模型所在文件夹地址,在启动这条命令时需要替换成自己下载的模型的路径。
至此,基于Yuan大模型的FastChat推理服务就已经启动完成了!服务启动后会进入一个客户端页面,我们可以在这个页面直接进行对话测试。
user: 你好。
assistant: 您好,有什么可以帮助您的吗?
user: 介绍一下北京。
assistant: 北京是中国的首都,位于华北平原中部。它是一个历史悠久、文化灿烂的城市,也是现代化与传统文化相结合的代表之一。北京拥有着丰富的历史遗产和文化景观,如紫禁城、天安门广场、颐和园、长城等。此外,北京还有许多现代建筑和创意艺术作品,如798艺术区、木鱼巷等。
user: 给我写一个快速排序算法。
assistant: 快速排序是一种基于比较的排序算法,其时间复杂度为O(nlogn)。具体来说,快速排序通过选取一个基准元素,将数组分为两部分,使得左边的元素都小于基准元素,右边的元素都大于基准元素,然后递归地对左右两部分进行排序。
以下是一个简单的快速排序算法实现:
#```python--这里为了博客中显示正常,在```前面添加了一个#,并非模型生成,下同。
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
#```
这个算法的优点是它通常能够很好地处理小规模数据,而且它具有很好的可扩展性,可以轻松地处理不同规模的数据。但是,它也有一些缺点,例如它需要额外的空间来存储中间结果,并且它的最坏时间复杂度为O(n^2)。因此,在实际应用中,我们通常使用更高效的排序算法,如归并排序、插入排序等。
user: 能提供一些测试用例吗
assistant: 当然可以。以下是一些常见的测试用例:
#```python
def test_quick_sort():
assert quick_sort([]) == []
assert quick_sort([1]) == [1]
assert quick_sort([3, 2, 1]) == [1, 2, 3]
assert quick_sort([5, 8, 2, 1, 6, 3, 4, 7, 9]) == [1, 2, 3, 4, 5, 6, 7, 8, 9]
assert quick_sort([9, 8, 7, 6, 5, 4, 3, 2, 1]) == [1, 2, 3, 4, 5, 6, 7, 8, 9]
#```
这些测试用例包括了各种不同规模和不同顺序的输入数据。
user: 很好,你知道它的时间复杂度吗?
assistant: 是的,我知道它的时间复杂度为O(nlogn)。
user:
接下来我们试试在FastChat的WebUI上进行测试。要使用WebUI,需要先启动fastchat的controller和worker。在命令行输入如下命令:
python3 -m fastchat.serve.controller
python3 -m fastchat.serve.model_worker --model-path IEITYuan/Yuan2-2B-Janus-hf
python3 -m fastchat.serve.gradio_web_server
启动完成后,默认会弹出WebUI页面,也可以在日志页面查看可访问的URL地址,在浏览器中输入对应的URL,选择yuan2模板就可以与Yuan2.0大模型进行对话了。
以下是使用WebUI与Yuan2.0进行交互的示例,先来打个招呼,让模型写首小诗吧:
指定个主题试试:
根据官网发布的消息,新版的yuan2.0-2B-Janus-hf模型的代码能力也有显著提升,不妨趁机测试一下:
再来几个测试用例:
可以看到,我们的几次测试中包含了多轮对话任务,新版模型的多轮对话模板在这里起了很好的效果,无论是给出的诗词主题修正还是排序算法的测试用例,都能够很好的保持上下文内容的一致性~另外不得不多说一句,FastChat测试大模型能力是真方便,用这个平台来做开源大模型能力横向测评是个不错的选择。
ok,以上就是本次的教程了,更多功能(langchain/兼容huggingface api/兼容OpenAI API),请查看源2.0官网和FastChat官网。用户可以使用这些高级功能,结合Yuan2.0的能力轻松实现自己的人工智能应用。
本文来源 魔搭ModelScope社区,如有侵权请联系删除
END
本篇文章来源于微信公众号: AIGC开放社区