大模型镜像打包实战:CodeGeeX2为例

资源地址

docker torch镜像地址
CodeGeeX2 github

构建思路

查看CodeGeeX2项目,官方已经提供好启动脚本,配置好各种依赖应该就可以运行。

python ./demo/run_demo.pyusage: run_demo.py [-h] [--model-path MODEL_PATH] [--example-path EXAMPLE_PATH] [--quantize QUANTIZE][--chatglm-cpp] [--fastllm] [--n-gpus N_GPUS] [--gpu GPU] [--cpu] [--auth] [--username yourname][--password yourpassword][--port PORT] [--listen ADDRESS]# 若要启用身份验证,请先启用--auth,然后定义--username与--password,如:
python run_demo.py --auth --username user --password password  # 若要监听所有地址请指定 --listen 0.0.0.0

镜像Dockerfile

写一个启动脚本bin/start.sh,判断是否启用身份验证,也可以在Dockerfile最后的CMD直接执行python脚本,sh bin/start.sh这样写更标准。

#!/usr/bin/env bashif [[ $USERNAME != "" ]] && [[ $PASSWORD != "" ]]
thenpython /workspace/CodeGeeX2/demo/run_demo.py \--listen $LISTEN --port $PORT \--model-path $MODEL_PATH  \--gpu $GPU \--n-gpus $N_GPUS \$CHATGLM \--auth \--username $USERNAME \--password $PASSWORD
elsepython /workspace/CodeGeeX2/demo/run_demo.py \--listen $LISTEN --port $PORT \--model-path $MODEL_PATH  \--gpu $GPU \--n-gpus $N_GPUS \$CHATGLM
fi
FROM pytorch/pytorch:2.1.2-cuda11.8-cudnn8-runtimeRUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \&& pip install fire zmq sentencepiece gradio accelerate transformers==4.33.2 modelscope chatglm-cpp cpm_kernels tabulate \&& mkdir /workspace \&& cd /workspace# 网好的同学直接拉远程的项目
# RUN git clone https://github.com/THUDM/CodeGeeX2.git# 网不好可以先拉倒本地,然后用下面目录copy到指定路径
COPY CodeGeeX2 /workspace/CodeGeeX2/
# 原项目使用huggingface模型,此处使用的是国内modelscope仓库,代码中transformers的导包都需要改为modelscope,也可以上huggingface上拉倒本地,改成本地路径
COPY modelscope /root/.cache/modelscope/ENV LISTEN=0.0.0.0
ENV PORT=7860
ENV MODEL_PATH=ZhipuAI/codegeex2-6b
ENV GPU=0
ENV N_GPUS=1
ENV CHATGLM=--chatglm-cpp
CMD sh /workspace/CodeGeeX2/bin/start.sh

执行命令构建镜像:docker build -t codegeex:v1 .
命令执行通过后查看此镜像ID,执行下面命令:
docker run -d --runtime=nvidia -p 7860:7860 --name pytorch2.0 -v /tmp:/tmp 镜像ID
访问localhost:7860查看是否成功

bug解决方案

如果有我未遇到的bug欢迎提问,一起解决问题总结在此处

  • NameError: name 'round_up' is not defined
    当指定 --quantize 4 时出现,File "/root/.cache/huggingface/modules/transformers_modules/codegeex2-6b/quantization.py", line 78, in compress_int4_weight可以看到这个python是在拉模型权重中的一个文件,名字就知道是做量化的代码,from cpm_kernels.kernels.base import LazyKernelCModule, KernelFunction, round_up,进入文件后找到导入的语句,显然应该是缺少cpm_kernels包或者包版本不一致没有round_up函数,pip install cpm_kernels适合的版本即可。或者直接使用官方已经提供好的量化模型,就可以不做--quantize 4指定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/639849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络学习The next day

在计算机网络first day中,我们了解了计算机网络这个科目要学习什么,因特网的概述,三种信息交换方式等,在今天,我们就来一起学习一下计算机网络的定义和分类,以及计算机网络中常见的几个性能指标。 废话不多…

yarn集群datanode无法启动问题排查

一、问题场景 hdfs无法访问,通过jps命令查看进程,发现namenode启动成功,但是所有datanode都没有启动,重启集群(start-dfs.sh)后仍然一样 二、原因分析 先看下启动的日志有无报错。打开Hadoop的日志目录 …

C#,入门教程(24)——类索引器(this)的基础知识

上一篇: C#,入门教程(23)——数据类型转换的一点基础知识https://blog.csdn.net/beijinghorn/article/details/124187182 工业软件首先要求高可靠性、高可维护性。 作为工业软件的开发者,我们对语言重载的需求是:“不可或缺”。 …

创建数组(数组基本方法)

组相同类型数据的集合 java中数组特点: 1.数组在内存中是连续分配的 2.在创建数组时,要指明数组的长度 3.访问数组,通过索引,从0开始,到数组长度-1 功能: 1.插入:向索引位置插入一个元素&#…

Gitee Reward让开源作者不再为爱发电

一、什么是Gitee Reward? Gitee Reward是Gitee为改善开源开发生命周期提出的新策略。开源项目的支持者们可以更轻松地为其喜爱的项目提供资金,贡献者们也可以因为其不懈的开源贡献得到奖励。 二、Gitee Reward上允许哪些类型的项目? 允许任…

stable diffuison的安装和使用

stable diffuison的安装和使用 简单介绍 Stable Diffusion是一个深度学习文本到图像的生成模型,它可以根据文本描述生成详细的图像。这个模型主要应用于文本生成图像的场景中,通过给定的文本提示词,模型会输出一张与提示词相匹配的图片。 S…

Cadence——布局部分相关教程

本文章基于【凡亿】Cadence Allegro 17.4零基础入门66讲PCB Layout设计实战加个人理解写出 (一)中英文切换 注意:只是将选项卡部分切换中文 1,设置中文 a,打开PCB Editor 17.4以后,点击Help和About b,可以看到与下…

服务器或服务器主板中的BIOS更新详解

BIOS更新总共有三种方式:DOS、UEFI Shell以及BMC网页更新,而其中,DOS与Shell的更新方式类似,因此以下为统一描述。 一、UEFI Shell或DOS下更新 当我们下载了官网的BIOS更新包并解压后可以获得一些更新文件,在更新文件…

舞动微服务的安全舞伴:服务熔断与服务降级的精妙演绎

目录 引言 1、服务熔断:避免连锁反应的舞姿 1.1 什么是服务熔断? 1.2服务熔断的工作原理 场景:支付服务的重要性 1. 监控支付服务 2. 设定阈值 3. 熔断器状态 4. 触发熔断 5. 定时检测 6. 自动恢复 1.3解析 2、服务降级&#xf…

Python基础第七篇(Python的文件操作)

文章目录 一、文件编码二、文件的读取操作1.操作代码2.读出结果 三、文件的写出操作1.源代码2.读出结果 四、文件的追加操作1.源代码2.读出结果 这篇文章旨在深入浅出地介绍Python在文件操作上的能力,包括文件的编码、读取和写入等基本操作。内容丰富、易于理解&…

Homicide+Reports1980-2014连环凶案数据,CSV格式

这个数据集提供了关于谋杀案件的详细信息,包括涉及的机构、受害者和肇事者的信息,以及犯罪的其他细节。下面是每个字段的详细解释: Record ID: 记录的唯一标识符。Agency Code: 执行机构的代码。Agency Name: 执行机构的名称。Agency Type: …

公网环境调试本地配置的Java支付宝沙箱环境模拟支付场景

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境…

java SSM项目预算生成管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM项目预算生成管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的 源代码和数据库,系统主…

浅析Java虚拟机中的ZGC

引言 为什么需要垃圾回收(Garbage Collection) 垃圾回收是Java开发中的关键机制,负责自动管理内存,防止内存泄漏,提高开发效率和应用程序的稳定性。 Java中主要的垃圾回收方法 标记-清除算法(Mark and …

盘点好用内容合规监测工具

网页敏感内容监测 Web Purify 由 WebPurify 提供,这是一个专门从事内容审核和过滤服务的公司。 核心功能 ● 文本审核:加强脏话过滤,标记仇恨言论、偏执、性挑逗等 ● 图片审核:让个人资料照片、社交应用程序、产品定制远离令…

python windows和linux 文件同步

在Python中,可以使用paramiko库来实现Windows和Linux之间的文件同步。paramiko是一个用于SSH连接的Python库,可以用于在Windows和Linux之间进行文件传输。 以下是一个简单的示例代码,演示如何使用paramiko库在Windows和Linux之间同步文件&am…

20.【TypeScript 教程】类型别名

TypeScript 类型别名 本节介绍的类型别名,就是通过关键字 type 给类型起个别名,类型别名较多应用于联合类型、交叉类型这种复合类型。 1. 解释 类型别名会给类型起个新名字。类型别名有时和接口很像,但是可以作用于原始值,联合类…

暴力破解常见的服务器

目录 使用 pydictor 生成自己的字典工具liunx下载使用常用的参数说明插件型字典 (可自己根据 API 文档开发) 使用 hydra 工具在线破解系统用户密码使用 hydra 破解 windows 7 远程桌面密码使用 hydra 工具破解 ssh 服务 root 用户密码 使用 Medusa 工具在线破解medusa参数说明M…

web搭建和nfs

一、web服务器搭建 1、基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# vim /etc/nginx/conf.d/openlab.conf server {listen…

jquery学习-1

jquery学习-1 1.jquery类似的框架 MooTools 对比反应时间2.Jquery Api jquery api中文文档 jquery注重的是看文档 3.Jquery下载和导入(压缩版) Jquery 下载 下载后导入项目中进行使用 <!DOCTYPE html> <html><head><meta charset"utf-8"…