当前位置: 首页 > news >正文

内网环境使用Docker部署Qwen2模型-vLLM篇

在此之前,我们已成功利用Docker与Ollama框架,在内网环境中部署了Qwen2模型。下面我们再来看一下使用Docker与vLLM框架部署Qwen2模型。

准备vLLM镜像

在一台具备网络环境的机器上执行以下命令,拉取vLLM的镜像:

# 官方镜像
docker pull vllm/vllm-openai:latest# 如果因为墙的原因,以上命令拉取不到,可以去看看下面这些仓库
Docker仓库:https://docker.1panel.live ✅网友自建
Docker仓库:https://docker.agsv.top  ✅网友自建
Docker仓库:https://docker.agsvpt.work  ✅网友自建
Docker仓库:https://dockerpull.com ✅网友自建
Docker仓库:https://dockerproxy.cn ✅网友自建

下载Qwen2-7B-Instruct模型

我这里下载的是Qwen2-7B-Instruct-GPTQ-Int4的模型。下载地址:

https://huggingface.co/Qwen/Qwen2-7B-Instruct-GPTQ-Int4

编写Dockerfile

我们将Qwen2模型打包上传到服务器,然后编写Dockerfile:

# 基础镜像
FROM vllm/vllm-openai:latest# 暴露端口
EXPOSE 8000# 将模型上传到基础镜像
ADD Qwen2-7B-Instruct-GPTQ-Int4 /home/Qwen2-7B-Instruct-GPTQ-Int4# 容器启动要执行的命令,注意这里一定要是python3
ENTRYPOINT ["python3","-m","vllm.entrypoints.openai.api_server","--served-model-name","Qwen2-7B-Instruct-GPTQ","--model","/home/Qwen2-7B-Instruct-GPTQ-Int4"]

构建镜像

执行docker build命令,构建docker镜像:

docker build -t vllm_qwen2_7b:1.0 -f Dockerfile .

启动容器

执行以下命令,启动docker容器:

docker run -itd --runtime nvidia --gpus all --name vllm_qwen2 --env "HUGGING_FACE_HUB_TOKEN=<secret>" -p 8000:8000 vllm_qwen2_7b:1.0 --max-model-len 8129

经过启动、测试,模型运行没问题。

然后,我们就可以将镜像导出,提供给内网环境使用了:

# 镜像导出
docker save -o vllm_qwen2.tar vllm_qwen2_7b:1.0
# 镜像导入
docker load -i vllm_qwen2.tar

问题解决

问题1、No CUDA GPUs are available

解决方法:

(1)检查是否正确安装了CUDA驱动,执行nvidia-smi可查看。

(2)docker run命令中没有添加--runtime nvidia --gpus all。

问题2:unknown or invalid runtime name: nvidia

解决方法:

当Docker容器需要使用GPU时,需要配置Docker的default-runtimenvidia,然后重启Docker。

{"runtimes":{
"nvidia":{
"path":"nvidia-container-runtime",
"runtimeArgs":[]
}
},
"default-runtime":"nvidia"
}

 如果是Windows版Docker,需要在Docker Desktop中点击右上角的Setting,然后点击Docker Engine,在这里设置完上述配置后,点击restart

 

问题3、Try increasing gpu_memory_utilization or decreasing max_model_len when initializing the engine.

解决方法:

因为GPU内存限制而需要调整模型的最大序列长度。在docker run命令最后加--max-model-len限制。

--max-model-len 8129

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AI在医学领域:MIL回归用于前列腺癌复发预测
  • RAID 阵列详解:从基础到实际应用
  • Unity下如何播放8K超高分辨率的RTMP流?
  • 深度学习-01 Pytorch
  • LLM大模型学习:探索LLM的精髓-理解Prompts概念与LangChain快速应用技巧”
  • 服务器断电,Centos7启动报错
  • SprinBoot+Vue应急信息管理系统的设计与实现
  • CNN模型手写数字识别及其相关概念
  • 一个全面、先进、公平且模块化的开源RAG框架
  • 【JVM】JVM栈帧中的动态链接 与 Java的面向对象特性--多态
  • SOMEIP_ETS_098: SD_ClientService_subscribe_without_method_call
  • [数据集][目标检测]轮胎缺陷检测数据集VOC+YOLO格式2154张4类别
  • go基础知识归纳总结
  • 【ARM compiler】生成ELF文件中包含了那些内容
  • Mertens定理(级数乘法)
  • Angular 2 DI - IoC DI - 1
  • Apache的80端口被占用以及访问时报错403
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Java 多线程编程之:notify 和 wait 用法
  • Java-详解HashMap
  • Linux各目录及每个目录的详细介绍
  • OSS Web直传 (文件图片)
  • PHP 小技巧
  • scala基础语法(二)
  • vue的全局变量和全局拦截请求器
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 创建一种深思熟虑的文化
  • 翻译--Thinking in React
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 前端相关框架总和
  • 前端性能优化--懒加载和预加载
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 学习使用ExpressJS 4.0中的新Router
  • Android开发者必备:推荐一款助力开发的开源APP
  • C# - 为值类型重定义相等性
  • ​业务双活的数据切换思路设计(下)
  • ‌JavaScript 数据类型转换
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (k8s)Kubernetes本地存储接入
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (第一天)包装对象、作用域、创建对象
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (三)mysql_MYSQL(三)
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (转)http-server应用
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .apk文件,IIS不支持下载解决
  • .a文件和.so文件
  • .Mobi域名介绍
  • .net core 外观者设计模式 实现,多种支付选择
  • .net中调用windows performance记录性能信息