关于通义千问
我是通义千问,是阿里巴巴达摩院自主研发的超大规模语言模型,也能够回答问题、创作文字,还能表达观点、撰写代码。我的目标是为用户提供优质的自然语言处理服务,满足他们在不同场景下的需求。
我的技术团队在自然语言处理领域进行了长期研究和积累,拥有一系列领先的技术和算法。我基于大量的训练数据,能够理解和生成高质量的文本,包括文章、故事、诗歌、故事等。我的回答通常包含多个句子和段落,旨在提供全面和详细的回答。
除了回答问题,我还可以根据用户的需求,帮助他们创作文字,如写故事、写公文、写邮件等。我能够根据用户的输入,自动分析文本的结构和语义,生成相应的文本内容。这在一些需要快速生成大量文本的场景中非常有用,例如新闻报道、产品描述、广告文案等。
此外,我还能够表达观点和撰写代码。我的团队为我开发了一系列工具和接口,使我可以轻松地与其他应用程序和系统集成。我还可以根据用户的输入,生成相应的代码片段或完整的代码,这在一些需要快速编写代码的场景中非常有用,例如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镜像二次开发。
准备模型缓存
目前通义千问已经开源,在 modelScope和 huggingFace上都可以直接下载使用,大约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
由于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
2、选择千问的容器镜像
容器配置 -> 选择容器镜像 -> 常用镜像->qwen-webui
如果是非杭州地域,直接填入镜像,效果是一样的。
registry.cn-hangzhou.aliyuncs.com/eci_open/qwen-webui
版本:1.0.0
3、挂载模型缓存进容器
4、打开公网(如果通过公网地址访问webui)
至此,通义千问就已经部署完成,通过ip:8888就可以访问界面了:
测试
附录
数据缓存系列分享(二):23秒完成从零开始搭建StableDiffusion