天翼云搭建AIGC开发环境综合教程

一、英伟达环境安装主要流程

1、下载安装对应系统版本nVidia驱动程序安装验证

2、CUDA开发套件安装验证

3、深度学习框架安装验证MiniConda3+PyTorch

4、容器化CUDA环境安装验证

5、cuDNN深度学习优化驱动安装+CNN训练验证

6、制作天翼云主机私有镜像

7、分享镜像给其他用户,实现天翼云A10显卡英伟达驱动环境共享

二、详细安装步骤

一)下载安装对应系统版本nVidia驱动程序安装验证

 wgethttps://cn.download.nvidia.com/tesla/535.129.03/nvidia-driver-local-repo-ubuntu2004-535.129.03_1.0-1_amd64.deb

 dpkg -i nvidia-driver-local-repo-ubuntu2004-535.129.03_1.0-1_amd64.deb

apt-get install nvidia-driver-535

测试显卡,检查显卡是否正确安装

nvidia-smi

这个命令会显示 NVIDIA A10 显卡的状态和驱动程序版本,如图所示当前的版本是535.129.03,cuda版本为12.2,GPU型号为nvidia A10,显存有24G

2) CUDA开发套件安装验证

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin

mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600

wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb

dpkg -i cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb

cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/

apt-get update

apt-get -y install cuda

设置环境变量

.bashrc 文件中设置环境变量:

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
 

验证安装效果

nvcc --version

3)深度学习框架安装验证 PyTorch

下载安装miniconda3

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh 

更改pip安装源到国内,你懂的
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/

访问 PyTorch 的 官方安装向导,选择合适的配置获取安装命令。通常,您需要选择操作系统、包管理器(在这里是 Pip)、Python 版本、CUDA 版本(这应该与您安装的 CUDA 版本匹配)

pip install torch torchvision torchaudio

运行一些简单的测试来确认 PyTorch 是否正确安装,并且是否能够使用 CUDA

vi test.py

import torch

# 打印 PyTorch 版本
print(torch.__version__)

# 确认 PyTorch 是否能检测到 CUDA
print(torch.cuda.is_available())

# 打印 CUDA 版本
print(torch.version.cuda)

# 获取默认 CUDA 设备的名称
print(torch.cuda.get_device_name(0))
 

如果 torch.cuda.is_available() 返回 True 并且 CUDA 版本正确无误,那么 PyTorch 就已经成功安装,并且配置为使用您的 NVIDIA GPU。

 每次在新的终端会话中工作时,如果您创建了 Python 虚拟环境,您需要先激活虚拟环境(使用 source pytorch-env/bin/activate

4)容器化CUDA环境安装验证

第一步:docker安装

sudo apt update sudo apt install apt-transport-https ca-certificates

curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

sudo apt update

sudo apt install docker-ce

第二步:安装nVidia支持

安装 NVIDIA Container Toolkit,这允许 Docker 使用 GPU:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update sudo apt install nvidia-docker2

第三步重启docker,验证安装

systemctl restart docker

docker run --rm --gpus all nvidia/cuda:12.0.1-base-ubuntu20.04 nvidia-smi

第四步使用docker运行PyTorch容器

 sudo docker run --rm --gpus all -it pytorch/pytorch:latest

这将启动一个 PyTorch 容器,并分配所有可用的 GPU。

第五步测试构建自己的Docker镜像

FROM nvidia/cuda:12.0.1-base-ubuntu20.04

# 安装Python和Pip
RUN apt update && apt install -y python3 python3-pip

# 安装PyTorch
RUN pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu110

# 设置工作目录
WORKDIR /workspace

# 当容器启动时运行一个 shell
CMD ["/bin/bash"]
sudo docker build -t my-pytorch-image .

创建一个新的 Docker 镜像,名为 my-pytorch-image,其中包含了 PyTorch 和它的依赖。

5)cuDNN深度学习优化驱动安装

第一步到nVidia官网注册下载cuDNN离线安装包,并上传至云服务器

第二步安装离线包

 dpkg -i cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb 
 cp /var/cudnn-local-repo-ubuntu2004-8.9.7.29/cudnn-local-30472A84-keyring.gpg /usr/share/keyrings/

apt update

第三步查找对应的cuda版本

apt-cache madison libcudnn8

第四步 安装cudnn

apt install libcudnn8=8.9.7.29-1+cuda12.2
apt install libcudnn8-dev=8.9.7.29-1+cuda12.2
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

验证安装。

第五步 使用 PyTorch 来训练一个简单的 CNN 模型,框架在后台自动使用 cuDNN 来加速运算。

import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
import torchvision
import torchvision.transforms as transforms

# 定义一个简单的 CNN 模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
        self.fc1 = nn.Linear(320, 50)
        self.fc2 = nn.Linear(50, 10)

    def forward(self, x):
        x = F.relu(F.max_pool2d(self.conv1(x), 2))
        x = F.relu(F.max_pool2d(self.conv2(x), 2))
        x = x.view(-1, 320)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return F.log_softmax(x, dim=1)

# 设置 PyTorch 以使用 GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# 初始化模型、优化器和损失函数
net = Net().to(device)
optimizer = optim.SGD(net.parameters(), lr=0.01, momentum=0.5)
criterion = nn.CrossEntropyLoss()

# 加载数据集(在这里使用 MNIST)
train_loader = torch.utils.data.DataLoader(
    torchvision.datasets.MNIST(
        './data', train=True, download=True,
        transform=transforms.Compose([
            transforms.ToTensor(),
            transforms.Normalize((0.1307,), (0.3081,))
        ])),
    batch_size=64, shuffle=True)

# 训练模型
def train(epoch):
    net.train()
    for batch_idx, (data, target) in enumerate(train_loader):
        data, target = data.to(device), target.to(device)
        optimizer.zero_grad()
        output = net(data)
        loss = criterion(output, target)
        loss.backward()
        optimizer.step()
        if batch_idx % 10 == 0:
            print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
                epoch, batch_idx * len(data), len(train_loader.dataset),
                100. * batch_idx / len(train_loader), loss.item()))

train(1) # 训练 1 个 epoch
PyTorch 示例中加载的 MNIST 数据集是一个经典的用于手写数字识别的数据集,由 60,000 个训练图像和 10,000 个测试图像组成。

  • 当运行 PyTorch 示例中的 torchvision.datasets.MNIST 函数时,它会自动检查指定的文件夹(在示例中是 './data')。
  • 如果数据集尚未下载,PyTorch 会自动从互联网下载数据集。
  • 数据集被下载后,PyTorch 会自动加载数据,使其准备好用于训练或测试。

自动下载数据集

 

训练CNN网络速度非常快,训练速度: 显著的速度提升通常表明 GPU 正在被有效利用。 

6)制作天翼云主机私有镜像

第一步先停机

第二步制作镜像 

 

7)分享镜像给其他用户,实现天翼云A10显卡英伟达驱动环境共享

第一步选择需要共享的镜像名称

第二步输入天翼云接受者邮箱,也就是租户登录的账号

第三步登录接受者天翼云账号,在镜像服务中,选择接受私有共享镜像

第四步用这个镜像来创建GPU云主机即可。 

三、经验总结

1、天翼云与友商在智算方面存在服务差距,友商在这种场景会根据GPU型号自动适配合适的英伟达驱动与智算运行环境给客户 

2、天翼云销售GPU云主机必须要自己服务能力跟上,补齐暂时还不能对齐友商的服务能力。

3、本文提供的思路可以扩展到其他GPU服务器上。

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

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

相关文章

File-一个IO流中至关重要的类

File类 概述:文件和目录路径名的抽象表示,File 对象就代表一个路径 对与File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来要通过具体的操作把这个路径的内容…

k8s的yaml文件中的kind类型都有哪些?(详述版Part1/2)

目录 综述 分块详述 1、Pod 2、Deployment 3、Service 4、DaemonSet 5、ReplicaSet 6、ServiceAccount 7、PodDisruptionBudget 8、PersistentVolumeClaim 9、PersistentVolume 10、Job 11、CronJob 12、StatefulSet 综述 通过yaml文件中的kind可以大致了解kube…

DevicData-D-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?

尊敬的读者: 在网络犯罪的阴影下,勒索病毒成为数字时代的重要威胁之一。DevicData-D-XXXXXXXX 勒索病毒作为其中的一种变体,以其高度隐蔽性和破坏性而备受关注。本文将深入介绍 DevicData-D-XXXXXXXX 勒索病毒的特征、数据恢复方法以及预防策…

xxljob分布式调度平台

分布式调度平台 XXL-JOB 极简入门 https://segmentfault.com/a/1190000041674725xxl-job-core 模块:XXL-JOB 核心。后续我们在编写执行器时,会引入该模块。 xxl-job-admin 模块:调度中心。 xxl-job-executor-samples 模块:提供了…

Python print()函数高级用法和 len()函数详解:获取字符串长度或字节数

Python print()函数高级用法 我们使用 print() 函数时,都只输出了一个变量,但实际上 print() 函数完全可以同时输出多个变量,而且它具有更多丰富的功能。 print() 函数的详细语法格式如下: print (value,...,sep,end\n,filesys.s…

Python高级用法:上下文

上下文 上下文的实现一般可以通过装饰器或者上下文管理器实现,装饰器确保函数可以运行在正确的上下文中,或者在函数前后运行一些代码。 上下文装饰器 当一个数据项需要在多个线程之间共享时,就要用一个锁来保护它避免多次访问。这个锁可以…

如何使用 Jmeter 进行压力测试?

准备测试计划:在 JMeter 中创建一个新的测试计划(Test Plan)。添加线程组:在测试计划中添加一个线程组(Thread Group),用于模拟并发用户。右键点击测试计划 -> 添加 -> Threads (Users) -…

Turn.js 实现翻书效果

接到了任务,要把孩子画的画放到网页上去,翻页效果还要逼真一点。搜索到了turn.js这个前端翻页组件,效果不错。先上图看效果。 网页实际效果:星月夜诗集 turn.js的官网地址:Turn.js: The page flip effect in HTML5 …

机械臂 关节电机选型计算

电机的关键参数 电机的三个关键参数:额定功率,额定扭矩,额定转速。这个大家都比较清楚,对应关系公式,可以直接搜索出来。这里还需要特别声明一点,就是电机的转速-扭矩曲线。这里的前提是对应不同的额定电压…

XDOJ173.购票系统

标题 购票系统 类别 综合 时间限制 1S 内存限制 256Kb 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。 假设一节车厢有20排、每一排5个座位。为方便起见,我们用1到100来给所有的座位编号&a…

华为OD机试真题-机器人仓库搬砖-2023年OD统一考试(C卷)

题目描述: 机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第i堆砖中有bricks[i]块砖头,要求在8小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格每小时补充一次且能量格只在这一个小时有效,为使得机器人损…

高校电力能耗监测精细化管理系统,提升能源利用效率的利器

电力是高校不可离开的重要能源,为学校相关管理人员提供在线用能查询统计等服务。通过对学校照明用电、空调用电等数据的采集、监控、分析,为学校电能管理制定合理的能源政策提供参考。同时,也可以培养学生的节能意识,学校后勤电力…

[MySQL]视图索引以及连接查询案列

目录 1.视图 1.1视图是什么 1.2视图的作用 1.3操作 1.3.1创建视图 1.3.2视图的修改 1.3.3删除视图 1.3.4查看视图 2.索引 2.1什么是索引 2.2为什么要使用索引 2.3索引的优缺点 2.3.1优点 2.3.2缺点 2.4索引的分类 3.连接查询案列 4.思维导图 1.视图 1.1视图是什么 视图…

【AI视野·今日Robot 机器人论文速览 第六十九期】Wed, 3 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Wed, 3 Jan 2024 Totally 5 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers NID-SLAM: Neural Implicit Representation-based RGB-D SLAM in dynamic environments Authors Ziheng Xu, Jianwei Niu, Qingf…

计算机原理 (2) CPU的诞生 输入 输出 PC指针

文章目录 计算机的前世今生计算机的三个根本性基础1. 计算机是执行输入、运算、输出的机器;2.程序是指令和数据的集合;3.计算机的处理方式有时与人们的思维习惯不同 二、结论三、参考资料交个朋友 计算机的前世今生 上一篇文章最终结束的时候谈到希望给…

Filter Options in Select Field

Filter Options in Select Field 假设有两个下拉字段State和City。邦有两个值卡纳塔克邦和马哈拉施特拉邦,城市有四个值,班加罗尔,迈索尔,孟买和浦那。如果希望根据State中选择的值过滤City中的选项,可以编写如下所示的…

SpringBoot pom.xml文件标签含义

Pom文件 基本构成 通过最简单的一个SpringBoot项目的 Pom文件来了解一下Pom文件的基本构成 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XML…

【强力推荐】GitCode AI开源搜索,面向开发者的专业AI搜索

一、GitCode AI开源搜索是什么&#xff1f; GitCode AI开源搜索 是面开发者的 AI 开源搜索工具&#xff0c;目的是为了帮助开发者快速寻找开源项目代码、解决开发问题和快速寻找答案&#xff0c;帮助开发者提升效率的同时利用代码仓托管能力建立自己个人知识库。 二、GitCode…

秋招复习之堆

目录 前言 堆 堆的常用操作 堆的实现&#xff08;大根堆&#xff09; 1. 堆的存储与表示 2. 访问堆顶元素 3. 元素入堆 4. 堆顶元素出堆 Top-k 问题 方法一&#xff1a;遍历选择 方法二&#xff1a;排序 方法三&#xff1a;堆 总结 前言 秋招复习之堆。 堆 「堆 heap…

Apache Camel笔记

Apache Camel笔记 1. Apache Camel概念 Apache Camel是一个轻量级的应用集成开发框架&#xff0c;专注于简化集成应用的开发。它基于Enterprise Integration Patterns&#xff08;企业集成模式&#xff0c;简称EIP&#xff09;的设计理念&#xff0c;提供了灵活的路由和中介机制…