GPU 内核 #

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

什么是 GPU 内核?

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

当您将 GPU 内核分配给 notebook(或 notebook 单元格)时,您正在使用默认的启用 GPU 的环境。有关内核和环境的更多信息,请参阅 环境

分配 GPU 内核#

您可以使用几种方法将 GPU 内核分配给整个 notebook 或单个单元格

  1. 打开启动器。

  2. Notebook 下,单击 启动远程内核

  3. 在“启动内核”对话框中,打开 环境 下拉菜单并选择一个内核。

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

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

  6. 单击 启动内核

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

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

  3. 在“分配内核”对话框中,确保在下拉菜单中选择了远程内核。

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

    警告

    请勿将“传输变量”切换开关切换到 开启。将切换开关切换到 开启 会导致 Notebooks 崩溃。这是一个已知问题,目前正在解决中。

  5. 单击 分配

  1. 在活动单元格中,单击 为单元格分配特定内核.

  2. 如果您尚未启动远程内核,请选择连接到远程提供程序,并按照“启动器”选项卡中的步骤操作。否则,继续下一步。

  3. 单击 分配单元格内核

  4. 选择环境和内核名称。

  5. 单击 从环境分配

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

使用 GPU 内核#

将 GPU 内核分配给 notebook 或单元格后,您可以像往常一样运行代码。您应该会注意到处理速度显着提高,特别是对于更复杂的任务。

Anaconda 的默认 GPU 内核“anaconda-01 - nvidia-a10”绑定到一个只读的启用 GPU 的环境,其中包含最新的 Anaconda、AI 和 NVIDIA 软件包。

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

软件包名称

软件包版本

_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 内核的单元格在与 notebook 其余部分不同的环境中运行,因此必须在单元格和 notebook 之间传输变量,以确保它们在两个环境中都可访问。

按照以下步骤传输变量

  1. 单击 单击分配了 GPU 内核的单元格旁边的 变量传输

  2. 输入要在 notebook 和单元格环境之间传输的输入和/或输出。

  3. 单击 设置变量

输入和/或输出现在可以在 GPU 内核单元格和 notebook 中使用。

管理使用量#

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

notebook 启动后,预留时间开始倒计时。无论是在运行代码还是 notebook 处于空闲状态,预留时间都会继续倒计时。

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

注意

当您的预留时间降至五分钟(300 秒)以下时,倒计时栏会变为红色。一旦预留时间归零,GPU 内核会话将自动终止。

Anaconda 建议您节省 GPU 使用量,方法是将 GPU 内核分配给需要更高计算能力的单个单元格,而不是整个 notebook,或者等到您准备好运行代码时再分配 GPU 内核,然后在代码执行后立即停止 GPU 内核会话。

您可以通过多种方式停止 GPU 内核会话

  1. 从顶部菜单栏中选择 内核

  2. 选择 全部关闭 以关闭所有内核。

  3. 在确认对话框中,单击 全部关闭

  1. 在分配了 GPU 内核的 notebook 中,单击右上角的倒计时栏。

  2. 在 Jupyter 内核页面上,单击 单击您要关闭的内核旁边的 删除

使用历史记录#

要查看您的 GPU 使用统计数据和剩余积分,请单击 Jupyter 内核主页右上角的 操作下拉菜单,然后选择 使用量

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

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

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

使用积分#

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

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

在“使用量概述”页面上查看您的剩余积分。

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

故障排除#

我的积分用完了#

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

GPU 内核无法启动#

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

我的代码没有运行#

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