python 查询机器python、gpu、安装包等环境版本信息

checkenv.py

"""Check environment configurations and dependency versions."""import importlib
import os
import resource
import subprocess
import sys
from collections import OrderedDict, defaultdictimport torch# 查询自己想要的包写下面
PACKAGE_LIST = ["requests","tqdm","numpy","aiohttp","fastapi","hf_transfer","huggingface_hub","interegular","packaging","pillow","psutil","pydantic","uvicorn","uvloop","zmq","vllm","outlines","openai","tiktoken","anthropic","litellm",
]def get_package_versions(packages):"""Get versions of specified packages."""versions = {}for package in packages:package_name = package.split("==")[0].split(">=")[0].split("<=")[0]try:module = importlib.import_module(package_name)if hasattr(module, "__version__"):versions[package_name] = module.__version__except ModuleNotFoundError:versions[package_name] = "Module Not Found"return versionsdef get_cuda_info():"""Get CUDA-related information if available."""cuda_info = {"CUDA available": torch.cuda.is_available()}if cuda_info["CUDA available"]:cuda_info.update(_get_gpu_info())cuda_info.update(_get_cuda_version_info())return cuda_infodef _get_gpu_info():"""Get information about available GPUs."""devices = defaultdict(list)for k in range(torch.cuda.device_count()):devices[torch.cuda.get_device_name(k)].append(str(k))return {f"GPU {','.join(device_ids)}": name for name, device_ids in devices.items()}def _get_cuda_version_info():"""Get CUDA version information."""from torch.utils.cpp_extension import CUDA_HOMEcuda_info = {"CUDA_HOME": CUDA_HOME}if CUDA_HOME and os.path.isdir(CUDA_HOME):cuda_info.update(_get_nvcc_info())cuda_info.update(_get_cuda_driver_version())return cuda_infodef _get_nvcc_info():"""Get NVCC version information."""from torch.utils.cpp_extension import CUDA_HOMEtry:nvcc = os.path.join(CUDA_HOME, "bin/nvcc")nvcc_output = (subprocess.check_output(f'"{nvcc}" -V', shell=True).decode("utf-8").strip())return {"NVCC": nvcc_output[nvcc_output.rfind("Cuda compilation tools") : nvcc_output.rfind("Build")].strip()}except subprocess.SubprocessError:return {"NVCC": "Not Available"}def _get_cuda_driver_version():"""Get CUDA driver version."""try:output = subprocess.check_output(["nvidia-smi","--query-gpu=driver_version","--format=csv,noheader,nounits",])return {"CUDA Driver Version": output.decode().strip()}except subprocess.SubprocessError:return {"CUDA Driver Version": "Not Available"}def get_gpu_topology():"""Get GPU topology information."""try:result = subprocess.run(["nvidia-smi", "topo", "-m"],stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True,check=True,)return "\n" + result.stdout if result.returncode == 0 else Noneexcept subprocess.SubprocessError:return Nonedef check_env():"""Check and print environment information."""env_info = OrderedDict()env_info["Python"] = sys.version.replace("\n", "")env_info.update(get_cuda_info())env_info["PyTorch"] = torch.__version__env_info.update(get_package_versions(PACKAGE_LIST))gpu_topo = get_gpu_topology()if gpu_topo:env_info["NVIDIA Topology"] = gpu_topoulimit_soft, _ = resource.getrlimit(resource.RLIMIT_NOFILE)env_info["ulimit soft"] = ulimit_softfor k, v in env_info.items():print(f"{k}: {v}")if __name__ == "__main__":check_env()

在这里插入图片描述

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

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

相关文章

cf960(div2)

A. Submission Bait&#xff08;博弈&#xff09; 题意&#xff1a;爱丽丝和鲍勃在大小为n的数组a中进行游戏&#xff0c;他们轮流进行运算&#xff0c;爱丽丝先开始&#xff0c;不能运算的一方输&#xff0c;一开始mx0&#xff0c;每次操作&#xff0c;玩家可以选择一个牵引i…

MOMFEA-SADE--基于子空间对齐和自适应差分进化的多目标多任务优化算法

MOMFEA-SADE–基于子空间对齐和自适应差分进化的多目标多任务优化算法 title&#xff1a; Evolutionary Multitasking for Multiobjective Optimization With Subspace Alignment and Adaptive Differential Evolution author&#xff1a; Zhengping Liang, Hao Dong, Cheng …

c语言中的整形提升和算数转换

整形提升&#xff1a; 表达式中字符和短整型操作数在使用之前转换为普通整形 分为两种&#xff1a; 有符号整形提升&#xff1a;按照变量的数据类型的符号位来提升 无符号整形提升&#xff1a;按照高位补0的方式及进行提升 例如&#xff1a;char a20&#xff1b;char b130…

【Git】 如何将一个分支的某个提交合并到另一个分支

【Git】 如何将一个分支的某个提交合并到另一个分支 在使用 Git 进行版本控制时&#xff0c;常常会遇到这样的需求&#xff1a;将某个分支的特定提交合并到另一个分支中。这种情况下&#xff0c;我们可以使用 cherry-pick 命令来实现。本文将详细介绍 cherry-pick 命令的使用方…

Java基础巩固 -- 多线程

Java基础巩固 – 多线程 1.多线程 1.1 意义 Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式&#xff0c;但多线程使用了更…

“链动革新:2+1模式引领用户复购与留存潮流“

大家好&#xff01;我是吴军&#xff0c;来自一家在业界享有盛誉的软件开发公司&#xff0c;担任产品经理一职。今天&#xff0c;我想和大家深入探讨一个话题——如何利用创新的链动21模式来显著提升用户的留存率和复购率。 提到链动模式&#xff0c;很多人可能第一时间想到的是…

DEBUG:机械臂无法连接

问题 机械臂无法连接 ip 网关正确 解决 检查网口是否正常 网口损坏 usb部分可能半坏&#xff08;支持鼠标 不是转网口&#xff09;

Whisper离线部署问题处理

Whisper是OpenAI开发一款开源语音识别模型&#xff0c;可以帮我们低成本的拥有语音识别的能力。具体的安装部署方法&#xff0c;我在这里就不详细说了&#xff0c;网上有很多相关文章&#xff1a; 使用OpenAI的Whisper 模型进行语音识别 (baidu.com) 我这里主要想说的是&…

醒醒,别睡了...讲《数据分析pandas库》了—/—<6>

一、 1、长宽格式转换 基于多重索引&#xff0c;Pandas 可以很容易地完成长型、宽型数据格式的相互转换。 1.1 转换为最简格式 stack&#xff08;&#xff09;其使用法如下&#xff1a; stack函数用于将DataFrame中的列转换为行&#xff0c;即将宽格式数据转换为长格式数据。…

GitHub每周最火火火项目(7.22-7.28)

1. 项目名称&#xff1a;Django 项目介绍&#xff1a;Django 是一个高级 Python Web 框架&#xff0c;鼓励快速开发和简洁、实用的设计。它由经验丰富的开发者构建&#xff0c;旨在解决 Web 开发中的常见问题&#xff0c;提供了一套完整的工具和库&#xff0c;包括数据库ORM、…

中控屏UI设计全解析:布局与交互技巧

在现代科技的浪潮中&#xff0c;中控屏已成为智能系统不可或缺的交互界面。无论是智能家居、车载系统还是工业控制&#xff0c;一个直观、易用且美观的中控屏 UI 设计对于提升用户体验至关重要。本教程将带领你深入探索中控屏UI设计的精髓&#xff0c;指导你如何打造出既专业又…

2024.7.28 记录一次悲惨的笔试——作业帮NLP校招

小红的奇偶抽取 题目描述 题解 #include <iostream> #include<stack> using namespace std;int main() {long long n;stack <int> ji, ou;cin >> n;while (n) {int a n % 10;if (a % 2 0)ou.push(a);elseji.push(a);n n / 10;}long long jN 0, o…

用深度学习改进乳腺癌MRI诊断| 文献速递--AI辅助的放射影像疾病诊断

Title 题目 Improving breast cancer diagnostics with deep learning for MRI 用深度学习改进乳腺癌MRI诊断 01 文献速递介绍 乳腺磁共振成像&#xff08;MRI&#xff09;是一种检测乳腺癌的高度敏感的方式&#xff0c;报告的敏感性超过80%。传统上&#xff0c;其在筛查…

html+css+js作业王者荣耀司空震1个页面带js

htmlcssjs作业王者荣耀司空震1个页面带js 下载地址 https://download.csdn.net/download/qq_42431718/89595421 目录1 目录2 项目视频 htmlcssjs作业王者荣耀司空震1个页面 页面1

QQ微信头像制图工具箱小程序纯前端源码

微信小程序源码&#xff0c;经测试QQ小程序也可以完美运行&#xff0c;所以给大家分享一下这个QQ微信头像制图工具箱小程序纯前端源码。 主要功能有文字九格、头像挂件生成、爆趣九宫格、形状九宫格、创意长图、情侣头像、猫狗交流器。 这个QQ微信小程序源码是纯前端的&#x…

cesium添加流动线

1&#xff1a;新建Spriteline1MaterialProperty.js文件 import * as Cesium from cesium;export function Spriteline1MaterialProperty(duration, image) {this._definitionChanged new Cesium.Event();this.duration duration;this.image image;this._time performance.…

2024 Navicat Premium最新版简体中文版破解激活永久图文详细教程(亲测可用)

1.官网下载&#xff1a;下载地址 2.百度网盘下载&#xff1a;下载地址 3.未安装过的用户可直接跳过该步骤&#xff0c;如果已安装Navicat&#xff0c;记得先卸载干净&#xff0c;防止破解失效&#xff0c;卸载完成后执行补丁压缩包中的Navicat.bat脚本&#xff08;一闪而过表示…

Java语言程序设计——篇九(3)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 注解类型 概述标准注解实战演练实战演练实战演练 定义注解类型标准元注解 概述 注解以结构化的方式为程序元素提供信息&#xff0c;这些信息能…

Ubuntu22.04重装系统+基础配置

重装系统 note&#xff1a;备份数据&#xff0c;重装系统后home下的文件会丢失&#xff0c;所以先备份一下home的数据到其他的盘/mnt/下里。记住之前系统的DNS&#xff0c;IP和掩码。 先在Ubuntu官网下载22.04桌面版&#xff08;种子链接要用迅雷下载&#xff09;。但是版本还…

分布式ID详解

文章目录 分布式IDUUIDSnowflake算法数据库自增IDLeaf算法Redis自增ID 分布式ID 在我们业务数据量不大的时候&#xff0c;单库单表完全可以支撑现有业务&#xff0c;数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长&#xff0c;主从同步也扛不住了&#x…