1、创建镜像所在文件夹和Dockerfile文件
(1)mkdir qwenrepo
(2)cd qwenrepo
(3)touch Dockerfile
2、在Dockerfile文件中写入指令
输入以下命令,
vim ./Dokcerfile
进入文本查看状态,按字母i切换进入编辑状态,输入以下内容:
#Version 1.0
#FROM 命令是指定基础镜像,这里用ubuntu系统。
FROM ubuntu
# 这里要替换 your_name 为您的名字, 和your_email 为您的Email
MAINTAINER hollisyao <hollisyao@qq.com>
#设置root用户为后续命令的执行者
USER root
#执行操作,命令是在镜像内部执行,可以使用&&拼接命令。
#RUN yum update -y
#RUN yum install -y java
#RUN touch test.txt && echo "abc" >>abc.txt
#对外暴露端口
#EXPOSE 80 8080 1038
#添加网络文件
#ADD https://www.baidu.com/img/bd_logo1.png /opt/
#设置环境变量
#ENV WEBAPP_PORT=9090
#设置工作目录
#WORKDIR /opt/
#设置启动命令
#ENTRYPOINT ["ls"]
#设置启动参数,启动运行CMD括号里面的命令
CMD ["/bin/bash"]
#设置卷
#VOLUME ["/data", "/var/www"]
按“esc”键之后,输入:wq,保存退出。
3、创建镜像
在 Dockerfile
文件所在目录执行下面的命令,用来创建镜像。
docker build -t hollisyao/qwenrepo:v1 .
docker build 是docker创建镜像的命令
-t 是标识新建的镜像属于 hollisyao,仓库的名称是qwenrepo
:v1 是tag
"."是用来指明我们使用的Dockerfile文件是在当前目录,前面有个空格
4、从镜像创建容器
输入以下命令
docker run -t -i hollisyao/qwenrepo:v1 /bin/bash
进入容器的命令行模式,输入
cat /etc/issue
查看容器ubuntu系统版本,我的显示为:
Ubuntu 22.04.3 LTS \n \l
5、制作依赖项,安装python3.10
这个操作系统没有sudo,需要安装
apt-get update
apt-get install sudo
ubuntu默认安装了2.7,需要安装python3.10
sudo apt update sudo apt install python3.10 -y
安装完成后,验证是否安装成功
python3.10 --version
如果你需要将python 3.10设置运行默认的python版本,/usr/bin/
是Linux PATH环境变量默认搜索路径。因此仅需要将python3.10的可执行二进制文件软链接到/usr/bin/python
文件就可以将python 3.10设置为默认版本。
运行命令
sudo ln -sf /usr/bin/python3.10 /usr/bin/python
创建符号链接,-s
选项是创建软链接,-f
选项是强制。
这样后续可以直接输入python,而不用输入python3.10了。
6、安装curl、wget、pip3
安装wget
sudo apt-get install wget -y
安装curl
sudo apt install curl -y
ubuntu默认安装了pip2,安装pip3
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py
python get-pip.py
用以下命令确认pip3版本
pip3 --version
7、安装pytorch
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
8、安装git和lfs用于下载大模型
sudo apt install git -y
sudo apt-get install git-lfs
验证安装是否成功
git --version
git lfs env
lfs 环境报错,再运行以下命令修复问题。
执行git init 会生成 /lfs/objects/、/lfs/tmp/目录。运行 git lfs install 一次,为你的系统初始化后,当你克隆包含 Git LFS 内容的仓库时,Git LFS 将自动进行自我引导启用。
git init //解决上述问题:Error: Failed to call git rev-parse --git-dir: exit status 128
git lfs install
--Install Git LFS configuration.
这时候再运行命令验证安装是否成功,再没有报错了。
git lfs env
9、安装依赖组件transformers等
安装依赖组件
sudo apt-get install python3-dev
pip3 install transformers==4.32.0 accelerate tiktoken einops scipy transformers_stream_generator==0.0.4 peft deepspeed
推荐安装flash-attention
库(也可以不装,当前已支持flash attention 2),以实现更高的效率和更低的显存占用。建议使用CUDA 11.4及以上(GPU用户、flash-attention用户等需考虑此选项)
git clone https://github.com/Dao-AILab/flash-attention
cd flash-attention && pip3 install .
# 下方安装可选,安装可能比较缓慢。
pip3 install csrc/layer_norm
pip3 install csrc/rotary
10、下载源代码和预训练模型
下载通义千问7B大模型的源代码
#下载7b的源代码
git clone https://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@github.com/QwenLM/Qwen-7B.git qwen-7b-source
查看当前目录,确认存在qwen-7b-source文件夹。
ls -l
进入目录qwen-7b-source,安装依赖组件
cd qwen-7b-source
# 安装依赖
pip install -r requirements.txt
# 安装 web_demo 依赖
pip install -r requirements_web_demo.txt
启动 web_demo 快速体验(过程中会自动下载预训练模型,非常大会很慢)
# 通过参数 --server-port 指定端口号,默认为 8000
# 通过参数 --server-name 指定服务地址,默认为 127.0.0.1
# 如果是用 cpu 跑的话,可以加上参数 --cpu-only
# 如果想生成一个用于公网访问的 url,可以加上参数 --share
python web_demo.py --server-port 8087 --server-name "0.0.0.0"
启动类 openai api 形式的接口
有个必要的依赖库需要先安装 pip3 install sse_starlette
,然后就可以启动了
# 通过参数 --server-port 指定端口号,默认为 8000
# 通过参数 --server-name 指定服务地址,默认为 127.0.0.1
# 如果是用 cpu 跑的话,可以加上参数 --cpu-only
python openai_api.py --server-port 8086 --server-name "0.0.0.0"
服务启动正常之后,就可以使用 openai 的客户端使用了,比如 chatbox、opencat 等等。