高级框架配置#

在 2.0 版本中添加。

保护 notebook 服务器安全#

Jupyter notebook Web 应用程序基于服务器-客户端结构。本文档介绍如何保护 notebook 服务器安全

重要提示

以下脚本未考虑 jupyter notebook 安全性。要正确保护您的 Jupyter notebook,请使用上面列出的指南。

单个容器的启动脚本#

Jupyter 的启动脚本#

  1. 创建一个 dataset 目录,用于存储使用 Jupyter notebook 的所有数据集。

    mkdir ~/dataset
    
  2. 创建一个启动脚本,并将其放在 home 目录中。

    vim /home/nvidia/startup.sh
    

RAPIDS 容器#

将以下内容添加到在Jupyter 的启动脚本 部分中创建的 startup.sh 脚本中。

1#!/bin/bash
2docker rm -f $(docker ps -a -q)
3docker run --gpus all --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p8888:8888 -v /home/nvidia/dataset:/workspace/dataset nvcr.io/nvidia/rapidsai/notebooks:<CONTAINER-TAG> jupyter-notebook --allow-root --ip='0.0.0.0'

注意

/home/nvidia 替换为您的 home 路径。请勿使用 $HOME,此脚本需要绝对路径。

提示

示例:nvcr.io/nvidia/rapidsai/notebooks:24.08-cuda11.8-py3.9 容器位置:https://catalog.ngc.nvidia.com/orgs/nvidia/teams/rapidsai/containers/notebooks

TensorFlow1 容器#

将以下内容添加到在Jupyter 的启动脚本 部分中创建的 startup.sh 脚本中。

1#!/bin/bash
2docker rm -f $(docker ps -a -q)
3docker run --gpus all --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p8888:8888 -v /home/nvidia/dataset:/workspace/dataset nvcr.io/nvidia/tensorflow:<CONTAINER-TAG> jupyter-notebook --allow-root --ip='0.0.0.0'

注意

/home/nvidia 替换为您的 home 路径。请勿使用 $HOME,此脚本需要绝对路径。

提示

示例:nvcr.io/nvidia/tensorflow:24.09-tf2-py3 容器位置:https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorflow/tags

TensorFlow2 容器#

将以下内容添加到在Jupyter 的启动脚本 部分中创建的 startup.sh 脚本中。

1#!/bin/bash
2docker rm -f $(docker ps -a -q)
3docker run --gpus all --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p8888:8888 -v /home/nvidia/dataset:/workspace/dataset nvcr.io/nvidia/tensorflow:<CONTAINER-TAG> jupyter-notebook --allow-root --ip='0.0.0.0'

注意

/home/nvidia 替换为您的 home 路径。请勿使用 $HOME,此脚本需要绝对路径。

提示

示例:nvcr.io/nvidia/tensorflow:24.09-tf2-py3 容器位置:https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorflow/tags

PyTorch 容器#

将以下内容添加到在Jupyter 的启动脚本 部分中创建的 startup.sh 脚本中。

1#!/bin/bash
2docker rm -f $(docker ps -a -q)
3docker run --gpus all --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p8888:8888 -v /home/nvidia/dataset:/workspace/dataset nvcr.io/nvidia/pytorch:<CONTAINER-TAG> jupyter-notebook --allow-root --ip='0.0.0.0'

注意

/home/nvidia 替换为您的 home 路径。请勿使用 $HOME,此脚本需要绝对路径。

提示

示例:nvcr.io/nvidia/pytorch:24.09-py3 容器位置:https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch/tags

组合启动脚本#

以下脚本在单个系统上为所有 NVIDIA AI 企业版容器一起自动启动 Jupyter notebook。在此示例中,PyTorch、TensorFlow1、TensorFlow2 和 RAPIDS 的 Jupyter notebook 分别在端口 8888、8889、8890 和 8891 上启动。

1#!/bin/bash
2docker rm -f $(docker ps -a -q)
3docker run -d --gpus all --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p8888:8888 --name pytorch_cont -v /home/nvidia/dataset:/workspace/dataset nvcr.io/nvaie/pytorch:<NVAIE-CONTAINER-TAG> jupyter-notebook --allow-root --NotebookApp.token='' --ip='0.0.0.0' --port 8888
4docker run -d --gpus all --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p8889:8889 --name tensorflow1_cont -v /home/nvidia/dataset:/workspace/dataset nvcr.io/nvaie/tensorflow:<NVAIE-CONTAINER-TAG> jupyter-notebook --allow-root --NotebookApp.token='' --ip='0.0.0.0' --port 8889
5docker run -d --gpus all --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p8890:8890 --name tensorflow2_cont -v /home/nvidia/dataset:/workspace/dataset nvcr.io/nvaie/tensorflow:<NVAIE-CONTAINER-TAG> jupyter-notebook --allow-root --NotebookApp.token='' --ip='0.0.0.0' --port 8890
6docker run -d --gpus all --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p8891:8891 --name rapids_cont -v /home/nvidia/dataset:/workspace/dataset nvcr.io/nvaie/nvidia-rapids-:<NVAIE-CONTAINER-TAG> jupyter-notebook --allow-root --NotebookApp.token='' --ip='0.0.0.0' --port 8891

启用启动脚本#

  1. 授予脚本执行权限。

    chmod +x /home/nvidia/startup.sh
    

    注意

    /home/nvidia 替换为您的 home 路径。请勿使用 $HOME,此脚本需要绝对路径。

  2. 为启动脚本创建 systemd 进程。

    sudo vim /etc/systemd/system/jupyter.service
    
  3. 将以下内容添加到 jupyter.service 文件中。

    1[Unit]
    2Description=Starts Jupyter server
    3
    4[Service]
    5ExecStart=/home/nvidia/startup.sh #Use your home path
    6
    7[Install]
    8WantedBy=multi-user.target
    
  4. 启动并启用启动服务,以便在重启时自动启动。

    sudo systemctl start jupyter.service
    
    sudo systemctl enable jupyter.service
    
  5. 重启系统。

    注意

    对于 :ref: combined-startup-scripts 部分,您可以跳过下一步,并直接访问 PyTorch 容器、TensorFlow-v1、TensorFlow-v2 和 RAPIDS Jupyter notebook,地址分别为:http://system_IP:8888http://system_IP:8889http://system_IP:8890http://system_IP:8891

  6. 要打开 Jupyter Notebook,您需要令牌/密码。这是为了防止未经授权访问 Jupyter Notebook。要访问令牌,请使用以下命令查看 Jupyter 服务日志。

    journalctl -f -u jupyter.service
    
  7. 日志将显示 Jupyter Notebook 的完整 URL,包括令牌。

    Sep 15 16:33:58 triton-inference-server startup.sh[6315]: To access the notebook,
    http://341eed905e2a:8888/?token=0a13f9068c4ea9bb2f1ca5d8ad212a26accc085da896a368
    
  8. 作为 IT 管理员,您需要向数据科学家提供系统的 IP 地址和下面的令牌。

    http://system_IP:8888/?token=<token_from_the logs>
    

    示例

    http://192.168.100.10:8888/?token=0a13f9068c4ea9bb2f1ca5d8ad212a26accc085da896a368
    

Triton Inference Server 的启动脚本#

  1. 在系统内部创建一个 triton 目录,供 AI 从业人员托管模型。

    mkdir ~/triton
    
  2. 拉取最新的 Triton Inference Server 容器。

    sudo docker pull nvcr.io/nvaie/tritonserver-<NVAIE-MAJOR-VERSION>:<NVAIE-CONTAINER-TAG>
    
  3. 创建一个启动脚本,以便在系统上自动运行 Triton Inference Server。

    vim ~/startup.sh
    
  4. 将以下内容添加到 startup.sh 文件中。

    1#!/bin/bash
    2docker rm -f $(docker ps -a -q)
    3docker run --gpus all --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -p8000:8000 -p8001:8001 -p8002:8002 --name triton_server_cont -v $HOME/triton_models:/models nvcr.io/nvaie/tritonserver-<NVAIE-MAJOR-VERSION>:<NVAIE-CONTAINER-TAG> tritonserver --model-store=/models --strict-model-config=false --log-verbose=1
    
  5. 使启动脚本可执行。

    chmod +x ~/startup.sh
    
  6. 为启动脚本创建一个 systemd 进程。

    sudo vim /etc/systemd/system/triton.service
    
  7. 将以下内容添加到 triton.service 文件中。

    1[Unit]
    2Description=Starts Triton server
    3
    4[Service]
    5ExecStart=/home/nvidia/startup.sh
    6
    7[Install]
    8WantedBy=multi-user.target
    
  8. 启动并启用启动服务,以便在重启时自动启动。

    sudo systemctl start triton.service
    
    sudo systemctl enable triton.service
    
  9. 重启系统。