1.网页AI智能助理插件

在当今数字化飞速发展的时代,智能技术正不断重塑着我们与信息交互的方式。本次比赛中,我们开发乐一款独特的网页智能助理插件。通过利用通义千问大模型的强大能力与Intel G8i丰富的算力资源硬件,打造一个能够在网页环境中高效服务用户的AI智能助手。我们期望它能够突破传统界限,在不影响用户原有网站的使用体验下,为用户带来更智能、更便捷、更个性化的网络体验,开启网页智能服务的新篇章。

2. 开发环境

2.1 英特尔至强可扩展处理器G8i云环境

PAI-DSW(Data Science Workshop)是为算法开发者量身打造的一站式AI开发平台,集成了JupyterLab、WebIDE、Terminal多种云端开发环境,提供代码编写、调试及运行的沉浸式体验。提供丰富的异构计算资源,预置多种开源框架的镜像,实现开箱即用的高效开发模式。

2.2大模型

Qwen2 - 7B 是 Qwen2 系列模型中非常重要的一部分,它从属于阿里通义千问这个极具影响力的项目。Qwen2 系列模型涵盖了多种不同尺寸的预训练模型以及指令微调模型。在这个系列中,Qwen2 - 7B 作为其中的一个典型模型,有着独特的地位。这一系列模型之所以发布,主要是为了能够给广大用户提供不同规模、不同能力层级的语言处理模型,这样就可以充分满足不同用户在不同场景、不同应用领域等方面多样化的需求,无论是在简单的文本处理还是在复杂的智能语言交互等方面都能有所涉及。

2.3部署环境要求

操作系统版本:ubuntu22.04

Cuda版本:cuda12.1.0 Python版本:py310 torch版本:2.3.0

3. 开发步骤

3.1 购买G8i云环境

打开阿里云ECS工作台https://ecs.console.aliyun.com/home

image-20240911000401166

点击购买,选择规格为Intel Xeon(Emerald Rapids) Platinum 8575C/Intel Xeon(Sapphire Rapids) Platinum 8475B

image-20240911002741310

其余操作根据自身实际需求填写,确认下单 image-20240911002846100

image-20240911003617870

3.2 部署开发环境

使用Finalshell远程登录主机 image-20240911003248728

在云服务器ECS上安装Docker,可使用阿里云提供的Docker镜像源快速部署。

  1. 登录ECS管理控制台,找到目标ECS实例,单击实例ID,进入实例详情页。

  2. 选择定时与自动化任务 > 安装/卸载扩展程序 > 安装扩展程序。

image-20240911003810877

等待安装完成

image-20240911003854745

运行Intel xFasterTransformer容器。

  • xFasterTransformer 是 Intel 官方开源的推理框架,专门为英特尔的 x86 平台,尤其是英特尔至强处理器进行了深度优化。能充分利用英特尔处理器的硬件特性,如高级矩阵扩展(AMX)等加速器,大幅提升运算效率。相比通用的推理框架,在英特尔硬件上能发挥出更出色的性能,为用户提供更高的推理速度和更低的延迟。
sudo docker pull registry.openanolis.cn/openanolis/xfastertransformer:1.7.3-23
sudo docker run -it --name xFT -h xFT --privileged --shm-size=16g --network host -v /mnt:/mnt -w /mnt/xFasterTransformer registry.openanolis.cn/openanolis/xfastertransformer:1.7.3-23

image-20240911004035274

image-20240911004432848

安装依赖

  • 在传统的 Git 版本控制系统中,当存储大型文件(如音频、视频、大型数据集等)时,会导致 Git 仓库变得非常庞大,克隆、拉取和推送操作会变得缓慢。Git LFS 通过将大型文件替换为文本指针,将实际的文件内容存储在 Git 仓库之外的远程存储(如 LFS 服务器)中,从而有效地解决了这个问题。
  • tmux 是一个终端复用器(Terminal Multiplexer),它允许在一个终端窗口中创建和管理多个终端会话。
# 在容器中安装依赖软件
yum update -y
yum install -y wget git git-lfs vim tmux

image-20240911004608184

# 启用Git LFS
git lfs install

image-20240911004706765

创建模型所在目录

mkdir -p /model/data
cd /model/data

image-20240911004836165

创建tmux session

tmux

下载Qwen-7B-Chat

git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat.git /model/data/qwen

image-20240911005043209

模型数据是HuggingFace格式,需要转换成xFasterTransformer格式。生成的模型文件夹为/model/data/qwen-xft。

python -c 'import xfastertransformer as xft; xft.QwenConvert().convert("/model/data/qwen")'c

3.3 构建千问模型

在容器中安装依赖

cd /root/xFasterTransformer/examples/web_demo
pip install -r requirements.txt

image-20240911014840546

启动WebUI

OMP_NUM_THREADS=$(($(lscpu | grep "^CPU(s):" | awk '{print $NF}') / 2)) GRADIO_SERVER_NAME="0.0.0.0" numactl -C $(seq -s, 0 2 $(($(lscpu | grep "^CPU(s):" | awk '{print $NF}') - 2))) -m 0 python Qwen.py -t /model/data/qwen -m /model/data/qwen-xft -d bf16

image-20240911020503341

3.4 应用构建

使用API形式进行部署 image-20240911022501325

在nginx中配置反向代理

如果后端服务器只支持 HTTP 协议,而需要为客户端提供 HTTPS 加密访问时,Nginx 可以在反向代理过程中进行协议转换。Nginx 接收客户端的 HTTPS 请求,解密后以 HTTP 协议将请求转发给后端服务器,后端服务器返回响应后,Nginx 再将响应加密以 HTTPS 协议返回给客户端。

image-20240911022548094

在前端页面调用

image-20240911022830625

展示效果如下

image-20240911023234716

image-20240911023156058

效果图如下

image-20240912003844861