重要提示

您正在查看 NeMo 2.0 文档。此版本引入了 API 的重大更改和一个新的库 NeMo Run。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档

常用配置文件#

本节介绍 NeMo 配置文件设置,该设置特定于 MM NeRF 集合中的模型。有关如何设置和运行实验(所有 NeMo 模型通用,例如实验管理器和 PyTorch Lightning 训练器参数)的常规信息,请参阅核心文档部分。

NeMo 多模态 NeRF 配置文件的模型部分通常需要有关数据集、背景和/或前景 NeRF 网络、渲染器和正在使用的指导模型的信息。本页的章节更详细地介绍了这些内容。

所有 NeMo 多模态 NeRF 脚本的示例配置文件都可以在示例的 config 目录中找到 {NEMO_ROOT/examples/multimodal/generative/nerf/conf}

训练器配置#

训练器配置指定 Pytorch Lightning Trainer 对象的参数。

trainer:
  devices: 1                     # Number of GPUs for distributed, or the list of the GPUs to use e.g. [0, 1]
  num_nodes: 1                   # Number of nodes for distributed training
  precision: 16                  # Use 16 to enable or 32 for FP32 precision
  max_steps: 10000               # Number of training steps to perform
  accelerator: gpu               # accelerator to use, only "gpu" is officially supported
  enable_checkpointing: False    # Provided by exp_manager
  logger: False                  # Provided by exp_manager
  log_every_n_steps: 1           # Interval of logging
  val_check_interval: 100        # Interval of validation
  accumulate_grad_batches: 1     # Accumulates gradients over k batches before stepping the optimizer.
  benchmark: False               # Enable the inbuilt cudnn auto-tuner to find the best algorithm to use for your hardware.
  enable_model_summary: True     # Enable or disable the model summarization

有关所有可能的参数,请参阅 Pytorch Lightning Trainer API 部分

实验管理器配置#

NeMo 实验管理器提供了一种配置日志记录、保存、恢复选项等的便捷方法。

exp_manager:
  name: ${name}                          # The name of the experiment.
  exp_dir: /results                      # Directory of the experiment, if None, defaults to "./nemo_experiments"
  create_tensorboard_logger: False       # Whether you want exp_manger to create a TensorBoard logger
  create_wandb_logger: False             # Whether you want exp_manger to create a Wandb logger
  wandb_logger_kwargs:                   # Wandb logger arguments
    project: dreamfusion
    group: nemo-df
    name: ${name}
    resume: True
  create_checkpoint_callback: True       # Whether you want Experiment manager to create a model checkpoint callback
  checkpoint_callback_params:            # Model checkpoint callback arguments
    every_n_epochs: 0
    every_n_train_steps:
    monitor: loss
    filename: '${name}-{step}'
    save_top_k: -1
    always_save_nemo: False
  resume_if_exists: True                 # Whether this experiment is resuming from a previous run
  resume_ignore_no_checkpoint: True      # Experiment manager errors out if resume_if_exists is True and no checkpoint could be found. This behavior can be disabled, in which case exp_manager will print a message and continue without restoring, by setting resume_ignore_no_checkpoint to True

模型配置#

数据集配置#

训练、验证和测试参数使用模型配置文件中的 data 部分指定。根据任务的不同,可能有参数指定数据集的增强、图像分辨率、相机参数等等。

可以在配置文件中设置实验中使用的 Dataset 类接受的任何初始化参数。有关数据集及其各自参数的列表,请参阅 API 的 数据集部分。

NeRF 数据集配置示例应如下所示

model:
  data:
    train_batch_size: 1
    train_shuffle: false
    train_dataset:
      _target_: a pytorch Dataset or IterableDataset class

    val_batch_size: 1
    val_shuffle: false
    val_dataset:
      _target_: a pytorch Dataset or IterableDataset class

    test_batch_size: 1
    test_shuffle: false
    test_dataset:
      _target_: a pytorch Dataset or IterableDataset class

模型架构配置#

每个配置文件都应描述用于实验的模型pipeline和架构。

以下是 nerf pipeline 可能使用的一系列模块

模块

描述

guidance

指导模型

nerf

用于前景密度和颜色的主网络

background

用于背景颜色的补充层

material

用于光照和阴影效果的材质网络

renderer

渲染层

有关模型特定配置,请参阅 DreamFusion

优化器配置#

optim:
  name: adan
  lr: 5e-3
  eps: 1e-8
  weight_decay: 2e-5
  max_grad_norm: 5.0
  foreach: False

默认情况下,我们使用 adan 作为优化器,有关所有支持的优化器,请参阅 NeMo 用户指南。