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

AI系列1-1: 离线部署通义大模型及持续修正-RedHat+NVIDA GPU

[题记]2025/6/21-6/22 两天辛苦的成果 ,有的是靠回忆写的,欢迎指正

1.环境基础

   Redhat

        查看redhat版本

         cat /etc/redhat-release     7.9 Maipo

  docker和docker compose安装

参考

https://zhuanlan.zhihu.com/p/14648196830

docker下载地址

https://download.docker.com/linux/static/stable/x86_64/

docker-compose下载地址

https://github.com/docker/compose/releases/tag/v2.37.1

安装过程

考虑到很多公司禁止使用知乎,再复制一下

(1)将docker-26.0.0.tgz压缩包与docker-compose-linux-x86_64上传到 /tmp 目录下

(2)解压docker-26.0.0.tgz压缩包并复制到/usr/bin/路径

tar -zxvf docker-*.tgzsudo cp docker/* /usr/bin/

(3)对docker-compose-linux-x86_64文件重命名并添加可执行权限

mv docker-compose-* docker-composechmod +x docker-compose

(4)将docker-compose复制到/usr/bin并查看版本

sudo cp docker-compose /usr/bin/docker-compose version

(5)创建docker.service文件

cd /etc/systemd/system/touch docker.service

文件内容

[Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comAfter=network-online.target firewalld.serviceWants=network-online.target[Service]Type=notify# the default is not to use systemd for cgroups because the delegate issues still# exists and systemd currently does not support the cgroup feature set required# for containers run by dockerExecStart=/usr/bin/dockerdExecReload=/bin/kill -s HUP $MAINPID# Having non-zero Limit*s causes performance problems due to accounting overhead# in the kernel. We recommend using cgroups to do container-local accounting.LimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinity# Uncomment TasksMax if your systemd version supports it.# Only systemd 226 and above support this version.#TasksMax=infinity
TimeoutStartSec=0# set delegate yes so that systemd does not reset the cgroups of docker containersDelegate=yes# kill only the docker process, not all processes in the cgroupKillMode=process# restart the docker process if it exits prematurelyRestart=on-failureStartLimitBurst=3StartLimitInterval=60s[Install]WantedBy=multi-user.target

(7)添加可执行权限并加载

sudo chmod +x /etc/systemd/system/docker.servicesudo systemctl daemon-reload 

(8)启动docker并查看状态

sudo systemctl start dockersudo systemctl status docker

(9)设置开机启动并查看版本

sudo systemctl enable docker.servicedocker -v

安装NVIDIA Container Toolkit

NVIDIA 驱动版本确认---非必须

        运行 nvidia-smi --query-gpu=name,driver_version --format=csv 检查NVIDIA 驱动版本。

      -----我的是525

     NVIDIA 驱动版本 525(R525)NVIDIA Container Toolkit 的版本之间没有严格的绑定关系,但需要确保驱动版本和 Toolkit 的 CUDA 版本兼容。

  • NVIDIA 驱动 525 支持 CUDA 12.0 及以下版本(如 CUDA 11.8、11.7 等)。

   nvidia-smi    查看是12

离线安装包准备

  • Debian/Ubuntu:使用 .deb 包。

  • RHEL/CentOS:使用 .rpm 包。

  • 系统架构:通常为 x86_64(64位)

1)在联网的 RHEL/CentOS  7.9机器上添加 NVIDIA 仓库:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo

2)安装 yumdownloader 工具

sudo yum install -y yum-utils

创建个文件夹存放

mkdir -p ~/nvidia-container-toolkit-offline
cd ~/nvidia-container-toolkit-offline

3)下载 .rpm 包及其依赖 

sudo yumdownloader --resolve --destdir . nvidia-container-toolkit

    安装

    1).rpm

    cd /tmp/nvidia-container-toolkit-offline
    sudo yum localinstall -y *.rpm

    注意可能会报错:

    error:Failed dependencies:

               libseccomp.so.2()(64bit) is needed by 

    注意这个不用额外去下载,因为一般redhat自带,只是默认没有安装

    sudo  yum install  libseccomp  即可一般都是大于 2版本的

    验证

    //第一行不知道需不需要
    sudo nvidia-ctk runtime configure --runtime=docker
    sudo systemctl restart docker


    新建nvidia-container-toolkit.repo文件

    文件名称:nvidia-container-toolkit.repo
    内容:

        

    [nvidia-container-toolkit]
    name=nvidia-container-toolkit
    baseurl=https://nvidia.github.io/libnvidia-container/stable/rpm/$basearch
    repo_gpgcheck=1
    gpgcheck=0
    enabled=1
    gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt[nvidia-container-toolkit-experimental]
    name=nvidia-container-toolkit-experimental
    baseurl=https://nvidia.github.io/libnvidia-container/experimental/rpm/$basearch
    repo_gpgcheck=1
    gpgcheck=0
    enabled=0
    gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    

    需要放置到:

        /etc/yum.repos.d/

    要是没有权限,可以使用  sudo vim

    可选:sudo dnf-config-manager --enable nvidia-container-toolkit-experimental

    把nvidia配置给docker

    前提是已经完成上面3步

    sudo nvidia-ctk runtime configure --runtime=docker

    sudo systemctl restart docker

    参照

    https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installation

    最终验证

    下载unbuntu镜像验证

    在有网的环境:

             docker pull ubuntu:latest

              docker save -o ubuntu_latest.tar ubuntu:latest

              将生成的 ubuntu_latest.tar 文件拷贝到目标离线机器上

               docker load -i ubuntu_latest.tar

    验证语句

    sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

    输出类似于

    报错

       could not select device driver "" with capabilities:: [gpu]

    是NVIDIA Container Toolkit没有安装好

      再次确认是不是这几个文件,我的下载分享里面有

    再次执行  sudo yum localinstall -y *.rpm

    可选

    可选:设置默认 runtime 为 nvidia(可选)
    编辑 /etc/docker/daemon.json(创建文件如果不存在):{"default-runtime": "nvidia","runtimes": {"nvidia": {"path": "/usr/bin/nvidia-container-runtime","runtimeArgs": []}}
    }

    报错

    1.注册nvidia  真人认证报错

    Validator failed to load, please check your browser settings, such as ad blockers.

    需要使用ipv4

    2.Ollama安装

    在线下载

    docker pull ollama/ollama:latest

    docker save -o ollama_latest.tar ollama/ollama:latest     下载不到的留言给我

    本地docker home验证

     

    上传到离线电脑,进入存放tar文件的目录

     sudo docker load -i ollama_latest.tar

          docker run -d -v ollama:/root/.ollama -p 11434:11434 ollama/ollama:latest

    -v ollama:/root/.ollama: 将名为 ollama 的 Docker 卷挂载到容器内部的 /root/.ollama 路径。这意味着任何写入容器内该路径的数据都会被存储在 Docker 卷 ollama 中,从而允许数据持久化并可在其他容器中使用

    拷贝出来到windows 桌面

    3.千问

    下载qianwen14

     我是进入本地docker home的docker 内部执行 :

           ollama pull qwen:14b

    将下载的千问模型导出到本地

    linux:     docker cp ollama:/root/.ollama/models /path/to/local/directory

    因为我是用windows上的docker home下载的,所以运行cmd并输入以下内容就可以拷贝到桌面

    docker cp boring_ride:/root/.ollama/models C:/Users/%USERNAME%/Desktop/ollama_models

     下载完成后的文件夹

     上传到远程计算机

    把容器外的文件copy到容器内root/.ollama/models目录下

    1)copy manifests文件夹 到容器内: 注意没有双引号

        sudo docker  cp  xxx/manifests/  容器ID:/root/.ollama/models/

    2)同理copy blobs文件夹

       如果想进到容器去看,可以sudo docker exec -it   dockerID   /bin/sh

        可以用ls查看文件夹找到root文件夹,进入root文件夹可以用 ls  -la  看到.llama这种隐藏式文件夹

    3)重启docker服务:

    4)验证:   在宿主机内执行:   curl http://localhost:11434/api/tags

         会输出 models信息即安装成功,注意记下model 名称

    postman调用

    POST     http://ip:11434/api/generate

                   选择Body json

                    参数

                          {

                          "models": "qwen:14b",

                          "prompt":  "请描述量子力学"

                          }

    http://www.lqws.cn/news/524863.html

    相关文章:

  1. Java课后习题(编程题)
  2. SpringBoot高校党务系统
  3. 激光雷达全链路光学系统及探测器能量耦合分析
  4. python的少数民族音乐网站系统
  5. request这个包中,get 这个方法里传入的是params ,post这个方法里传入的是data 和 json。这个区别是什么?
  6. HarmonyOS5 如何性能优化?
  7. Vue Devtools “Open in Editor” 配置教程(适用于 VSCode 等主流编辑器)
  8. PyTorch RNN实战:快速上手教程
  9. 笔记03:布线-过孔的调用与添加
  10. 求助deepsee 生成语法树代码
  11. matlab机器人工具箱(Robotics Toolbox)安装及使用
  12. 使用node的mysql模块操作MySQL数据库
  13. 多传感器标定简介
  14. Linux驱动学习day7
  15. 【kubernetes】--Service
  16. C# LINQ语法
  17. Redis—持久化
  18. 使用亮数据网页抓取API自动获取Tiktok数据
  19. C++包管理工具:conan2使用教程
  20. 网络安全技术期末考试
  21. 专题:2025医疗AI应用研究报告|附200+份报告PDF汇总下载
  22. 多个 Job 并发运行时共享配置文件导致上下文污染,固化 Jenkins Job 上下文
  23. QUdpScoket 组播实现及其中的踩坑点记录
  24. 【DevTools浏览器开发者工具反调试之无限Debugger跳过】
  25. 如何防止自己的电脑被控制?开启二次验证保护教程
  26. 强化学习理论基础:从Q-learning到PPO的算法演进(1)
  27. [日志收集]
  28. 刷题 | 牛客 - js中等题-下 (更ing)45/54知识点解答
  29. 深度学习实战112-基于大模型Qwen+RAG+推荐算法的作业互评管理系统设计与实现
  30. Java期末复习题(二)