1.为pycharm配置远程服务器上的虚拟环境
参考文章pycharm配置SSH远程连接服务器(0基础详细版)_pycharm ssh-CSDN博客
2.机器学习性能评估
Profiling 是一种详细分析程序运行过程中的性能瓶颈的过程。它主要关注以下几个方面:
- CPU/GPU 时间:每个函数、每个操作或每个线程在 CPU 或 GPU 上消耗的时间。
- 内存使用:程序在运行过程中使用的内存量,包括模型参数、输入数据、临时计算结果等。
- 输入/输出 (I/O):读取和写入数据的时间,尤其是在加载大规模模型或数据时。
- 函数调用链:每个函数或操作的执行时间,以及它们之间的调用关系。
Benchmarking 是用来测量系统(如硬件、软件或算法)性能的标准化测试。它通常不涉及分析代码的内部结构,而是通过统一的测试方法来对比不同系统或配置的性能。
Benchmarking 的目标:
- 量化性能:对比不同模型、算法或硬件配置的实际计算能力。例如,可以测试不同 GPU 的推理速度,或者比较不同优化方法对模型速度的影响。
- 评估效率:通过统一的基准测试,量化性能指标(如吞吐量、延迟、资源消耗等),帮助开发者选择最合适的硬件或优化方案。
- 指导优化方向:基准测试结果可以帮助开发者决定哪些部分需要优化,是否需要更强大的硬件支持等。
基准测试的指标:
- 推理速度(Inference Speed):模型处理输入的速度,通常以 FPS(每秒帧数)或 延迟(latency) 来表示。
- 吞吐量(Throughput):每秒处理的数据量,通常以 samples/second 来表示。
- 内存消耗(Memory Consumption):模型在运行时消耗的内存量。
- 能效(Energy Efficiency):在单位时间内消耗的能量,特别是在移动设备或嵌入式系统中。
Batch Size 和 Epoch 的关系:
在训练过程中,训练集会被划分为多个批次,每个批次的大小由batch_size
决定。当完成一个epoch时,整个训练集的数据都已经用于一次参数更新。具体关系如下:
-
每个epoch包含多少批次(batches):
每个epoch的批次数=训练集的样本数batch_size\text{每个epoch的批次数} = \frac{\text{训练集的样本数}}{\text{batch\_size}}每个epoch的批次数=batch_size训练集的样本数例如,如果训练集包含 1000 个样本,
batch_size
设置为 64,则每个epoch会包含约 16 次批次(1000 / 64 = 15.625,向下取整为16)。 -
epoch 和 batch size 的影响:
- Epoch数:
epoch
表示对整个训练集进行多少次“遍历”,即训练数据通过模型的次数。每个epoch都会用batch_size
指定的批次数据进行一次更新。 - Batch Size:
batch_size
影响每次参数更新的频率。较小的batch_size
会使得参数更新更频繁,每次使用少量数据进行训练,训练过程中的更新会更加频繁,可能会使训练时间更长,但能更好地拟合数据。
训练的总步数(即总的参数更新次数)是由
总步数=训练集的样本数batch_size×epoch数\text{总步数} = \frac{\text{训练集的样本数}}{\text{batch\_size}} \times \text{epoch数}总步数=batch_size训练集的样本数×epoch数epoch
和batch_size
决定的。总步数公式如下: - Epoch数: