基于GPU的deepseek容器镜像制作与使用

1镜像制作

基于GPU的deepseek大模型docker镜像,是在基于KOS的docker镜像的基础上,在容器镜像中安装cuda,并将大模型运行在容器镜像中。下面是基于GPU的容器镜像的制作过程。

图1.1 整体架构

软硬件环境

本次使用的软硬件环境如下:

机型:NF5466G7

操作系统:Keyarchos5.8 SP2

内存:256G

磁盘空间:4T

GPU型号及显存:NVIDIA T4 16G * 4

Ollama: 0.5.7

第一步: 创建容器镜像

创建的基础镜像是KOS5.8sp2的docker镜像,下载链接:http://kos.ieisystem.com/kos-isos/kos_docker/KeyarchOS-5.8-SP2-U1-x86_64-docker-20241211.tar,通过DockerFile进行创建。

DockerFile内容如下:

# 使用本地镜像作为基础镜像

FROM keyarchos:5.8sp2u1

COPY ollama-linux-amd64.tgz /ollama-linux-amd64.tgz

RUN dnf -y install tar

RUN cd / && tar xvf ollama-linux-amd64.tgz -C /root && cp -r /root/bin/* /bin && cp -r /root/lib/* /lib && rm -rf ollama-linux-amd64.tgz /root/*

#安装cuda

COPY cuda-rhel8.repo /etc/yum.repos.d/

RUN dnf install -y cuda-toolkit-12-3

ENV PATH=/usr/local/cuda/bin:$PATH

ENV LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

#

COPY deepseek-r1:7b.* /

#文件下载链接:#http://kos.ieisystem.com/kos-isos/kos_docker/deepseek-r1_7b.gguf

#http://kos.ieisystem.com/kos-isos/kos_docker/deepseek-r1_7b.mf

# 设置环境变量

ENV OLLAMA_HOST=0.0.0.0:11434

# 映射容器内的端口到主机的端口(例如:容器内端口 14144 映射到主机端口 14144)

EXPOSE 11434

COPY start-7b.sh /start-7b.sh

RUN chmod +x /start-7b.sh

CMD ["/start-7b.sh"]

Dockerfile文件下载链接:

http://kos.ieisystem.com/kos-isos/kos_docker/docker_gpu/Dockerfile

创建进行执行命令:docker build -t deepseek-kos-7b .

图1.2 创建镜像

第二步:导出构建的image,命令如下:

将第一步制作的镜像导出来。需要联外网,/etc/yum.repos.d下需配置DockerFile中的源(cuda-rhel8.repo)。

cuda-rhel8.repo文件下载链接: http://kos.ieisystem.com/kos-isos/kos_docker/cuda-rhel8.repo

执行命令:

docker save -o deepseek-kos-7b.tar deepseek-kos-7b:latest

第三步:加载docker镜像

导出的镜像是tar格式,docker可以进行加载。命令如下:

Docker load -i deepseek-kos-7b.tar

图1.3 加载镜像

第四步:启动docker容器

启动的时候需要指定宿主机与容器映射的位置:

执行:docker run -d -p 11333:11434 -v /home/7b:/ollama --gpus all --name dpks7b deepseek-kos-7b:latest

0c040ed64109554c6009dc89636dc6151f1098e62bd47546da7ad457eef031c8

图1.4 启动镜像

上图中-p 11333:11434是将容器内的11434端口映射成11333,可以通过宿主机访问容器中的大模型。

第五步:进入容器

执行命令 :

docker exec -it 0c040ed64109554c6009dc89636dc6151f1098e62bd47546da7ad457eef031c8 bash

图1.5 进入容器

第六步:启动镜像

为了启动大模型,进入容器,执行命令 : sh /start_7b.sh

进入/ollama下 执行 sh start-7b.sh

注:

start_7b.sh 文件下载链接:http://kos.ieisystem.com/kos-isos/kos_docker/start_cpu/start-7b.sh

如下图所示:

图1.6 启动容器镜像

进入容器后,通过脚本一键实现模型创建和启动等操作。

2 Docker镜像测试

第一节启动容器镜像后,配置chatbox之后(如图2.2),使用大模型始终GPU使用显示:

图2.1 大模型启用前

配置了容器大模型提供的端口:

图2.2 端口配置

图2.3启动大模型

GPU使用情况显示:

图2.4 GPU使用状态

3常见问题

1、创建镜像过程中,空间不够,因为docker默认安装在/var目录下,

解决方法:需要更换docker的位置或者清理docker。

如:docker system prune -a -f --volumes

2、启动的时候名称不可重复

图3.1 冲突截图

说明已经存在相同名称的镜像在运行。

解决方法:修改容器的名称后再启动。

### 部署DeepSeek大模型于AMD GPU环境 #### 环境准备基础依赖 为了在AMD GPU环境下成功部署DeepSeek大模型,首先需要完成必要的软件和驱动安装。以下是具体的操作指导: 1. **安装Ollama框架** 使用官方提供的脚本来快速部署Ollama框架。对于Linux系统(如Ubuntu),可以通过以下命令完成安装: ```bash sudo snap install ollama ``` 对于Windows用户,则需额外设置`OLLAMA_HOST=0.0.0.0`以允许远程访问。 2. **驱动程序适配** AMD显卡需要支持ROCm框架才能充分利用GPU加速功能。确保已安装最新版的ROCm驱动以及相关工具链。例如,在Ubuntu上可通过以下命令安装ROCm: ```bash wget https://repo.radeon.com/rocm/apt/debian/rocm-gpg-key.pub && \ sudo apt-key add rocm-gpg-key.pub && \ echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/debian focal main' | sudo tee /etc/apt/sources.list.d/rocm.list && \ sudo apt update && sudo apt install rocm-dkms hipify-clang ``` 3. **验证并调整库文件** 如果遇到特定问题(如性能瓶颈或兼容性错误),可能需要手动替换某些动态链接库文件。例如,更新`rocblas.dll`或其他核心组件至更稳定版本[^2]。 --- #### 容器化部署流程 为简化管理和提高可移植性,推荐采用Docker容器技术封装整个运行环境。以下是构建镜像的关键步骤: 1. 创建一个新的Dockerfile定义所需的基础镜像及相关配置项; 示例代码如下所示: ```dockerfile FROM ubuntu:20.04 RUN apt-get update && apt-get install -y --no-install-recommends \ curl gnupg software-properties-common ca-certificates lsb-release # 添加ROCM仓库源地址 RUN echo "deb [trusted=yes arch=$(dpkg --print-architecture)] http://repo.radeon.com/rocm/apt/focal $(lsb_release -cs) main" > /etc/apt/sources.list.d/rocm-focal-main.list # 更新包索引表并预装必要组件 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ rocm-dev rocm-opencl rocm-smi-lib miopen-hip python3-pip git build-essential WORKDIR /app/ COPY . . CMD ["ollama", "run"] ``` 2. 构建完成后即可利用该定制化的镜像启动服务实例; 执行下面这条指令来生成最终产物: ```bash docker build -t deepseek-amd-env . docker run -it --rm --device=/dev/kfd --device=/dev/dri --group-add video -e LD_LIBRARY_PATH=/opt/rocm/lib:/usr/local/cuda/lib64:$LD_LIBRARY_PATH -v $PWD/models:/models deepseek-amd-env bash ``` --- #### 性能优化建议 针对AMD平台上的DeepSeek应用,可以从以下几个方面着手改进整体表现水平: 1. **混合计算模式** 结合CPUGPU共同分担运算负载能够显著降低延迟时间同时提升吞吐量。参考文档中提到的方法调整参数设定使得两者之间达到最佳平衡状态[^2]。 2. **数据布局重组** 修改输入张量存储方式从而减少访存次数进而加快处理速度。尝试使用Tiled Matrix Layout代替传统Row-Major Order形式可能会带来意想不到的效果。 3. **异步执行机制引入** 实现多任务并发操作有助于掩盖I/O等待期间造成的闲置周期浪费现象。借助Stream API或者Task Queue等方式组织流水线结构设计思路。 4. **编译选项微调** 根据实际硬件特性重新审视现有Makefile里的Flags列表内容是否存在进一步挖掘潜力空间的可能性。适当增加FMA指令利用率或是关闭不必要的Debug Information记录等功能开关均有可能取得不错收益。 ```python import torch def optimize_model(model, device='cuda'): model.to(device) with torch.no_grad(): for param in model.parameters(): if isinstance(param.data, torch.Tensor): param.data = param.data.contiguous().half() # 半精度浮点数转换 return model ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值