GPU 内核 #

除了 Anaconda Notebook 的默认环境外,Anaconda 还提供对由 NVIDIA A10 GPU 提供支持的远程 GPU 内核的访问。这些内核非常适合复杂的计算密集型工作负载,否则这些工作负载在默认环境中运行会非常耗时。您可以选择在 GPU 上运行整个笔记本,也可以选择将 GPU 加速应用于特定单元。

什么是 GPU 内核?

Anaconda 的 GPU 内核运行一个名为“anaconda-01 - nvidia-a10”的支持 GPU 的环境。此环境包含与 NVIDIA GPU 通信所需的库、驱动程序和配置,以及ipykernel包在 Python 中启用交互式计算。有关默认环境中包含的所有包的列表,请参阅下文。

当您将 GPU 内核分配给笔记本(或笔记本单元)时,您将使用支持 GPU 的默认环境。有关内核和环境的更多信息,请参阅运行环境

分配 GPU 内核#

您可以使用几种方法将 GPU 内核分配给整个笔记本或单个单元:

  1. 打开 Launcher。

  2. Notebook 下,单击 Launch a Remote Kernel

  3. 在 Launch a Kernel 对话框中,打开 Environment 下拉列表并选择一个内核。

  4. 使用滑块或在文本框中键入数字,为内核会话预留时间(以分钟为单位)。

  5. 为您的内核分配一个名称或使用默认内核名称。

  6. 单击 Launch a Kernel(启动内核)。

  1. 在活动的笔记本中,单击右上角的内核。

  2. 如果您尚未启动远程内核,请选择 Connect to remote provider(连接到远程提供程序),然后按照 Launcher(启动器)选项卡中的步骤作。否则,请选择远程内核(默认内核名称为 “nvidia-a10”)。

  3. 在 Assign a Kernel 对话框中,确保在下拉列表中选择远程内核。

  4. 使用滑块或在文本框中键入数字,为内核会话预留时间(以分钟为单位)。

    警告

    不要将 Transfer variables(传输变量)开关切换为 On(开)。将切换开关切换到 On 会导致 Notebooks 崩溃。这是当前正在解决的已知问题。

  5. 单击 Assign

  1. 在活动单元中,单击 Assign a specific kernel to the cell

  2. 如果您尚未启动远程内核,请选择 Connect to remote provider(连接到远程提供程序),然后按照 Launcher(启动器)选项卡中的步骤作。否则,请继续执行下一步。

  3. 单击 Assign a Cell Kernel

  4. 选择 Environment (环境) 和 Kernel name (内核名称)。

  5. 单击 Assign from the Environment

单元格下方会显示一个绿色条,表示该单元格已成功连接到 GPU 内核。

使用 GPU 内核#

将 GPU 内核分配给笔记本或单元后,您可以像往常一样运行代码。您应该注意到处理速度显著提高,尤其是对于更复杂的任务。

Anaconda 的默认 GPU 内核“anaconda-01 - nvidia-a10”与支持 GPU 的只读环境相关联,其中包括最新的 Anaconda、AI 和 NVIDIA 软件包。

anaconda-01 中包含的软件包 - nvidia-a10

Package Name

Package Version

_libgcc_mutex

0.1

_openmp_mutex

4.5

accelerate

0.34.2

aiohappyeyeballs

2.4.0

aiohttp

3.10.5

aiosignal

1.3.1

alembic

1.13.1

altair

5.3.0

annotated-types

0.7.0

anyio

4.3.0

aom

3.8.2

archspec

0.2.3

argon2-cffi

23.1.0

argon2-cffi-bindings

21.2.0

arrow

1.3.0

asttokens

2.4.1

async-lru

2.0.4

async_generator

1.1

attrs

23.2.0

aws-c-auth

0.7.17

aws-c-cal

0.6.11

aws-c-common

0.9.15

aws-c-compression

0.2.18

aws-c-event-stream

0.4.2

aws-c-http

0.8.1

aws-c-io

0.14.7

aws-c-mqtt

0.10.3

aws-c-s3

0.5.7

aws-c-sdkutils

0.1.15

aws-checksums

0.1.18

aws-crt-cpp

0.26.6

aws-sdk-cpp

1.11.267

babel

2.14.0

beautifulsoup4

4.12.3

blas

2.122

blas-devel

3.9.0

bleach

6.1.0

blinker

1.7.0

blis

0.7.11

blosc

1.21.5

bokeh

3.4.1

boltons

24.0.0

bottleneck

1.3.8

brotli

1.1.0

brotli-bin

1.1.0

brotli-python

1.1.0

brunsli

0.1

bzip2

1.0.8

c-ares

1.28.1

c-blosc2

2.14.4

ca-certificates

2024.8.30

cached-property

1.5.2

cached_property

1.5.2

catalogue

2.0.10

certifi

2024.8.30

certipy

0.1.3

cffi

1.16.0

charls

2.4.2

charset-normalizer

3.3.2

click

8.1.7

cloudpathlib

0.19.0

cloudpickle

3.0.0

colorama

0.4.6

comm

0.2.2

conda

24.3.0

conda-libmamba-solver

24.1.0

conda-package-handling

2.2.0

conda-package-streaming

0.9.0

confection

0.1.5

configurable-http-proxy

4.6.1

contourpy

1.2.1

cryptography

42.0.5

cuda

12.2.2

cuda-cccl

12.2.140

cuda-command-line-tools

12.2.2

cuda-compiler

12.2.2

cuda-cudart

12.2.140

cuda-cudart-dev

12.2.140

cuda-cudart-static

12.2.140

cuda-cuobjdump

12.2.140

cuda-cupti

12.2.142

cuda-cupti-static

12.2.142

cuda-cuxxfilt

12.2.140

cuda-demo-suite

12.2.140

cuda-documentation

12.2.140

cuda-driver-dev

12.2.140

cuda-gdb

12.2.140

cuda-libraries

12.2.2

cuda-libraries-dev

12.2.2

cuda-libraries-static

12.2.2

cuda-nsight

12.2.144

cuda-nsight-compute

12.2.2

cuda-nvcc

12.2.140

cuda-nvdisasm

12.2.140

cuda-nvml-dev

12.2.140

cuda-nvprof

12.2.142

cuda-nvprune

12.2.140

cuda-nvrtc

12.2.140

cuda-nvrtc-dev

12.2.140

cuda-nvrtc-static

12.2.140

cuda-nvtx

12.2.140

cuda-nvvp

12.2.142

cuda-opencl

12.2.140

cuda-opencl-dev

12.2.140

cuda-profiler-api

12.2.140

cuda-runtime

12.2.2

cuda-sanitizer-api

12.2.140

cuda-toolkit

12.2.2

cuda-tools

12.2.2

cuda-visual-tools

12.2.2

cycler

0.12.1

cymem

2.0.8

cython

3.0.10

cytoolz

0.12.3

dask

2024.4.2

dask-core

2024.4.2

dask-expr

1.0.12

datalayer-kernels

0.0.7

dav1d

1.2.1

debugpy

1.8.1

decorator

5.1.1

defusedxml

0.7.1

deprecation

2.1.0

dill

0.3.8

distributed

2024.4.2

distro

1.9.0

entrypoints

0.4

et_xmlfile

1.1.0

exceptiongroup

1.2.0

executing

2.0.1

fastai

2.7.17

fastcore

1.7.8

fastdownload

0.0.7

fastprogress

1.0.3

filelock

3.16.1

fmt

10.2.1

fonttools

4.51.0

fqdn

1.5.1

freetype

2.12.1

frozenlist

1.4.1

fsspec

2024.3.1

gds-tools

1.9.1.3

gflags

2.2.2

giflib

5.2.2

gitdb

4.0.11

gitpython

3.1.43

glog

0.7.0

gmp

6.3.0

gmpy2

2.1.2

greenlet

3.0.3

h11

0.14.0

h2

4.1.0

h5py

3.11.0

hdf5

1.14.3

hpack

4.0.0

httpcore

1.0.5

httpx

0.27.0

huggingface-hub

0.25.0

hyperframe

6.0.1

icu

73.2

idna

3.7

imagecodecs

2024.1.1

imageio

2.34.0

importlib-metadata

7.1.0

importlib_metadata

7.1.0

importlib_resources

6.4.0

intake

2.0.7

ipykernel

6.29.3

ipympl

0.9.4

ipython

8.22.2

ipython_genutils

0.2.0

ipywidgets

8.0.4

isoduration

20.11.0

jedi

0.19.1

jinja2

3.1.3

joblib

1.4.0

json5

0.9.25

jsonpatch

1.33

jsonpointer

2.4

jsonschema

4.21.1

jsonschema-specifications

2023.12.1

jsonschema-with-format-nongpl

4.21.1

jupyter-lsp

2.2.5

jupyter-packaging

0.12.0

jupyter-server

2.12.0.dev0

jupyter-server-mathjax

0.2.6

jupyter-server-proxy

3.2.1

jupyter_client

8.6.1

jupyter_core

5.7.2

jupyter_events

0.10.0

jupyter_server_terminals

0.5.3

jupyter_telemetry

0.1.0

jupyterhub

4.1.5

jupyterhub-base

4.1.5

jupyterlab

4.1.0b0

jupyterlab-git

0.50.0

jupyterlab_pygments

0.3.0

jupyterlab_server

2.26.0

jupyterlab_widgets

3.0.10

jxrlib

1.1

keyutils

1.6.1

kiwisolver

1.4.5

krb5

1.21.2

langchain

0.3.0

langchain-core

0.3.1

langchain-text-splitters

0.3.0

langcodes

3.4.0

langsmith

0.1.122

language-data

1.2.0

lazy_loader

0.4

lcms2

2.16

ld_impl_linux-64

2.4

lerc

4.0.0

libabseil

20240116.1

libaec

1.1.3

libarchive

3.7.2

libarrow

15.0.2

libarrow-acero

15.0.2

libarrow-dataset

15.0.2

libarrow-flight

15.0.2

libarrow-flight-sql

15.0.2

libarrow-gandiva

15.0.2

libarrow-substrait

15.0.2

libavif16

1.0.4

libblas

3.9.0

libbrotlicommon

1.1.0

libbrotlidec

1.1.0

libbrotlienc

1.1.0

libcblas

3.9.0

libcrc32c

1.1.2

libcublas

12.4.5.8

libcublas-dev

12.4.5.8

libcublas-static

12.4.5.8

libcufft

11.2.1.3

libcufft-dev

11.2.1.3

libcufft-static

11.2.1.3

libcufile

1.9.1.3

libcufile-dev

1.9.1.3

libcufile-static

1.9.1.3

libcurand

10.3.5.147

libcurand-dev

10.3.5.147

libcurand-static

10.3.5.147

libcurl

8.7.1

libcusolver

11.6.1.9

libcusolver-dev

11.6.1.9

libcusolver-static

11.6.1.9

libcusparse

12.3.1.170

libcusparse-dev

12.3.1.170

libcusparse-static

12.3.1.170

libdeflate

1.2

libedit

3.1.20191231

libev

4.33

libevent

2.1.12

libexpat

2.6.2

libffi

3.4.2

libgcc

14.1.0

libgcc-ng

14.1.0

libgfortran-ng

13.2.0

libgfortran5

13.2.0

libgomp

14.1.0

libgoogle-cloud

2.22.0

libgoogle-cloud-storage

2.22.0

libgrpc

1.62.2

libhwy

1.1.0

libiconv

1.17

libjpeg-turbo

3.0.0

libjxl

0.10.2

liblapack

3.9.0

liblapacke

3.9.0

libllvm14

14.0.6

libllvm16

16.0.6

libmamba

1.5.8

libmambapy

1.5.8

libnghttp2

1.58.0

libnl

3.9.0

libnpp

12.2.5.30

libnpp-dev

12.2.5.30

libnpp-static

12.2.5.30

libnsl

2.0.1

libnvjitlink

12.4.127

libnvjitlink-dev

12.4.127

libnvjpeg

12.3.1.117

libnvjpeg-dev

12.3.1.117

libnvjpeg-static

12.3.1.117

libopenblas

0.3.27

libparquet

15.0.2

libpng

1.6.43

libprotobuf

4.25.3

libre2-11

2023.09.01

libsodium

1.0.18

libsolv

0.7.28

libsqlite

3.45.3

libssh2

1.11.0

libstdcxx-ng

13.2.0

libthrift

0.19.0

libtiff

4.6.0

libutf8proc

2.8.0

libuuid

2.38.1

libuv

1.48.0

libwebp-base

1.4.0

libxcb

1.15

libxcrypt

4.4.36

libxml2

2.12.6

libzlib

1.2.13

libzopfli

1.0.3

llvm-openmp

18.1.3

llvmlite

0.42.0

locket

1.0.0

lz4

4.3.3

lz4-c

1.9.4

lzo

2.1

mako

1.3.3

mamba

1.5.8

marisa-trie

1.2.0

markdown-it-py

3.0.0

markupsafe

2.1.5

matplotlib-base

3.8.4

matplotlib-inline

0.1.7

mdurl

0.1.2

menuinst

2.0.2

mistune

3.0.2

mpc

1.3.1

mpfr

4.2.1

mpmath

1.3.0

msgpack-python

1.0.7

multidict

6.1.0

munkres

1.1.4

murmurhash

1.0.10

nbclassic

1.0.0

nbclient

0.10.0

nbconvert

7.16.3

nbconvert-core

7.16.3

nbconvert-pandoc

7.16.3

nbdime

4.0.1

nbformat

5.10.4

ncurses

6.4.20240210

nest-asyncio

1.6.0

networkx

3.3

nodejs

20.9.0

nomkl

1

notebook

7.1.3

notebook-shim

0.2.4

nsight-compute

2024.1.1.4

numba

0.59.1

numexpr

2.9.0

numpy

1.26.4

nvidia-cublas-cu12

12.1.3.1

nvidia-cuda-cupti-cu12

12.1.105

nvidia-cuda-nvrtc-cu12

12.1.105

nvidia-cuda-runtime-cu12

12.1.105

nvidia-cudnn-cu12

9.1.0.70

nvidia-cufft-cu12

11.0.2.54

nvidia-curand-cu12

10.3.2.106

nvidia-cusolver-cu12

11.4.5.107

nvidia-cusparse-cu12

12.1.0.106

nvidia-nccl-cu12

2.20.5

nvidia-nvjitlink-cu12

12.6.68

nvidia-nvtx-cu12

12.1.105

oauthlib

3.2.2

openblas

0.3.27

openjpeg

2.5.2

openpyxl

3.1.2

openssl

3.3.2

orc

2.0.0

orjson

3.10.7

overrides

7.7.0

packaging

24

pamela

1.1.0

pandas

2.2.2

pandoc

3.1.13

pandocfilters

1.5.0

parso

0.8.4

partd

1.4.1

patsy

0.5.6

pexpect

4.9.0

pickleshare

0.7.5

pillow

10.3.0

pip

24

pkgutil-resolve-name

1.3.10

platformdirs

4.2.0

plotly

5.24.1

pluggy

1.5.0

preshed

3.0.9

prometheus_client

0.20.0

prompt-toolkit

3.0.42

protobuf

4.25.3

psutil

5.9.8

pthread-stubs

0.4

ptyprocess

0.7.0

pure_eval

0.2.2

py-cpuinfo

9.0.0

pyarrow

15.0.2

pyarrow-hotfix

0.6

pybind11-abi

4

pycosat

0.6.6

pycparser

2.22

pycurl

7.45.3

pydantic

2.9.2

pydantic-core

2.23.4

pygments

2.17.2

pyjwt

2.8.0

pyopenssl

24.0.0

pyparsing

3.1.2

pysocks

1.7.1

pytables

3.9.2

python

3.11.9

python-dateutil

2.9.0

python-fastjsonschema

2.19.1

python-json-logger

2.0.7

python-tzdata

2024.1

python_abi

3.11

pytz

2024.1

pywavelets

1.4.1

pyyaml

6.0.1

pyzmq

26.0.2

rav1e

0.6.6

rdma-core

51

re2

2023.09.01

readline

8.2

referencing

0.34.0

regex

2024.9.11

reproc

14.2.4.post0

reproc-cpp

14.2.4.post0

requests

2.31.0

rfc3339-validator

0.1.4

rfc3986-validator

0.1.1

rich

13.8.1

rpds-py

0.18.0

ruamel.yaml

0.18.6

ruamel.yaml.clib

0.2.8

s2n

1.4.12

safetensors

0.4.5

scikit-image

0.22.0

scikit-learn

1.4.2

scipy

1.13.0

seaborn

0.13.2

seaborn-base

0.13.2

send2trash

1.8.3

setuptools

69.5.1

shellingham

1.5.4

simpervisor

1.0.0

six

1.16.0

smart-open

7.0.4

smmap

5.0.0

snappy

1.2.0

sniffio

1.3.1

sortedcontainers

2.4.0

soupsieve

2.5

spacy

3.7.6

spacy-legacy

3.0.12

spacy-loggers

1.0.5

sqlalchemy

2.0.29

srsly

2.4.8

stack_data

0.6.2

statsmodels

0.14.1

svt-av1

2.0.0

sympy

1.12

tblib

3.0.0

tenacity

8.5.0

terminado

0.18.1

thinc

8.2.5

threadpoolctl

3.4.0

tifffile

2024.4.18

tinycss2

1.2.1

tk

8.6.13

tokenizers

0.19.1

tomli

2.0.1

tomlkit

0.13.2

toolz

0.12.1

torch

2.4.1

torchaudio

2.4.1

torchvision

0.19.1

tornado

6.4

tqdm

4.66.2

traitlets

5.14.3

transformers

4.44.2

triton

3.0.0

truststore

0.8.0

typer

0.12.5

types-python-dateutil

2.9.0.20240316

typing-extensions

4.11.0

typing_extensions

4.11.0

typing_utils

0.1.0

tzdata

2024a

ucx

1.15.0

uri-template

1.3.0

urllib3

2.2.1

wasabi

1.1.3

wcwidth

0.2.13

weasel

0.4.1

webcolors

1.13

webencodings

0.5.1

websocket-client

1.7.0

wheel

0.43.0

widgetsnbextension

4.0.10

wrapt

1.16.0

xlrd

2.0.1

xorg-libxau

1.0.11

xorg-libxdmcp

1.1.3

xyzservices

2024.4.0

xz

5.2.6

yaml

0.2.5

yaml-cpp

0.8.0

yarl

1.11.1

zeromq

4.3.5

zfp

1.0.1

zict

3.0.0

zipp

3.17.0

zlib

1.2.13

zlib-ng

2.0.7

zstandard

0.22.0

zstd

1.5.5

在 GPU 内核单元中传输变量#

由于分配了 GPU 内核的单元在与笔记本其余部分不同的环境中运行,因此必须在单元和笔记本之间传输变量,以确保它们在两个环境中都可以访问。

请按照以下步骤传输变量:

  1. 单击分配了 GPU 内核的单元旁边的 Variable transfer

  2. 输入要在笔记本和单元环境之间传输的输入和/或输出。

  3. 单击 Set variables(设置变量)。

输入和/或输出现在可以在 GPU 内核单元和笔记本中使用。

管理使用情况#

当您将 GPU 内核分配给笔记本时,系统会要求您预留定义的分钟数,以用于笔记本的 GPU 执行时间。预留时间以积分计算,一个积分等于 100 秒。

笔记本启动后,预留时间开始倒计时。在运行代码和笔记本空闲时,预留时间会继续倒计时。

将鼠标悬停在右上角的倒计时条上,跟踪剩余的预留时间:

谨慎

当您的预留时间低于 5 分钟 (300 秒) 时,倒计时条将变为红色。一旦保留时间达到零,GPU 内核会话将自动终止。

Anaconda 建议通过将 GPU 内核分配给需要更高计算能力的单个单元而不是整个笔记本,或者等待分配 GPU 内核,直到您准备好运行代码,然后在代码执行后立即停止 GPU 内核会话,从而节省 GPU 使用量。

有多种方法可以停止 GPU 内核会话:

  1. 从顶部菜单栏中选择 Kernels

  2. 选择 Shut Down All (全部关闭) 以关闭所有内核。

  3. 在确认对话框中,单击 Shut Down All

  1. 在分配了 GPU 内核的笔记本中,单击右上角的倒计时条。

  2. 在 Jupyter Kernels (Jupyter 内核) 页面上,单击要关闭的内核旁边的 Delete (删除)。

使用历史#

单击 Jupyter Kernels 主页右上角的作下拉列表,然后选择 Usage(使用情况),查看您的 GPU 使用情况统计信息和剩余积分:

  • Overview (概述) 页面显示您正在运行的 GPU 内核、剩余积分和历史积分消耗。

  • History (历史记录) 页面显示您的使用历史记录,包括 GPU 会话内核名称、类型、开始日期、结束日期、使用的积分和会话持续时间。

  • Reservations (预留) 页面显示当前正在运行的任何 GPU 内核、分配给预留会话的积分以及预留开始和结束时间。

使用积分#

Anaconda 提供积分以访问 GPU 计算时间。1 个积分等于 100 秒。请注意,这与为 CPU 使用计算高计算秒数的方式不同。

使用预留时间时,积分会自动扣除。例如,如果您使用 10 分钟的预留时间,则会从您的账户中扣除 6.00 积分。

在 Usage Overview (使用情况概览) 页面上查看剩余的积分。

目前,Anaconda 仅向选定的付费订阅者提供 500 个免费积分。有关升级订阅以获取访问权限的详细信息,请参阅注释

故障排除#

我的积分用完了#

要请求额外的 GPU 积分,请提交支持票证

GPU 内核无法启动#

重新加载 Anaconda Notebooks 页面,然后从启动器中单击“启动远程内核”。如果您仍然无法运行 GPU 内核,请提交支持票证

我的代码未运行#

检查缺少的 import 语句,并验证变量是否已正确传输到 GPU 内核。