当前位置: 首页 > news >正文

poetry 配置多个cuda环境心得

操作系统:ubuntu22.04 LTS

python版本:3.12.7

最近学习了用poetry配置python虚拟环境,当为不同的项目配置cuda时,会遇到不同的项目使用的cuda版本不一致的情况。

像torch 这样的库,它们会对cuda-toolkit有依赖,通过python来使用cuda,它们会依赖像

nvidia-cuda-runtime-cu12

nvidia-cublas-cu12

这样的python库,这种情况下,在pyproject.toml里写上 

[tool.poetry.group.full]

optional = true

[tool.poetry.group.full.dependencies]

torch = {path = "./torch-2.2.1+cu121-cp312-cp312-linux_x86_64.whl"}

或者

torch = "2.2.1"

这样的依赖就行了,poetry会自动下载依赖的cuda-toolkit的python库

这时候,通过poetry show torch --tree可以查看到依赖关系:

user@user-Ubuntu2204:~/projects/cuda-test$ poetry show torch --tree
torch 2.2.1+cu121 Tensors and Dynamic neural networks in Python with strong GPU acceleration
├── filelock *
├── fsspec *
├── jinja2 *
│   └── markupsafe >=2.0 
├── networkx *
├── 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 8.9.2.26
│   └── nvidia-cublas-cu12 * 
├── nvidia-cufft-cu12 11.0.2.54
├── nvidia-curand-cu12 10.3.2.106
├── nvidia-cusolver-cu12 11.4.5.107
│   ├── nvidia-cublas-cu12 * 
│   ├── nvidia-cusparse-cu12 * 
│   │   └── nvidia-nvjitlink-cu12 * 
│   └── nvidia-nvjitlink-cu12 * (circular dependency aborted here)
├── nvidia-cusparse-cu12 12.1.0.106
│   └── nvidia-nvjitlink-cu12 * 
├── nvidia-nccl-cu12 2.19.3
├── nvidia-nvtx-cu12 12.1.105
├── sympy *
│   └── mpmath >=1.1.0,<1.4 
└── typing-extensions >=4.8.0

有的基于gpu的库不通过python来使用cuda,这时候就要给操作系统安装对应的cuda版本才行。这时候,从poetry show 查看依赖关系是看不到它对nvidia的cuda-toolkit的依赖的:

user@user-Ubuntu2204:~/projects/cuda-test$ poetry show paddlepaddle-gpu --tree
paddlepaddle-gpu 2.6.2.post120 Parallel Distributed Deep Learning
├── astor *
├── decorator *
├── httpx *
│   ├── anyio * 
│   │   ├── idna >=2.8 
│   │   └── sniffio >=1.1 
│   ├── certifi * 
│   ├── httpcore ==1.* 
│   │   ├── certifi * (circular dependency aborted here)
│   │   └── h11 >=0.13,<0.15 
│   ├── idna * (circular dependency aborted here)
│   └── sniffio * (circular dependency aborted here)
├── numpy >=1.13
├── opt-einsum 3.3.0
│   └── numpy >=1.7 
├── pillow *
├── protobuf >=3.20.2
└── protobuf >=3.1.0,<=3.20.2

另外,像torch这样通过python来使用cuda,可以给nvidia的cuda-toolkit库指定路径:

[tool.poetry.dependencies]
python = "^3.12"
setuptools = "70.0.0"nvidia-cublas-cu12={ path = "./nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl" }
nvidia-cuda-cupti-cu12={ path = "./nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl" }

http://www.lryc.cn/news/477887.html

相关文章:

  • 网络编程入门
  • Linux-socket详解
  • SQL Server 2022安装要求(硬件、软件、操作系统等)
  • “众店模式”:创新驱动下的商业新生态
  • 54. 螺旋矩阵
  • 剧本杀小程序,市场发展下的新机遇
  • 【系统架构设计师】论文:论基于 ABSD 的软件开发
  • 为什么OLED透明屏在同类产品中显示效果最好
  • 深度学习基础知识-Batch Normalization(BN)超详细解析
  • 基于单片机的燃气报警阀门系统
  • watch与computed的区别、运用的场景
  • 【ESP32+MicroPython】开发环境部署
  • Vision - 开源视觉分割算法框架 Grounded SAM2 配置与推理 教程 (1)
  • DAY21|二叉树Part08|LeetCode: 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
  • 在gitlab,把新分支替换成master分支
  • 使用 Spring Boot 集成 Thymeleaf 和 Flying Saucer 实现 PDF 导出
  • web——upload1——攻防世界
  • nginx 搭建网站
  • Java基础-Java中的常用类(上)
  • 气压仪器智能打气泵方案芯片SIC8833
  • 软件测试(系统测试)的定位和专业:完善产品;专业;非助手;自动化
  • 2024 CSS保姆级教程四
  • PostgreSQL技术内幕17:PG分区表
  • 群控系统服务端开发模式-应用开发-上传工厂开发
  • 【Docker系列】指定系统平台拉取 openjdk:8 镜像
  • 语音识别:docker部署FunASR以及springboot集成funasr
  • Rust项目结构
  • 计算并联电阻的阻值
  • MySQL符号类型(详细)
  • Angular引用控件类