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

一、背景

近日,Yuan2.0开源大模型又出更新,增加了对话模板,并预置了多轮对话模板,已经在本地聊天工具源chat上进行了集成。可以通过设置-->max-multi-turns打开功能体验多轮对话。不过本着将简单留给用户,将复杂留给自己的开发原则,我们还是决定进一步适配有大量用户基数的FastChat框架,让开发者能够在不改动原有代码的情况下便捷地使用yuan2.0基础模型。与优秀的项目站在一起,使我们变得更加优秀。

  • FastChat简介
    先贴一段大家唾手可得的介绍
    FastChat[2]是加州大学伯克利分校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平台,灵活、便捷地切换为本地部署的千亿参数模型的私有化服务了。
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-102B4KModelScope | OpenXlab | 百度网盘 | WiseModel
Yuan2.0-51B4KModelScope | OpenXlab | 百度网盘 | WiseModel
Yuan2.0-2B8KModelScope | OpenXlab | 百度网盘 | WiseModel
Yuan2.0-2B-Janus-hf New
8KModelScope | OpenXlab | 百度网盘 | WiseModel

模型下载完成后解压,文件夹中内容如下图所示,即表示模型下载完整了
yuan2.0模型文件夹内容
这里需要记录一下模型所在文件夹的地址,上图中为/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模型测试
指定个主题试试:
yuan2.0-2B-Janus模型测试
根据官网发布的消息,新版的yuan2.0-2B-Janus-hf模型的代码能力也有显著提升,不妨趁机测试一下:
快排示例
再来几个测试用例:
在这里插入图片描述
可以看到,我们的几次测试中包含了多轮对话任务,新版模型的多轮对话模板在这里起了很好的效果,无论是给出的诗词主题修正还是排序算法的测试用例,都能够很好的保持上下文内容的一致性~另外不得不多说一句,FastChat测试大模型能力是真方便,用这个平台来做开源大模型能力横向测评是个不错的选择。

ok,以上就是本次的教程了,更多功能(langchain/兼容huggingface api/兼容OpenAI API),请查看源2.0官网和FastChat官网。用户可以使用这些高级功能,结合Yuan2.0的能力轻松实现自己的人工智能应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值