本文主要是介绍DCU服务器基于Docker开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
DCU服务器使用说明
基本信息
海光CPU
cat /proc/cpuinfoprocessor : 127
vendor_id : HygonGenuine
cpu family : 24
model : 2
model name : Hygon C86 7381 32-core Processor
stepping : 2
microcode : 0x80901047
cpu MHz : 2490.922
cache size : 512 KB
physical id : 1
siblings : 64
core id : 31
cpu cores : 32
曙光DCU
rocm相关命令
rocm-smi相当于nvidia-smi
[root@dcu0 /]# roc
rocfft_rtc_helper rocm_agent_enumerator rocm-bandwidth-test rocminfo rocm-smi rocm_smi.py rocm-smi.sh[root@dcu0 /]# rocm-smi==========================System Management Interface ==========================
================================================================================
DCU Temp AvgPwr Fan Perf PwrCap VRAM% DCU%
0 30.0c 39.0W 0.0% auto 280.0W 0% 0%
1 30.0c 41.0W 0.0% auto 280.0W 0% 0%
2 30.0c 38.0W 0.0% auto 280.0W 0% 0%
3 31.0c 39.0W 0.0% auto 280.0W 0% 0%
4 31.0c 41.0W 0.0% auto 280.0W 0% 0%
5 29.0c 38.0W 0.0% auto 280.0W 0% 0%
6 30.0c 39.0W 0.0% auto 280.0W 0% 0%
7 29.0c 38.0W 0.0% auto 280.0W 0% 0%
================================================================================
=================================End of SMI Log=================================
操作系统
银河麒麟 V10SP3
[root@dcu0 /]# cat /proc/version
Linux version 4.19.90-52.26.v2207.ky10.x86_64 (KYLINSOFT@localhost.localdomain) (gcc version 7.3.0 (GCC)) #1 SMP Mon Jul 3 16:52:50 CST 2023
应用软件
Docker
Docker数据目录 /apps/docker
Docker内网源已配置
Python
系统自带Python3.7.9,不使用,自构建镜像
内网Pypi源配置
-
widows C:/用户目录/pip/pip.ini
-
linux ~/.pip/pip.conf
[global]
index-url=http://10.160.8.81:8081/repository/pypi-group/simple
trusted-host=10.160.8.81
在服务器上使用DCU显卡
支持调用显卡的Python库
- Pytorch1.1
- PaddlePaddle2.5.0
docker image list | grep -E 'paddle|pytorch'
image.sourcefind.cn:5000/dcu/admin/base/paddlepaddle 2.5.0-ubuntu20.04-dtk-23.04-py38-latest 215c1adc490a 18 hours ago 11.9GB
image.sourcefind.cn:5000/dcu/admin/base/paddlepaddle 2.4.2-ubuntu20.04-dtk-23.04-py38-latest b9a73c180d74 2 months ago 10.4GB
image.sourcefind.cn:5000/dcu/admin/base/pytorch 1.10.0-ubuntu20.04-dtk-23.04-py38-latest 124ff31e5a8d 2 months ago 11.2GB
2.4.2-ubuntu20.04-dtk-23.04-py38-latest
有BUG
使用到pytorch和paddlepaddle则需要在厂家提供的基础镜像上构建自己的镜像
本地远程连接服务器开发
本地新建项目
配置python解释器,仅用于pycharm代码提示补全
配置远程连接
Tools, Deployment, Configuration
SSH和SFTP连接
配置本地工作目录映射的服务器目录
选择Mappings
,配置本地工作目录映射的服务器目录
服务器工作目录在/soft
,建议在此目录下以自己姓名新建文件夹
设置服务器忽略目录
工作目录下的python虚拟环境venv
不会被上传到服务器
配置自动上传
点击项目根目录,点击Tools Deployment Automatic Upload
手动点击一次Upload to
,上传到服务器,检查是否上传成功
每次本地目录发生变化,会自动同步到服务器
编写Dockerfile
以运行chatgml2
为例,构建需要的镜像
FROM image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-ubuntu20.04-dtk-23.04-py38-latest
LABEL authors="HuangChunFeng"# 工作目录
WORKDIR /root# 镜像内配置pypi源
RUN mkdir -p /root/.pip && \echo '[global]\nindex-url=http://10.160.8.81:8081/repository/pypi-group/simple\ntrusted-host=10.160.8.81' > /root/.pip/pip.conf# 安装python库,容器已自带pytorch1.10.0
RUN pip3 install fastapi uvicorn transformers sentencepiece
构建镜像
点击Tools Start SSH Session
,ssh到服务器,cd到对应目录,构建镜像
Last login: Tue Aug 29 09:46:49 2023 from 10.160.73.71
[root@dcu0 ~]# cd /soft/huangchunfeng/projects/chatglm2-demo/
[root@dcu0 chatglm2-demo]# docker build -f ./Dockerfile -t hcf/chatglm2-demo .
本地安装和镜像中相同的依赖
仅用于pycharm代码提示,包版本尽量与容器中一致
编写代码
main.py
"""
@author: hcf
@time: 2023/8/29 10:14
"""
from fastapi import FastAPI, Body
from pydantic import BaseModel
from typing_extensions import Annotated
from transformers import AutoTokenizer, AutoModel# docker run 指定的模型文件挂载路径
model_path = '/chatglm2-6b'
# 加载模型
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True, device='cuda')
model = model.eval()# web api
app = FastAPI()class ChatCompletionPayload(BaseModel):question: strstream: bool = Falseclass ChatCompletionView(BaseModel):response: str@app.post('/v1/chat/completion')
async def chat(payload: Annotated[ChatCompletionPayload, Body()]):response, _ = model.chat(tokenizer, payload.question)return ChatCompletionView(response=response)
编写启动脚本
#!/bin/bashcur_dir=$(cd "$(dirname $0)"; pwd)
# 测试时使用-it --rm参数
docker run -it --rm --name dcu-chatglm2-demo \
`# 容器网络配置` \
--ipc=host --network host \
`# 容器内使用DCU必备参数,需要使用DCU复制即可` \
--device=/dev/kfd --device=/dev/dri --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --shm-size=16G --group-add 39 \
`# 挂载工作目录` \
-v $cur_dir:/root \
`# 挂在模型文件` \
-v /soft/chatglm2-6b-boot/THUDM/chatglm2-6b:/chatglm2-6b \
hcf/chatglm2-demo \
`# 启动命令,需要激活env.sh环境变量` \
bash -c "source /opt/dtk/cuda/env.sh && uvicorn main:app --host 0.0.0.0 --port 8000"
启动容器
此时服务器对应目录下有3个文件
# 可执行权限
[root@dcu0 chatglm2-demo]# chmod +x ./startup.sh
[root@dcu0 chatglm2-demo]# ./startup.sh ______ ____________ ____ ________ __/ __ \ \/ /_ __/ __ \/ __ \/ ____/ / / // /_/ /\ / / / / / / / /_/ / / / /_/ / / ____/ / / / / / /_/ / _, _/ /___/ __ /
/_/ /_/ /_/ \____/_/ |_|\____/_/ /_/ DTK version 23.04
pytorch version 1.10.0
8 DCU were detected in the container.
NOTE: Make sure the user is in the video group.
For more information, please go to https://developer.hpccube.com/
Loading checkpoint shards: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:07<00:00, 1.02s/it]
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
测试接口
可使用Postman,ApiPost等其他工具
直接在pycharm中New HTTP Request
测试结果
可使用Postman,ApiPost等其他工具
直接在pycharm中New HTTP Request
这篇关于DCU服务器基于Docker开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!