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

python打卡day34@浙大疏锦行

知识点回归:

  1. CPU性能的查看:看架构代际、核心数、线程数
  2. GPU性能的查看:看显存、看级别、看架构代际
  3. GPU训练的方法:数据和模型移动到GPU device上
  4. 类的call方法:为什么定义前向传播时可以直接写作self.fc1(x)

①CPU性能查看 :

- 架构代际: cat /proc/cpuinfo 查看型号和flags
- 核心/线程数: lscpu 或Python中 os.cpu_count()

②GPU性能查看 :

import torch
print(torch.cuda.get_device_name(0))  # 型号
print(torch.cuda.get_device_capability(0))  # 计算能力
print(torch.cuda.get_device_properties(0).total_memory/1e9)  # 显存(GB)

③GPU训练方法 :

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = Model().to(device)
data = data.to(device)

④类的 __call__ 方法 :

- 当类实现 __call__ 时,实例可以像函数一样调用
- self.fc1(x) 有效是因为PyTorch的 nn.Module 实现了 __call__ ,其内部会调用 forward()

 实验现象解释:

一、GPU-CPU交互特性 :

- loss.item() 确实需要同步,但现代GPU有:
  - 异步执行能力(计算和传输可重叠)
  - 并行流水线(下一个计算可提前开始)

二、瓶颈分析 :

# 典型训练循环中的时间分布
for epoch in range(epochs):# 数据加载时间(CPU)  ← 常被忽视的瓶颈# GPU计算时间# 同步记录时间(约0.1-1ms/次) # 其他开销(梯度清零等)

三、实验数据解读 :

- 记录次数从200→10次(20倍变化),但时间仅差0.69秒(6.6%)
- 说明:
  - 记录操作本身耗时占比极小(<1ms/次)
  - 主要时间消耗在数据加载和GPU计算

四、验证方法建议 :

# 精确测量记录操作耗时
import time
record_times = []
for _ in range(1000):start = time.perf_counter()losses.append(loss.item())  # 测试单次记录耗时record_times.append(time.perf_counter() - start)
print(f"平均记录耗时:{sum(record_times)/len(record_times)*1e6:.2f}微秒")

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

相关文章:

  • SOC-ESP32S3部分:8-GPIO输出LED控制
  • 05算法学习_59. 螺旋矩阵 II
  • 绘制音频信号的各种频谱图,包括Mel频谱图、STFT频谱图等。它不仅能够绘制频谱图librosa.display.specshow
  • Linux `>`/`>>` 重定向操作符深度解析与高阶应用指南
  • 【自定义类型-联合和枚举】--联合体类型,联合体大小的计算,枚举类型,枚举类型的使用
  • 李宏毅《深度学习》:Self-attention 自注意力机制
  • C++初阶-list的使用1
  • Linux中的tty与login之间的关系
  • Python web 开发 Flask HTTP 服务
  • 分享|16个含源码和数据集的计算机视觉实战项目
  • 二十三、面向对象底层逻辑-BeanDefinitionParser接口设计哲学
  • [Vue]路由基础使用和路径传参
  • 使用VGG-16模型来对海贼王中的角色进行图像分类
  • OSI 网络七层模型中的物理层、数据链路层、网络层
  • WooCommerce缓存教程 – 如何防止缓存破坏你的WooCommerce网站?
  • AtCoder Beginner Contest 406(ABCD)
  • 第J2周:ResNet50V2 算法实战与解析
  • Live Search API :给大模型装了一个“实时搜索引擎”的插件
  • 每天分钟级别时间维度在数据仓库的作用与实现——以Doris和Hive为例(开箱即用)
  • 虚拟机Centos7:Cannot find a valid baseurl for repo: base/7/x86_64问题解决
  • IP风险度自检,多维度守护网络安全
  • NV066NV074美光固态颗粒NV084NV085
  • C++ 日志系统实战第六步:性能测试
  • 低代码平台搭建
  • AI编程对传统软件开发的冲击和思考
  • Java桌面应用开发详解:自制截图工具从设计到打包的全流程【附源码与演示】
  • 手写一个简单的线程池
  • AI开发实习生面试总结(持续更新中...)
  • python实战:Python脚本后台运行的方法
  • siparmyknife:SIP协议渗透测试的瑞士军刀!全参数详细教程!Kali Linux教程!