Skip to main content

ML FAQ

Thoughts

  • ML 最重要的是数据
  • CVAT 目前用下来是标注 图片/视频 最好的用具
    • 一定要注意 Tracker 插帧的问题
    • 尽量使用快捷键

Hardware

DeviceArchRAMCUDATensorRTFP64FP32FP16INT8INT4TensorTF32 TensorFP16 Tensor
NVIDIA L4Ada Lovelace24GB30.3 TFLOPS120 TFLOPS242 TFLOPS
NVIDIA Tesla T4Turing16GB2,560320Mix 65 TFLOPS8.1 TFLOPS130 TOPS260 TOPS
NVIDIA GeForce RTX 4090Ada Lovelace24GB16,3841,321
NVIDIA Quadro RTX 6000Turing24GB4,6085767216.3 TFLOPS130.5 TFLOPS
NVIDIA Tesla V100Volta32/16G HBM27 TFLOPS14 TFLOPS62 TOPS
NVIDIA A100 PCIe40/80G HBM2e9.7 TFLOPS19.5 TFLOPS156 TFPLOPS312 TFLOPS
NVIDIA H100 PCIe80G26 TFLOPS51 TFLOPS756.5 TFLOPS1,513 TFLOPS
NVIDIA Tesla P100 PCIePascal35844.7 TFLOPS9.3 TFLOPS18.7 TFLOPS
NVIDIA Tesla P100 SXMPascal35845.3 TFLOPS10.6 TFLOPS21.2 TFLOPS

Nvidia Arch

microarchitecture

Pascal (2016) > Volta (2017) > Turing (2018) > Ampere (2020) > Hopper (2022) >= Ada Lovelace (2022)

  • Pascal - 2016
  • Volta - 2017, professional
    • 核心 80SM, 32 FP64+ 63 Int32 + 64 FP32 + 8 Tensor Cores/SM
    • 特点 NVLink 2.0, 第一代 Tensor Cores
    • 制程 12nm, 21.1B 亿个晶体管
    • 产品 V1000TiTan V
  • Turning - 2018, consumer
    • 核心 102核心,92SM, 64 FP32 + 64 INT32 + 8 Tensor Cores/SM
    • 特点 Tensor Core 2.0, 第一代 RT Core
    • 制程 12nm, 18.6B 亿个晶体管
    • 产品 T4, 2080Ti, RTX 5000
  • Ampere - 2020
    • 核心 108 SM, 64 FP32 + 64 INT32 + 4 Tensor Cores/SM
    • 特点 Tensor Core 3.0, RT Core 2.0, NVLink 3.0, MIG 1.0
    • 制程 7nm, 28.3B 亿个晶体管
    • 产品
      • A100, A800, A30
      • 桌面 GeForce RTX 30 series
      • 专业级/工作站 RTX A series
      • 服务器/数据中心 A100
  • Hopper - 2022, datacenter
    • 核心 132 SM, 128 FP32 + 64 INT32 + 64 FP64 + 4 Tensor Cores/SM
    • 特点 Tensor Core 4.0, NVLink 4.0, MIG 2.0
    • 制程 4nm, 80B 亿个晶体管
    • 产品
      • Tesla H 系列
      • H100, H800
  • Ada Lovelace - 2022, consumer, professional
    • 产品
      • 桌面 GeForce RTX 40 系列
      • 工作站/专业级 RTX Ada Generation
      • 服务器/数据中心 Tesla Ada (L4x)
  • Blackwell - 2024
  • Rubin - 2026

Nvidia Product Series

  • consumer - 消费级
    • Desktop - 桌面 - GeForce RTX 30
    • Professional/workstation - 专业级/工作站 - RTX A/Ada
    • Server/datacenter - 服务器/数据中心 - A100
  • datacenter - 数据中心 - Tesla H

  • 更专业的设备支持更多的精度
    • CUDA - FP16 FP32 FP64 INT1 INT4 INT8 TF32 BF16
    • Tensor - FP16 FP32 FP64 INT1 INT4 INT8 TF32 BF16
    • FP32 - Tensor 都没有,CUDA 都有

SXM vs PCIe

  • SXM - Server eXternal Module
    • 专有接口、更高带宽、更高功率限制、高效散热设计
    • 应用场景 - 数据中心、高性能计算、AI 训练
    • 如 NVIDIA Tesla V100, A100
  • PCIe - Peripheral Component Interconnect Express
    • 通用接口、更广泛的应用、更多的设备支持
    • 应用场景 - 工作站、服务器、桌面
    • 如 NVIDIA GeForce, Quadro, Tesla

TensorFlow vs PyTorch

推荐 PyTorch

VAE vs GAN

  • GAN
    • generator + discriminator
    • adversarial training
    • 生成高质量、真实的图片、数据
    • 图片生成、图像到图像的转换、超分辨率
    • 弱点: 训练不稳定、模式崩溃、模式坍塌;需要小心的调参
  • VAE
    • encoder + decoder, probabilistic framework
    • input data -> latent space - 潜在空间/隐空间 - 压缩后的数据/PCA表示
    • 训练:
      • 优化一个损失函数来进行训练,这个损失函数包含重构损失(确保输出与输入相似)和正则化项(确保潜在空间具有一定的结构,通常为高斯分布)。
      • 这个正则化项促使潜在空间连续且平滑,从而使得从中采样新的数据点变得容易。
      • KL-divergence
    • 优点: 生成的数据更加平滑、连续;更容易训练;更容易生成新数据
    • 缺点: 生成的数据质量不如 GAN
    • reconstruction loss, regularization term

frames

# -q:v 1-31 - 16 为中等,1 为最好,31 为最差
ffmpeg -i video.mp4 -start_number 0 -b:v 10000k -vsync 0 -an -y -q:v 16 images/%d.jpg

# 推荐 - 增加视频名称前缀,多个视频可合并,质量调高一点
ffmpeg -i v2.mp4 -start_number 0 -b:v 10000k -vsync 0 -an -y -q:v 4 v2/v2-frame_%06d.jpg

ImportError: cannot import name 'packaging' from 'pkg_resources' (/usr/local/lib/python3.10/dist-packages/pkg_resources/init.py)

  • setuptools 70 的问题
python -m pip install setuptools==69.5.1

ModuleNotFoundError: No module named 'packaging'

pip install wheel

cannot import name 'is_flash_attn_greater_or_equal_2_10' from 'transformers.utils'

Could not load library libcudnn_cnn_train.so.8

  • /opt/conda/lib/python3.10/site-packages/nvidia/cudnn/lib/libcudnn_cnn_train.so.8
  • /opt/conda/lib/python3.10/site-packages/torch/lib
  • /usr/local/cuda/lib64
Could not load library libcudnn_cnn_train.so.8. Error: /usr/local/cuda/lib64/libcudnn_cnn_train.so.8: undefined symbol: _ZN5cudnn3cnn5infer22queryClusterPropertiesERPhS3_, version libcudnn_cnn_infer.so.8
ldd /opt/conda/lib/python3.10/site-packages/nvidia/cudnn/lib/libcudnn_cnn_train.so.8
ldd /usr/local/cuda/lib64/libcudnn_cnn_train.so.8

# 修改后就可以了
LD_LIBRARY_PATH=/opt/conda/lib/python3.10/site-packages/nvidia/cudnn/lib/:$LD_LIBRARY_PATH yolo

#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/conda/lib/python3.10/site-packages/torch/lib

Placeholder shape mismatches (expected 1 vs got tensorData with 2240) at dimIdx = 0