Yuan2.0完成FastChat框架适配,内置模板实现多轮对话

添加书签

专注AIGC领域的专业社区,关注微软&OpenAI、百度文心一言、讯飞星火等大语言模型(LLM)的发展和应用落地,聚焦LLM的市场研究和AIGC开发者生态,欢迎关注!

最近,Yuan2.0开源大模型又出更新,增加了对话模板,并预置了多轮对话模板,已经在本地聊天工具源chat上进行了集成。可以通过设置–>max-multi-turns打开功能体验多轮对话。

不过本着将简单留给用户,将复杂留给自己的开发原则,我们还是决定进一步适配有大量用户基数的FastChat框架,让开发者能够在不改动原有代码的情况下便捷地使用yuan2.0基础模型。与优秀的项目站在一起,使我们变得更加优秀。

FastChat简介

先贴一段大家唾手可得的介绍


FastChat是加州大学伯克利分校LM-SYS发布的一个用于训练、服务和评估基于大型语言模型的聊天机器人的开放平台。


其核心功能包括:

  • 最先进 LLM 模型的权重、训练代码和评估代码;

  • 带有 WebUI 和与 OpenAI 兼容的 RESTful API 的分布式多模型服务系统。


直白地说,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平台,灵活、便捷地切换为本地部署的千亿参数模型的私有化服务了。



闲言碎语不要讲,下面教程来登场~



二、部署教程


为了部署方便,这里以IEITYuan/Yuan2-2B-Janus-hf模型为例,详细介绍采用fastchat部署yuan2.0的流程。

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模型完全相同。


模型

序列

长度

下载链接

Yuan2.0-102B

4K

https://www.modelscope.cn/models/YuanLLM/Yuan2.0-102B/summary

Yuan2.0-51B

4K

https://www.modelscope.cn/models/YuanLLM/Yuan2.0-51B/summary

Yuan2.0-2B

8K

https://www.modelscope.cn/models/YuanLLM/Yuan2.0-2B/summary

Yuan2.0-2B-Janus-hf

8K

https://modelscope.cn/models/YuanLLM/Yuan2-2B-Janus/files


模型下载完成后解压,文件夹中内容如下图所示,即表示模型下载完整了


这里需要记录一下模型所在文件夹的地址,上图中为/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: 当然可以。以下是一些常见的测试用例:#```pythondef 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.controllerpython3 -m fastchat.serve.model_worker --model-path IEITYuan/Yuan2-2B-Janus-hfpython3 -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开放社区