二、CUDA、Pytorch与依赖的工具包

CUDA = Compute Unified Device Architecture(统一计算架构)。专门用于 GPU 通用计算 的平台 + 编程接口。CUDA可以使你的程序(比如矩阵、神经网络)由 GPU 执行,这比CPU能快几十甚至上百倍。

PyTorch 是一个深度学习框架,可以用 Python 来:构建神经网络、加载模型和数据、启动训练和推理、支持 CPU 和 GPU,但Pytorch本身默认使用的CPU,想要Pytorch使用GPU,得安装好 CUDA 运行库(pytorch-cuda),即匹配CUDA兼容的pytorcha版本,这样PyTorch 才能找得到 GPU。

比喻角色对应概念
PyTorch 是“程序员”写神经网络代码、安排计算
CUDA 是“翻译官”把这些代码翻译成显卡能理解的操作指令
GPU 是“工人”真正去跑那些深度学习计算任务(卷积、矩阵乘等)

当前开发环境描述:Windows 11专业版,Python版本 3.10.11,已安装Anaconda(版本  25.5.1)

CUDA的版本可以用命令行来查看(这里的CUDA 是 12.6):

(ollama_baseline_env) D:\PythonWorkspace\ollama_baseline>nvidia-smi
Sun Jul 27 21:35:04 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 560.94                 Driver Version: 560.94         CUDA Version: 12.6     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                  Driver-Model | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4060 Ti   WDDM  |   00000000:01:00.0  On |                  N/A |
|  0%   37C    P8              7W /  165W |     934MiB /  16380MiB |     10%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

注:若 nvidia-smi 命令未能正确显示显卡信息,则可能是未安装显卡驱动、驱动版本老旧、驱动未正确加载等情况。

由于第一次按照教程操作的时候不知道PyTorch默认用的CPU,因此进行了一次再安装的过程,以下是再安装的步骤描述(也可用于初次安装Pytorch的对照)

重新检查并强制安装 GPU 版 PyTorch

请严格按以下命令重新走一遍: 

1. 激活你的虚拟环境

(假设环境名是 agent_gpu

conda activate agent_gpu

2. 显式卸载可能错误的版本

conda remove pytorch torchvision torchaudio pytorch-cuda -y

3. 再安装 GPU 版 PyTorch + CUDA 11.8

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

这里装的CUDA版本是 11.8,比本机的12.6的版本低,但可以被12.6向下兼容。

安装成功的话,命令行的最后会显示如下信息:

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

如果出现如下信息,那就是安装中断了(网络不好,镜像源的负载过大等),可再次执行安装命令(conda安装命令会自动略过已安装的工具包,从中断的位置继续安装),当然,也可以从第二步开始。

('Connection broken: IncompleteRead(73906517 bytes read, 76228566 more expected)', IncompleteRead(73906517 bytes read, )

4. 再次运行验证代码

import torch
print("PyTorch:", torch.__version__)
print("CUDA version in PyTorch:", torch.version.cuda)
print("Is CUDA available?", torch.cuda.is_available())
if torch.cuda.is_available():print("GPU:", torch.cuda.get_device_name(0))

✅ 预期输出应是:

PyTorch: 2.3.0
CUDA version in PyTorch: 11.8
Is CUDA available? True
GPU: NVIDIA GeForce RTX 4060

其他工具包的版本选择

开发、部署 AI 项目或 Agent 系统时,工具包的版本选择确实是一个影响系统稳定性的核心因素。

影响 安装工具包版本(如 transformers、peft、torch、accelerate) 的主要因素如下:

序号因素类型说明
1️⃣Python 版本是最根本的兼容限制,决定能否安装某些工具包
2️⃣CUDA 版本(+ 显卡驱动)决定 PyTorch、bitsandbytes 是否能 GPU 加速
3️⃣操作系统(Windows / Linux / macOS)某些工具包仅支持特定系统(如 bitsandbytes)
4️⃣PyTorch 版本是大模型训练的核心底座,很多包(如 transformers)要配合使用
5️⃣目标模型支持要求你想用的模型是否支持当前版本的 transformers / peft
6️⃣项目代码的依赖版本某些开源项目中 requirements.txt 指定了必须版本
7️⃣虚拟环境内已有包的版本冲突pip 会尝试“兼容”已安装的包,可能导致回退或不装新版
8️⃣你执行的安装命令是否指定版本比如:pip install transformers==4.33 会锁定特定版本
9️⃣PyPI 上可用版本与发布时间某些版本已经从 PyPI 下架,或有 bug 的版本被替换
🔟代理环境(如清华镜像)或公司镜像某些版本在镜像站同步延迟或不可用

如何选择正确的版本组合?下面是推荐的选择顺序:

顺序决定方式示例
1️⃣先确认 Python 版本(建议 3.10)python --version
2️⃣根据你显卡驱动和 CUDA 安装适配 PyTorchtorch==2.2.0+cu121
3️⃣选择与 torch 兼容的 transformers查看 transformers release notes
4️⃣再根据 transformers 选择兼容的 peft / acceleratepip install transformers==4.41.2 peft==0.10.0 accelerate==0.29.2
5️⃣查看项目中是否指定 requirements.txtsetup.pypip install -r requirements.txt

版本冲突问题

本次实验课的执行过程遇到了几个工具包的版本冲突问题,这里将有冲突的几个工具包按照依赖关系的层级进行整理

Python 3.10
├── PyTorch 2.1–2.5 + CUDA 11.8
│   ├── transformers ≥4.39
│   │   ├── AutoTokenizer / AutoModelForCausalLM (支持 Qwen2)
│   │   └── Trainer + TrainingArguments
│   ├── accelerate ≥0.27 (建议 0.29.2)
│   ├── peft ≥0.10.0
│   │   ├── LoRA / QLoRA 微调支持
│   │   └── 调用 transformers API
│   ├── bitsandbytes 0.41.1 (Windows 专用 .whl)
│   │   └── 支持 GPU 精度量化(4bit/8bit)
│   └── huggingface_hub ≥0.29.2(非 egg)

经过多次调试,最终形成的版本组合如下:

Python             3.10.11
PyTorch            2.5.1
CUDA               11.8
transformers       4.39.3
accelerate         0.29.2
peft               0.10.0
bitsandbytes       0.46.1 (Windows whl)
huggingface_hub    0.29.2 (non-egg)

使用到的升级命令(供参考)

pip install --upgrade transformers==4.39.3 peft==0.10.0 accelerate==0.29.2
pip uninstall bitsandbytes -y
pip install bitsandbytes‑0.41.1‑py3‑none‑win_amd64.whl
pip uninstall huggingface_hub -y
pip install huggingface_hub==0.29.2 --no-binary huggingface_hub

说明:

  • 做实验阶段,建议每个项目都配一个专用的虚拟环境,依赖冲突的问题与解决可限制在虚拟环境内,避免依赖影响全局运行。
  • transformers、accelerate、peft、bitsandbytes 之间的版本必须统一匹配,老版本或混搭容易引发兼容性问题
  • 本次安装的CUDA是12.6版本,与 CUDA 工具包 11.8 完全兼容(向下兼容)。

Windows与Linux的工具包冲突

在 Windows 系统中误用 Linux 编译的包 是很多 Python 工具包报错的常见根源。以下建议可以帮助减少与规避此类问题

✅ 一、优先使用 .whl(Windows Wheel)包安装

bitsandbytesfaiss原生支持 Linux 的库,Windows 环境通常不支持默认的 pip install,解决办法:

✔ 正确做法:
  • 到 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 或 bitsandbytes · PyPI
    下载 .whl 文件,如:

    bitsandbytes‑0.41.1‑py3‑none‑win_amd64.whl

  • 然后手动安装:

    pip install 路径/文件名.whl

    ❌ 部分工具包的安装,如 pip install bitsandbytes 默认拉取 Linux 版,会引发错误

✅ 二、安装前检查平台支持

在安装前先确认该工具包是否支持 Windows:

  • 查阅官方 GitHub 或 PyPI 页面(如 transformers、peft 等会写明支持平台)。

  • pip install 时加上 --only-binary 限制使用预编译包:

    pip install peft --only-binary=:all:

    避免默认从源码构建(源代码构建一般偏向 Linux 环境)。

✅ 三、创建隔离环境(强烈推荐)

使用 Anaconda 或 venv 创建干净的虚拟环境:

conda create -n ollama_env python=3.10
conda activate ollama_env

这样不会污染全局环境,也方便管理不同系统包的兼容性。

✅ 四、查依赖树与平台兼容

使用如下命令查看依赖包的来源与平台信息:

pip show bitsandbytes
pip list --format=columns

还可以用:

pipdeptree

来查看依赖冲突。

✅ 五、根据错误信息来判断

一些报错会有明显提示如:

.so: ELF format error ← Linux动态库被加载到Windows
No module named ‘bitsandbytes.cuda_setup’ ← 缺少 Windows 编译部分

出现 .soELFlibcuda.so 字样,就说明它拉的是 Linux 版。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90980.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloude快速入门

近期简单了解一下SpringCloude微服务,本文主要就是我学习中所记录的笔记,然后具体原理可能等以后再来深究,本文可能有些地方用词不专业还望包容一下,感兴趣可以参考官方文档来深入学习一下微服务,然后我的下一步学习就是docker和linux了。 nacos: Nacos 快速开始 | Nacos 官网…

GPT Agent与Comet AI Aent浏览器对比横评

1. 架构设计差异GPT Agent的双浏览器架构:文本浏览器:专门用于高效处理大量文本内容,适合深度信息检索和文献追踪,相当于Deep Research的延续可视化浏览器:具备界面识别与交互能力,可以点击网页按钮、识别图…

应用信息更新至1.18.0

增加DO权限 增加权限管理(需DO支持) 增加应用冻结隐藏(需DO支持) 增加权限委托(需DO支持) 增加特殊组件 ...

常用git命令集锦

git init 初始化 将当前目录初始化为 git 本地仓库,此时会在本地创建一个 .git 的文件夹 git init -q 静默执行,就是在后台执行 git init --bare –bare 参数,一般用来初始化一个空的目录,作为远程存储仓库 git init --template dir –templa…

skywalking安装

一、简介 SkyWalking是一款用于分布式系统跟踪和性能监控的开源工具。它可以帮助开发人员了解分布式系统中不同组件之间的调用关系和性能指标,从而进行故障排查和性能优化。 它支持多种语言和框架,包括Java、.NET、Node.js等。它通过在应用程序中插入代…

利用DataStream和TrafficPeak实现大数据可观察性

可观察性工作流对于深入了解应用程序的健康状况、客户流量和整体性能至关重要。然而,要实现真正的可观察性还面临一些挑战,包括海量的流量数据、数据保留、实施时间以及各项成本等。TrafficPeak是一款为Akamai云平台打造,简单易用、可快速部署…

jQuery 最新语法大全详解(2025版)

引言 jQuery 作为轻量级 JavaScript 库,核心价值在于 简化 DOM 操作、跨浏览器兼容性和高效开发。尽管现代框架崛起,jQuery 仍在遗留系统维护、快速原型开发中广泛应用。本文涵盖 jQuery 3.6 核心语法,重点解析高效用法与最佳实践。 一、jQu…

Android 15 修改截图默认音量大小

概述 在 Android 15 中,截图音效的默认音量可能过大,影响用户体验。本文将介绍如何通过修改系统源码来调整截图音效的默认音量大小。 修改位置 需要修改的文件路径: frameworks/base/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSoundProvider.kt…

Python爬虫实战:快速采集教育政策数据(附官网工具库API)

解锁教育政策研究的数据金矿,用技术提升学术效率 在教育政策研究领域,获取最新、最全面的政策文本是学术工作的基础。传统手动收集方式效率低下且容易遗漏关键政策,而Python爬虫技术为教育研究者提供了高效的数据采集解决方案。本文将系统介…

验证回文串-leetcode

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则&#xf…

嵌入式学习日志(十)

10 学习指针1 指针核心定义与本质1.1 指针与指针变量1、指针即地址,指针变量是存放地址的变量,其大小与操作系统位数相关:64 位系统中占 8 字节,32 位系统中占 4 字节。2、指针的核心功能是通过地址间接访问目标变量&#xff0…

Anaconda创建环境报错:CondaHTTPEFTOT: HTTP 403 FORBIDDEN for url

一、快速解决方案这类报错的原因通常是由于 conda 无法访问镜像源或权限被服务器拒绝,以下是常见原因和对应的解决方案:检查镜像源拼写是否正确conda config --show channels清华源镜像示例如果不正确,先清除旧配置del %USERPROFILE%\.condar…

亚马逊地址关联暴雷:新算法下的账号安全保卫战

2025年Q3,上千个店铺因共享税代地址、海外仓信息重叠等问题被批量冻结,为行业敲响了“精细化合规”的警钟。事件复盘:地址成为关联风控的“致命开关”税代机构违规引发“多米诺效应”事件的导火索指向税代机构“saqibil”,其为降低…

在本地环境中运行 ‘dom-distiller‘ GitHub 库的完整指南

在本地环境中运行 ‘dom-distiller’ GitHub 库的完整指南 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,觉得好请收藏。点击跳转到网站。 1. 项目概述 ‘dom-distiller’ 是一个用于将网页…

11. isaacsim4.2教程-Transform 树与Odometry

1. 前言学习目标在本示例中,你将学习如何:使用 TF 发布器将相机作为 TF 树的一部分发布在 TF 上发布机械臂/可动结构(articulation)的树状结构发布里程计(Odometry)消息开始之前前置条件已完成 …

安宝特新闻丨安宝特与Logivations正式建立合作伙伴关系,共筑物流新未来

近日,安宝特与物流创新企业Logivations签署合作协议,双方将深度融合技术专长,共同为客户提供高效、精准的智能物流解决方案,助力企业实现从人工巡检到智能管控的跨越式升级。 关于Logivations Logivations是一家深耕物流与供应链…

第三阶段—8天Python从入门到精通【itheima】-139节(pysqark实战-前言介绍)

目录 139节——pysqark实战-前言介绍 1.学习目标 2.spark是什么 3.如下是详细介绍 PySpark 的两种使用方式,并提供具体的代码示例【大数据应用开发比赛的代码熟悉如潮水一般冲刷我的记忆】: 一、本地模式(作为 Python 第三方库使用&#…

redis数据库的四种取得 shell方法

Redis作为高性能内存数据库,若配置不当(特别是未授权访问),将面临极高安全风险。攻击者可利用漏洞实现远程代码执行(GetShell),严重威胁数据安全与服务器控制权。本文深入剖析此类漏洞的核心原理…

墨者:SQL过滤字符后手工绕过漏洞测试(万能口令)

1. 墨者学院:SQL过滤字符后手工绕过漏洞测试(万能口令)🚀 2. 漏洞背景分析🔍 近期发现某登录系统存在SQL注入漏洞,攻击者可通过构造特殊用户名admin,a,a)#绕过身份验证。本文将深入解析其工作原理,并演示完整渗透测试流…

Kafka 顺序消费实现与优化策略

在 Apache Kafka 中,实现顺序消费需要从 Kafka 的架构和特性入手,因为 Kafka 本身是分布式的消息系统,默认情况下并不完全保证全局消息的顺序消费,但可以通过特定配置和设计来实现局部或完全的顺序消费。以下是实现 Kafka 顺序消费…