深度学习开发环境搭建:jupyter与多poetry环境

以下是在ubuntu24.04 server版上搭建的过程。

由于python以及GPU的driver/CUDA的版本都是用最新的,所以同一个开发环境中tensorflow和pytorch的版本和python不兼容,因此必须分开开发环境。由于本人不喜好venv或则pyenv,或则conda之类的虚拟环境管理,特此配置多poetry开发环境,以资留念。

1.基础硬件/软件信息

  • OS: ubuntu 24.04 Server
  • CPU:Intel xeon w2123
  • Memory:64GB
  • GPU:NVIDIA GeForce RTX 2070 SUPER(8GB)
  • GPU Driver Version: 570.86.15
  • CUDA Version: 12.8
  • cuDNN Version: 9.8.0-1
  • Python:3.12.3

2.开发环境的构造如下

(1)wks_base: poetry的虚拟环境,只提供jupyterlab服务
(2)wks_tensorflow: poetry的虚拟环境,提供tensorflow的开发环境
(3)wks_torch: poetry的虚拟环境,提供pytorch开发环境

3.搭建好后的开发界面如下

4.具体搭建过程

4-1:准备各种作业目录(folder/directory)

cd ~ #work directory is $HOME
mkdir wks_base wks_tensorflow wks_torch

4-2:安装jupyterlab
详细过程以及和nginx的配置,参照这篇(ubuntu24.04上jupyterlab的安装)

cd wks_base
poetry init
# 按照提示,都是默认值
# 最后进入虚拟环境
poetry shell
poetry add jupyterlab

4-3:安装tensorflow的开发环境

#在wks_tensorflow目录下作业
cd ~/wks_tensorflow
poetry init
# 按照提示,直接都是默认值
# 进入虚拟环境
poetry shell

#安装kernel
poetry add ipykernel

##退出poetry虚拟环境
exit 

#把当前的环境作为kernel添加到jupyter
poetry run python -m ipykernel install --user --name wks_tensorflow

#再进入虚拟环境,安装开发package
poetry shell
poetry add tensorflow[and-cuda]

#退出环境,刷新browser确认
exit

4-4:安装pytorch的开发环境

基本上同4-3.

#在wks_torch目录下作业
cd ~/wks_torch
poetry init
# 按照提示,直接都是默认值
# 进入虚拟环境
poetry shell

#安装kernel
poetry add ipykernel

##退出poetry虚拟环境
exit 

#把当前的环境作为kernel添加到jupyter
poetry run python -m ipykernel install --user --name wks_torch

#再进入虚拟环境,安装开发package
poetry shell
poetry add torch torchvision

#退出环境,刷新browser确认
exit

5.验证开发环境

5-1:tensorflow

import tensorflow as tf
from tensorflow.keras import datasets, layers, models
print(f"TensorFlow version: {tf.__version__}")
# Print CUDA and cuDNN versions
print(
    "Num GPUs Available: ",
    len(tf.config.experimental.list_physical_devices("GPU")),
)
print("CUDA Version: ", tf.test.is_built_with_cuda())
print("GPU Device Name: ", tf.test.gpu_device_name())

# Enable mixed precision training
# This can speed up training on newer GPUs
policy = tf.keras.mixed_precision.Policy("mixed_float16")
tf.keras.mixed_precision.set_global_policy(policy)

5-2:pytorch

import torch
print(torch.cuda.is_available())
print(torch.cuda.device_count())