前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习筑基篇,容器调用显卡计算资源,Ubuntu 24.04 快速安装 NVIDIA Container Toolkit!

机器学习筑基篇,容器调用显卡计算资源,Ubuntu 24.04 快速安装 NVIDIA Container Toolkit!

作者头像
全栈工程师修炼指南
发布于 2024-07-16 07:51:39
发布于 2024-07-16 07:51:39
3.3K00
代码可运行
举报
运行总次数:0
代码可运行

Ubuntu 24.04 安装 NVIDIA Container Toolkit

什么是 NVIDIA Container Toolkit?

描述:NVIDIA Container Toolkit(容器工具包)使用户能够构建和运行 GPU 加速的容器,该工具包括一个容器运行时库和实用程序,用于自动配置容器以利用 NVIDIA GPU。

项目地址:https://github.com/NVIDIA/nvidia-container-toolkit

NVIDIA 容器工具包层级架构图:

weiyigeek.top-NVIDIA容器工具包层级架构图

温馨提示:nvidia-docker 项目已经被 NVIDIA Container Toolkit 所取代。

NVIDIA 容器支持的平台

Supported Linux distributions are listed below:

OS Name / Version

amd64 / x86_64

ppc64le

arm64 / aarch64

Amazon Linux 2023

√ 1

Amazon Linux 2

Open Suse/SLES 15.x

Debian Linux 10

Debian Linux 11

Centos 7

Centos 8

RHEL 7.x

RHEL 8.x

RHEL 9.x

Ubuntu 18.04

Ubuntu 20.04

Ubuntu 22.04

The arm64 / aarch64 architecture includes support for Tegra-based systems.

看友,关注作者一下,给我持续更新的动力吧!

安装 NVIDIA Container Toolkit

描述:此处以前面文章安装的 Ubuntu 24.04 TLS 操作系统以及离线安装docker的文章《运维Tips | 解决 Docker 安装源无法访问:Ubuntu 24.04 离线安装实践!》为基础,使用 apt 命令进行安装,当然也可以使用源码安装,当前稳定版本 v1.15.0, 随着时间推移你可以前往官网下载最新的包。

Step 1.配置nvidia-container-toolkit软件存储库,并从存储库更新软件包列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 为 apt 获取 HTTPS 支持
apt install apt-transport-https curl

# 添加 NVIDIA 软件存储库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 更新软件包列表
systemctl daemon-reload
sudo apt-get update

Step 2.安装 NVIDIA Container Toolkit:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 常规安装(由于是在github速度稍慢)
sudo apt-get install -y nvidia-container-toolkit

# 代理方式(科学上网)
sudo apt-get -o Acquire::http::proxy="http://10.10.10.12:10809/" install -y nvidia-container-toolkit

Step 3.配置 nvidia-container-runtime,注意在此之前你需要提前安装了受支持的容器引擎(Docker、Containerd、CRI-O、Podman)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ docker --version
  Docker version 27.0.3, build 7d4bcd8

$ containerd --version
  containerd containerd.io 1.7.18 ae71819c4f5e67bb4d5ae76a6b735f29cc25774e

# 使用 nvidia-ctk 命令修改主机上的 /etc/docker/daemon.json 文件
$ sudo nvidia-ctk runtime configure --runtime=docker
  # INFO[0000] Loading config from /etc/docker/daemon.json
  # INFO[0000] Wrote updated config to /etc/docker/daemon.json
  # INFO[0000] It is recommended that docker daemon be restarted.

# 新增配置:
"runtimes": {
  "nvidia": {
    "args": [],
    "path": "nvidia-container-runtime"
  }
},

weiyigeek.top-nvidia-container-runtime图

Step 4.配置完成后重载systemd以及重启Docker服务。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 服务重启
sudo systemctl daemon-reload
sudo systemctl restart containerd docker

# 验证运行时
docker info | grep "Runtimes"
  # Runtimes: io.containerd.runc.v2 nvidia runc

Step 5.安装和配置工具包并安装NVIDIA GPU驱动程序后,您可以通过运行示例工作负载来验证您的安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

weiyigeek.top-通过运行示例工作负载验证安装图

文档地址:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈工程师修炼指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
JavaScript——ES6模块化与异步编程高级用法
大家都遵守同样的模块化规范写代码,降低了沟通程表,极大方便了各个模块之间的相互调用,利人利己。
岳泽以
2022/10/26
7510
JavaScript——ES6模块化与异步编程高级用法
ES6的异步编程之Generator
异步编程对 JavaScript 语言太重要。JavaScript 只有一根线程,如果没有异步编程,根本没法用,非卡死不可。
javascript.shop
2019/09/04
5310
ES6的异步编程之Generator
Node.js异步编程(下)
如果异步API后面代码的执行依赖当前异步API的执行结果,但实际上后续代码在执行的时候异步API还没有返回结果,这个问题要怎么解决呢?
Qwe7
2022/04/23
7780
ES6新特性
由于ES6在一些低版本的浏览器上无法运行,需转成ES5之前的版本兼容,以下有几种方案可以自动转换
jinghong
2020/05/09
1K0
ES6新特性
Promise用法详解(一)
注意:上面new出来promise,只代表形式上的一个异步操作。就是说,我们只知道他是一个 异步操作,但做什么具体异步事情目前还不清楚。
全栈程序员站长
2022/07/04
3820
Promise用法详解(一)
nodejs(三)
必须在 package.json 的根节点中添加 "type": "module" 节点
且陶陶
2023/04/12
4520
nodejs(三)
【JS】236-JS 异步编程六种方案(原创)
我们知道Javascript语言的执行环境是"单线程"。也就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务。
pingan8787
2019/07/25
9860
【JS】236-JS 异步编程六种方案(原创)
《深入浅出Node.js》:Node异步编程解决方案 之 ES6 Promise
在上一篇讲了异步编程解决方案之一的事件发布-订阅模式,使用事件模式时,执行流程需要被预先设定。即便是分支,也需要预先设定,这是由发布-订阅模式的运行机制决定的。这个方法的灵活性比较受限,那是否有一种先执行异步调用,延迟传递处理的方式呢?在ES6发布之前,解决方案是Promise/Deferred模式,现在则推荐ES6官方提供的Promise。
前端_AWhile
2019/08/29
9280
async关键字
在异步函数内部使用return关键字进行结果返回 结果会被包裹的promise对象中 return关键字代替了resolve方法
Qwe7
2022/04/23
2750
异步发展流程-手摸手带你实现一个Promise
首先介绍一下高阶函数,即一个函数的参数是函数或者函数返回值为函数,此函数称做高阶函数。
Careteen
2022/02/14
9660
ES6的异步编程之async
异步操作是 JavaScript 编程的麻烦事,麻烦到一直有人提出各种各样的方案,试图解决这个问题。
javascript.shop
2019/09/04
4850
ES6的异步编程之async
ES6 Promise详解之缝合红宝书ES6标准入门
去年暑假的时候就学了Promise,最近在学node的时候又遇到了再复习一遍,写个博客缝合一波阮佬的ES6标准入门与红宝书中的内容,用我自己的白话给大家讲一下。
henu_Newxc03
2021/12/26
6590
Node.js异步编程
1. 同步API,异步API //路径拼接 const public = path.join(_ dirname, 'public') ; //通过返回值拿到 //请求地址解析 const url0bj = url. parse (req. ur1) ; //通过返回值拿到 //读取文件 fs. readFile(' ./demo.txt', 'utf8', (err, result) => { console .1og (result) ; }) ; //通过函数方式拿到 同步API:只有当前
清出于兰
2020/10/29
2K0
Node.js异步编程
day044:JS异步编程有哪些方案?为什么会出现这些方案?
关于 JS 单线程、EventLoop 以及异步 I/O 这些底层的特性,我们之前做过了详细的拆解,不在赘述。在探究了底层机制之后,我们还需要对代码的组织方式有所理解,这是离我们最日常开发最接近的部分,异步代码的组织方式直接决定了开发和维护的效率,其重要性也不可小觑。尽管底层机制没变,但异步代码的组织方式却随着 ES 标准的发展,一步步发生了巨大的变革。接着让我们来一探究竟吧!
用户3806669
2021/03/10
6770
从零开始写一个符合Promises/A+规范的promise
Promise 是异步编程的一种解决方案,比传统的解决方案回调函数和事件更合理更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。本篇不注重讲解promise的用法,关于用法,可以看阮一峰老师的ECMAScript 6系列里面的Promise部分:
桃翁
2019/10/23
1.1K0
从零开始写一个符合Promises/A+规范的promise
记两道关于事件循环的题
这里的关键其实是搞清楚 await async2() 做了什么事情。我以为在 async1 内部,async2 被调用之后,就会继续往后执行,因此是先打印 async1 end ,再回到主栈打印 start。然而 async2 里面包含了一个异步操作,在异步操作得到结果之前,其实是会跳出当前 async1 函数的执行栈,优先去执行同步任务的,所以这里其实会先执行 start,再去执行 async1 end。具体地说:
Chor
2020/05/18
4100
Promise解决回调嵌套问题及终极解决方案async 和 await
目的: promise是书写异步代码的另一种方式, 解决回调函数嵌套的问题 1.如何创建一个 promise 对象
青梅煮码
2023/03/02
2.4K0
js异步编程的三种模式
很容易可以看出,上述代码会依次输出1,2。因为代码是从上到下,依次执行,执行完f1(),才会执行f2()。但是如果f1()中的代码执行的是读取文件或者ajax操作呢,文件的读取都需要一定时间,难道我们需要完全等到文件完全读完再进行写操作么?为了解决这个问题,接下来我们来探究一下js中 同步和异步 的概念。
hellocoder2029
2022/09/28
8660
Node理论笔记:异步编程
在JavaScript中,函数是一等公民,使用非常自由,无论是调用它,或者作为参数,或者作为返回值均可。
Ashen
2020/06/01
1.1K0
JavaScript异步编程
平时开发经常会用到js异步编程,由于前端展示页面都是基于网络机顶盒(IPTV的一般性能不太好,OTT较好),目前公司主要采取的异步编程的方式有setTimeout、setInterval、requestAnimationFrame、ajax,为什么会用到异步呢,就拿业务来说,若前端全部采取同步的方式,那加载图片、生成dom、网络数据请求都会大大增加页面渲染时长。
Jack Chen
2018/09/14
9290
JavaScript异步编程
相关推荐
JavaScript——ES6模块化与异步编程高级用法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档