数据缓存系列分享(四):开源大语言模型通义千问快速体验

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 本文将分享如何通过阿里云ECI的数据缓存秒级搭建开源大语言模型通义千问。

关于通义千问

我是通义千问,是阿里巴巴达摩院自主研发的超大规模语言模型,也能够回答问题、创作文字,还能表达观点、撰写代码。我的目标是为用户提供优质的自然语言处理服务,满足他们在不同场景下的需求。

我的技术团队在自然语言处理领域进行了长期研究和积累,拥有一系列领先的技术和算法。我基于大量的训练数据,能够理解和生成高质量的文本,包括文章、故事、诗歌、故事等。我的回答通常包含多个句子和段落,旨在提供全面和详细的回答。

除了回答问题,我还可以根据用户的需求,帮助他们创作文字,如写故事、写公文、写邮件等。我能够根据用户的输入,自动分析文本的结构和语义,生成相应的文本内容。这在一些需要快速生成大量文本的场景中非常有用,例如新闻报道、产品描述、广告文案等。

此外,我还能够表达观点和撰写代码。我的团队为我开发了一系列工具和接口,使我可以轻松地与其他应用程序和系统集成。我还可以根据用户的输入,生成相应的代码片段或完整的代码,这在一些需要快速编写代码的场景中非常有用,例如Web开发、数据科学等。

总的来说,我是一个多用途的语言模型,能够满足不同场景下的需求。我的目标是为用户提供优质的自然语言处理服务,帮助他们更高效地完成工作和学习任务。

——原文摘自通义千问问答

准备运行环境

硬件要求:

CPU:无严格限制

内存:>16GB

GPU:>=1

显存:>16GB(通义千问比较吃显存,低于16GB会直接OOM无法使用,我们分配的显存是24GB偶尔也会OOM)

所有可选的GPU规格可以参考:企业级异构计算规格

本文使用的规格是 ecs.gn7i-c8g1.2xlarge

软件环境:

依赖的库和配置比较多,ECI已经制作好了一个公共容器镜像,且包含了一个基于Gradio的webui,可以开箱即用,registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui:1.0.0,推荐直接使用或者作为base镜像二次开发。



准备模型缓存

目前通义千问已经开源,在 modelScopehuggingFace上都可以直接下载使用,大约16GB,移步 控制台 创建模型缓存。

更多关于数据缓存的介绍可以参考:

openAPI:https://help.aliyun.com/document_detail/2391452.html

k8s API:https://help.aliyun.com/document_detail/2412299.html

控制台页面:

modelScope参考:

repoId: qwen/Qwen-7B-Chat

repoSource: ModelScope/Model

revision:v1.1.4

231b4d7f-9848-4cc7-8272-5de76cb4bad1.png


由于ECI已经针对这些模型源做了加速,所以缓存都是秒级创建完成。

部署ECI

1、使用ECI打包好的运行环境,并包含通义千问webui的容器镜像:registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui:1.0.0,镜像约为15GB,已经全网做了加速,可以秒级启动。

2、将通义千问的模型文件挂载进/data/model/目录,也可以通过env MODEL_DIR 自定义模型存放的目录。

3、由于启动后需要将模型加载进内存,所以为了提高加载速度,可以把缓存的burst能力打开,可以显著缩短应用启动时间。

4、开启公网访问能力,由于只需要访问8888端口,所以安全组规则只需要放开该端口即可。

k8s API用户参考:

{
"metadata": {
"annotations": {
"k8s.aliyun.com/eci-data-cache-bucket": "modelScope-model",
"k8s.aliyun.com/eci-data-cache-provisionedIops": "35000",
"k8s.aliyun.com/eci-data-cache-burstingEnabled": "true",
"k8s.aliyun.com/eci-with-eip": "true",
"k8s.aliyun.com/eci-use-specs": "ecs.gn7i-c8g1.2xlarge"        },
"name": "qwen-webui",
"namespace": "default"    },
"spec": {
"containers": [
            {
"args": [
"-c",
"python Qwen-7B/web_demo.py --server_port 8888"                ],
"command": [
"/bin/sh"                ],
"image": "registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui:1.0.0",
"imagePullPolicy": "IfNotPresent",
"name": "qwen-webui",
"resources": {
"requests": {
"nvidia.com/gpu": "1"                    }
                },
"volumeMounts": [
                    {
"mountPath": "/data/model/",
"name": "Qwen-7b-model"                    }
                ]
            }
        ],
"restartPolicy": "Never",
"volumes": [
            {
"hostPath": {
"path": "/models/modelScope-model/Qwen/Qwen-7B-Chat"                },
"name": "Qwen-7b-model"            }
        ]
    }
}


阿里云openAPI用户参考:

publicclassEciApi {
privateCreateContainerGroupResponsecreateEci() throwsClientException {
CreateContainerGroupRequestrequest=newCreateContainerGroupRequest();
request.setRegionId(RG);
request.setSecurityGroupId(getSg());
request.setVSwitchId(getVsw());
request.setContainerGroupName("qwen-webui");
request.setInstanceType("ecs.gn7i-c8g1.2xlarge");
request.setAutoCreateEip(true);
request.setDataCacheBucket("modelScope-model");
request.setDataCacheBurstingEnabled(true);
request.setDataCacheProvisionedIops(35000);
CreateContainerGroupRequest.Containercontainer=newCreateContainerGroupRequest.Container();
container.setName("qwen-webui");
container.setImage("registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui:1.0.0");
container.setGpu(1);
container.setCommands(Arrays.asList("/bin/sh"));
container.setArgs(Arrays.asList("-c", "python Qwen-7B/web_demo.py --server_port 8888"));
CreateContainerGroupRequest.Container.VolumeMountvolumeMount=newCreateContainerGroupRequest.Container.VolumeMount();
volumeMount.setName("Qwen-7b-model");
volumeMount.setMountPath("/data/model/");
container.setVolumeMounts(Arrays.asList(volumeMount));
request.setContainers(Arrays.asList(container));
CreateContainerGroupRequest.Volumevolume=newCreateContainerGroupRequest.Volume();
volume.setName("Qwen-7b-model");
volume.setType("HostPathVolume");
volume.setHostPathVolumePath("/models/modelScope-model/Qwen/Qwen-7B-Chat");
request.setVolumes(Arrays.asList(volume));
returnPopHelper.getAcsResponse(client, request);
    }
}

SDK版本

<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-eci --><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-eci</artifactId><version>1.4.4</version></dependency>


控制台用户参考:

进入ECI售卖页

1、选择gpu规格

ecs.gn7i-c8g1.2xlarge

1f4d738a-5346-4413-8109-11e16ee51c77.png


2、选择千问的容器镜像

容器配置 -> 选择容器镜像 -> 常用镜像->qwen-webui

如果是非杭州地域,直接填入镜像,效果是一样的。

registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui

版本:1.0.0

ed792ac7-faf2-49c4-84ef-17ae3d4edbf4.png



3、挂载模型缓存进容器

e7277f3c-0622-445e-9c9f-669a56548546.png



4、打开公网(如果通过公网地址访问webui)

da053f08-9b9e-4101-ae33-68ca46d979f2.png


至此,通义千问就已经部署完成,通过ip:8888就可以访问界面了:

573a1933-4072-4ce9-b46f-ee3b381aa388.png



测试

28543162-2778-4ccb-a6bf-53b999d5a41d.pngbbf6c51d-5d63-4518-9108-5da53cf2c955.png07ad1b90-d136-4db0-b97d-61d71a80e28d.pngeef392e4-db06-44cd-8e1c-49306afe4676.png2629ca3b-ada7-4898-8260-f017f3dda4f0.png


附录

数据缓存系列分享(一):打开大模型应用的另一种方式

数据缓存系列分享(二):23秒完成从零开始搭建StableDiffusion

数据缓存系列分享(三):通过 StableDiffusion 扩展插件实现网红爆款文字光影图

数据缓存系列分享(四):开源大语言模型通义千问快速体验

数据缓存系列分享(五):零代码搭建妙鸭相机

数据缓存系列分享(六):通义千问Qwen-14B大模型快速体验

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(一)
数据的存储--Redis缓存存储(一)
|
1月前
|
存储 缓存 NoSQL
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
数据的存储--Redis缓存存储(二)
|
2月前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
2815 19
|
22天前
|
存储 缓存 算法
分布式缓存有哪些常用的数据分片算法?
【10月更文挑战第25天】在实际应用中,需要根据具体的业务需求、数据特征以及系统的可扩展性要求等因素综合考虑,选择合适的数据分片算法,以实现分布式缓存的高效运行和数据的合理分布。
|
1月前
|
缓存 监控 前端开发
处理页面缓存中数据不一致的问题
【10月更文挑战第9天】
42 2
|
1月前
|
消息中间件 缓存 NoSQL
大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey
大数据-49 Redis 缓存问题中 穿透、雪崩、击穿、数据不一致、HotKey、BigKey
55 2
|
2月前
|
编解码 自然语言处理 机器人
通义千问Qwen2-VL开源,API可直接调用!
通义千问宣布开源第二代视觉语言模型Qwen2-VL,并推出2B、7B两个尺寸及其量化版本模型。同时,旗舰模型Qwen2-VL-72B的API已上线阿里云百炼平台,用户可直接调用。
1068 9
|
3月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
131 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
3月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
|
3月前
|
缓存 NoSQL 算法
【Azure Redis 缓存】Redis导出数据文件变小 / 在新的Redis复原后数据大小压缩近一倍问题分析
【Azure Redis 缓存】Redis导出数据文件变小 / 在新的Redis复原后数据大小压缩近一倍问题分析

热门文章

最新文章

下一篇
无影云桌面