メインコンテンツまでスキップ
バージョン: Next

Megatron-LMの高速化関連オプション一覧

network_size_args

オプション名役割デフォルト値制約
num-layersトランスフォーマーレイヤ数Noneモデル依存, int
encoder-num-layersトランスフォーマーエンコーダレイヤ数Noneモデル依存, int
decoder-num-layersトランスフォーマーデコーダレイヤ数Noneモデル依存, int
hidden-sizeトランスフォーマーの隠れサイズNoneモデル依存、int
ffn-hidden-sizeトランスフォーマーFFNの隠れサイズ4 * hidden-sizeモデル依存、int
num-attention-headsトランスフォーマーアテンションヘッド数Noneモデル依存、int
kv-channelsマルチヘッドアテンションのProjection weights dimensionhidden-size // num-attention-headsモデル依存、int
group-query-attentiongroup-query-attentionを使用する有無
num-query-groupsgroup-query-attentionのquery-group数1int
max-position-embeddingsposition embeddingサイズNoneモデル依存、int
position-embedding-typeDeprecated. Position embedding type"learned_absolute"learned_absolute or "rope" or "none"
use-rotary-position-embeddingsrotary position embeddingsを使用する有無
rotary-baserotary position embeddingsのtheta値10000int
rotary-percentrotary dimensionの使用率1.0 (100%)float
rotary-interleavedinterleaved rotary embeddingを使用する有無
rotary-seq-len-interpolation-factorrotary embeddingsのsequence length補間係数Noneint
no-position-embeddingposition embeddingを使用しない有無
make-vocab-size-divisible-by計算効率のためにvocab sizeを割り切る単一サイズ。この値でpaddingされる128int
normalizationlayer normalization type"layernorm""layernorm" or "rmsnorm"
norm-epsilonlayer norm epsilon1e-5float
apply-layernorm-1p数値的な安定性を向上させるためにlayer normを0中心に調整する有無
apply-residual-connection-post-layernormオリジナルのBERT残差接続順序を使用する有無
openai-geluOpenAI GeLUを使用する(後方互換性の確保を除いて非推奨)有無
squared-reluデフォルトgeluの代わりにsquared relu activationを使用する有無
swigluデフォルトgeluの代わりにgated linear units and SiLU activationを使用する有無
onnx-safeONNX exporterの既知の問題を回避するオプションfalsebool
bert-no-binary-headBERT binary headを無効化する有無
untie-embeddings-and-output-weightsembeddingsとoutput weightsをほどく有無

regularization_args

オプション名役割デフォルト値制約
attention-dropoutPost attention dropout率0.1float
hidden-dropouthidden state transformerのdropout率0.1float
weight-decayL2正規化のweight decay係数0.01float
start-weight-decayL2正規化のweight decay係数の初期値なしfloat
end-weight-decayL2正規化のweight decay係数の最終値なしfloat
weight-decay-incr-styleweight decay増加関数"constant""constant" or "linear" or "cosine"
clip-gradglobal L2 normに基づくGradient clipping1.0float
adam-beta1adamの係数10.9float
adam-beta2adamの係数20.999float
adam-eps数値安定性を向上させるための分母に加算される項1e-8float
sgd-momentumSGDのmomentum因子0.9float

training_args

オプション名役割デフォルト値制約
micro-batch-sizeマイクロバッチサイズNoneint
global-batch-sizeグローバルバッチサイズNone(micro-batch-size * data-parallel-size)int
rampup-batch-size--rampup-batch-size <start batch size> <batch size incerement> <ramp-up samples>、start batch sizeからglobal-batch-sizeまでイテレーション毎に線形にバッチサイズを増加させるNone
decrease-batch-size-if-neededbatch_sizeがmicro_batch_size×dp_sizeで割り切れない場合にbatch_sizeを減らす有無
recompute-activations大きいモデル、シーケンス、バッチサイズのトレーニングのためにactivationの再計算を有効化有無
recompute-granularityrecompute-activationsの粒度、"full":tranformer layer全体、"selective":core attention partNone"full" or "selective"
no-check-for-nan-in-loss-and-gradloss, gradのNaNをチェックしない有無
distribute-saved-activations再計算したactivationsをモデルパラレルグループを横断して分配する有無
recompute-method再計算メソッド、"uniform":transformer layerを均等に分割し、各チャンクで再計算、"block":パイプラインステージごとに再計算None"uniform" or "block"
recompute-num-layersrecompute-methodで指定した再計算手法における再計算レイヤの数1int
no-clone-scatter-output-in-embeddingemebedding layerにおけるscatterの出力をGC original tensorへとcloneしない有無
profilensys profilingを有効にする有無
profile-step-startプロファイルを取る開始global step10int
profile-step-endプロファイルを取る終了global step12int
profile-ranksプロファイルを取るグローバルランク[0]int配列
tp-comm-overlapTP通信とGEMMカーネルをオーバラップする有無
tp-comm-overlap-cfgtp-comm-overlapのコンフィグファイルNonestr
disable-tp-comm-overlap-agパイプラインにおけるGEMMとAll-Gatherのオーバラップを無効化する有無
disable-tp-comm-overlap-rsパイプラインにおけるGEMMとReduce-Scatterのオーバラップを無効化する有無
tp-comm-overlap-rs-dgradReduce-Scatterとdgrad GEMMをオーバラップする有無
disable-tp-comm-bulk-dgradAll-Gatherとbprop activation gradient GEMMのオーバラップを無効化する有無
disable-tp-comm-bulk-wgradAll-Gatherとbprop weight gradient GEMMのオーバラップを無効化する有無
use-cpu-initializationCPUで重みを初期化し、TPによる初期化の違いを排除する有無
empty-unused-memory-levelイテレーション毎にtorch.cuda.empty_cache()を呼ぶ00 (off) or 1 (moderate) or 2 (aggressive)
deterministic-modeデバッグ用に決定的動作で実行する有無
check-weight-hash-across-dp-replicas-intervalweight hashを確認するintervalNoneint
calculate-per-token-lossglobal batchのnon-padded tokenに対してcross entropy lossを計算する有無

deprecated

オプション名役割デフォルト値制約
checkpoint-activationsrecompute-activationsと同等有無
train-iters学習イテレーション数Noneint, train-samplesのどちらかを設定
train-samples学習サンプル数Noneint, train-itersのどちらかを設定
log-intervalログ出力のイテレーション間隔100int
exit-interval終了イテレーションNoneint
exit-duration-in-mins終了時間(分)Noneint
exit-signal-handlerSIGTERM受信後、checkpointをsaveして終了する有無
tensorboard-dirtensorboard logのディレクトリNonestr
no-masked-softmax-fusionquery_key_value scaling, masking, softmaxのfusionを無効化有無
no-bias-gelu-fusionbias, geluのfusionを無効化有無
no-bias-swiglu-fusionbias, swigluのfusionを無効化有無
no-bias-dropout-fusionbias, dropoutのfusionを無効化有無
no-bias-rope-fusionrope fusionを無効化。megatron-coreのみ対応有無
cross-entropy-loss-fusioncross entropy loss計算をfusionする有無
use-flash-attnFlashAttentionを使用する有無
disable-bias-linearlinear layersのbiasを無効化する有無
add-qkv-biasQKV linear layerのbiasを有効化有無
optimizeroptimizer function"adam""adam" or "sgd"
dataloader-typesingle passかmulti passNone"single" or "cyclic" or "external"
no-async-tensor-model-parallel-allreduceこのオプションは無視される有無
no-persist-layer-normpersistent fused layer norm kernelを無効化する。特定のhidden sizeのみサポートされる有無
sequence-parallelMegatron-LMのsequence parallel optimizationを有効化する有無
no-gradient-accumulation-fusionlinear layerのweight gradient計算に対するfusing gradient accumulationを無効化する有無
use-mcore-modelsmegatron-coreを使用する。しかしデフォルトでmcoreを使用するのでdeprecated有無
use-legacy-modelsmegatron-legacyを使用する有無
manual-gcしきい値ベースのガベージコレクターを使用しない有無
manual-gc-intervalガベージコレクションをトリガーするトレーニングステップ間隔0(gcをトリガーしない)int
no-manual-gc-evalevalではmanual gcしない有無
disable-tp-comm-split-agAll-Gatherとfprop GEMMをオーバラップしない有無
disable-tp-comm-split-rsReduce-Scatterとfprop GEMMをオーバラップしない有無

initialization_args

オプション名役割デフォルト値制約
seedpython, numpy, pytorch, cudaで使用されるRandom seed1234int
data-parallel-random-initdata parallel ranksに沿ってパラメータをランダム初期化する有無
init-method-std重みの初期化に使用されるゼロ平均正規分布の標準偏差0.02float
init-method-xavier-uniformXavier uniform parameter初期化を有効化有無

learning_rate_args

オプション名役割デフォルト値制約
lrwarmup, decay適用前の初期learning rateNonefloat
lr-decay-styleLearning rate decay function"linear""constant" or "linear" or "cosine" or "inverse-square-root" or "WSD"
lr-wsd-decay-styleWSDのdecay style"exponential""exponential" or "linear" or "cosine"
lr-decay-itersdecay learning rate overのイテレーション数None(= train-iters)int
lr-decay-samplesdecay learning rate overのサンプル数None(= train-samples)int
lr-wsd-decay-samplesWSDにおけるdecayサンプル数Noneint
lr-wsd-decay-itersWSDにおけるdecayイテレーション数Noneint
lr-warmup-fractionfraction of lr-warmup-(iters/samples)Nonefloat
lr-warmup-iterslinearly warmup learning rate overのイテレーション数0int
lr-warmup-sampleslinearly warmup learning rate overのサンプル数0int
lr-warmup-initlr warmupの初期値0.0float
warmup旧lr warmupパラメータ、lr-warmup-*を使うNoneint
min-lrlearning rateの最小値0.0float
override-opt_param-schedulerチェックポイントを無視してlrスケジューラの値をすべてリセットする有無
use-checkpoint-opt_param-schedulerチェックポイントのlrスケジューラの値を使用する有無
decoupled-lr入力と出力層でlrを分けるNonefloat
decoupled-min-lr入力と出力層でlrの最小値を分けるNonefloat

checkpointing_args

オプション名役割デフォルト値制約
saveチェックポイントの保存パスNonestr
save-intervalチェックポイントを保存するイテレーション間隔Noneint
no-save-optimoptimizerを保存しない有無
no-save-rngrng stateを保存しない有無
loadチェックポイントのloadパスNonestr
no-load-optimチェックポイントのoptimizerをloadしない有無
no-load-rngチェックポイントのrng stateをloadしない有無
non-persistent-save-intervalnon-persistent savesするイテレーション間隔Noneint
non-persistent-ckpt-typenon-persistent modelチェックポイントのタイプNone(non-persistent checkpointingを使用しない)"global"(Luster)or "local"(rankごとにSSD/ramdisk、TBD)or "in_memory"(serializationを防ぐ特別な方法、TBD)
non-persistent-global-ckpt-dirglobal non-persistent model checkpointsのディレクトリNonestr
finetunefinetuneのためにチェックポイントからoptimizer, rng stateをloadせずに、iterationを0に設定する有無
pretrained-checkpointファインチューンのために事前学習されたモデルのチェックポイントディレクトリNonestr
ckpt-steploadするチェックポイントのステップNoneint
no-initializationモデル構築時に初期化を行わないことでチェックポイントからの読み込み時に起動時間を短縮する有無
use-checkpoint-argsチェックポイントのargsで現在のargsを上書きする有無
exit-on-missing-checkpointチェックポイントのloadに失敗した場合に、ランダムパラメータでtrainingせずに終了する有無
use-dist-ckptdistributed checkpoint formatを使用する有無
auto-detect-ckpt-formatチェックポイントフォーマットを自動検出する有無
dist-ckpt-formatdistributed checkpoint format"torch_dist""zarr" or "torch_dist"
ckpt-fully-parallel-saveデフォルトになったのでDeprecated有無
no-ckpt-fully-parallel-saveckpt-fully-parallel-saveしない有無
async-saveチェックポイントを非同期保存する有無
ckpt-fully-parallel-loadckpt-fully-parallel-saveで保存されたチェックポイントのload有無
ckpt-assume-constant-structuremodel, optimizer構造がconstantであることを仮定する有無
dist-ckpt-strictnessdistributed checkpoint loadにおけるkey mismatchのhandling方法"assume_ok_unexpected"StrictHandling.values

mixed_precision_args

オプション名役割デフォルト値制約
fp16fp16でmodelを実行する有無
bf16bfloat16でmodelを実行する有無
loss-scaleStatic loss scaling、2べきを設定するとfp16 convergenceの向上を期待できるNone (dynamic loss scaling)float
initial-loss-scaledynamic loss scalingの初期値2**32float
min-loss-scaledynamic loss scalingの最小値1.0float
loss-scale-windowdynamic scaleの上下ウィンドウ1000float
hysteresisdynamic loss scalingのhysteresis2int
fp32-residual-connectionresidual connectionsをFP32に移行有無
apply-query-key-layer-scalingscale Q * K^T by 1 / layer-number有無
attention-softmax-in-fp32--no-query-key-layer-scaling時に、fp32でattention maskingとsoftmaxを計算する有無
accumulate-allreduce-grads-in-fp32gradient accumulationとallreduceをFP32で実行有無
fp16-lm-cross-entropylmヘッドのクロスエントロピーのunreduced loss計算をfp16に移行有無

distributed_args

オプション名役割デフォルト値制約
tensor-model-parallel-sizeTPサイズ1int
pipeline-model-parallel-sizePPサイズ1int
encoder-pipeline-model-parallel-sizeencoderのPPサイズNoneint
pipeline-model-parallel-split-rankencoderとdecoderで分割するランク。Deprecated: use encoder-pipeline-model-parallel-sizeNoneint
model-parallel-size旧オプション、tensor-model-parallel-sizeを使用するNoneint
num-layers-per-virtual-pipeline-stagevirtual pipeline stageのレイヤ数Noneint
no-overlap-p2p-communicationpipeline parallel communicationとforward/backwardチャンクをオーバラップしない有無
distributed-backenddistributed trainingのバックエンド"nccl""nccl" or "gloo"
distributed-timeout-minutestorch.distributed.のタイムアウト分10int
overlap-grad-reduceDDP grad reduceをオーバラップする有無
defer-embedding-wgrad-computevocabulary projection linear layer weight gradient計算をpipeline flushまで延期する有無
wgrad-deferral-limitdefer-embedding-wgrad-computeにおいて延期するマイクロバッチ数0int
no-delay-grad-reduce最初のPPステージを除くすべてのPPステージでgrad reductionを遅延/同期させない有無
ddp-bucket-sizedata-parallel通信のバケットサイズNoneint
ddp-average-in-collectiveコレクティブ通信で平均を計算する有無
overlap-param-gatherparam all-gatherをオーバラップする有無
delay-param-gather最初のPPステージを除くすべてのPPステージでparal all-gatherを遅延/同期させる有無
no-scatter-gather-tensors-in-pipelineパイプラインでのテンソルの通信を最適化するためにscatter/gatherを使用しない有無
use-ring-exchange-p2pp2p communicationsにcustom-built ring exchangeを使用する有無
local-rankローカルランク有無
lazy-mpu-initinitialize_megatron()時にDDPの初期化を省略し、代替の関数を返す。external DDP manager用有無
standalone-embedding-stageinput embedding layerをpipeline stageに配置する有無
use-distributed-optimizerdistributed optimizerを使用する有無
context-parallel-sizecontext parallelismの次元数1int
nccl-communicator-config-pathNCCL communicator config yamlのパス。min_ctas, max_ctas, cga_cluster_sizeを設定Nonestr
use-tp-pp-dp-mappingデフォルトtp-dp-ppではなくtp-pp-dpでrankを割り当てるNonestr

validation_args

オプション名役割デフォルト値制約
eval-itersevaluation validation/testのイテレーション数100int
eval-intervalevaluationのイテレーション間隔1000int
test-mode実験と並行してreal-time test行う有無
skip-traintrainingを省略し、evalutionのみ実行する有無

data_args

オプション名役割デフォルト値制約
data-pathデータセットのパス、複数指定可None
splittraining, validation, testの分割割合"969, 30, 1"str
train-data-pathtrainingデータセットのパスNone
valid-data-pathvalidデータセットのパスNone
test-data-pathtestデータセットのパスNone
data-cache-pathキャッシュインデックスファイルの格納パスNone
no-mmap-bin-files.binファイルのmmap-ingを無効化する有無
mock-datadata load, validation, optをスキップして、人工的にモックデータを生成する有無
vocab-sizevocab sizeNoneint
vocab-filevocab fileのパスNonestr
merge-fileBPE merge fileのパスNonestr
vocab-extra-ids追加vocabularyトークン数0int
seq-length最大シーケンス長Noneint
encoder-seq-lengthencoderの最大シーケンス長Noneint
decoder-seq-lengthdecoderの最大シーケンス長Noneint
retriever-seq-lengthbiencoder modelのretrieverのための最大シーケンス長256int
sample-ratetrainingデータのサンプルレート1.0float, (0,1)
mask-probトークンをマスクに置き換える確率0.15float
short-seq-probshortシーケンスを生成する確率0.1float
num-workersDataloader number of workers2int
tokenizer-type使用するtokenizerNone"BertWordPieceLowerCase" or "BertWordPieceCase" or "GPT2BPETokenizer" or "SentencePieceTokenizer" or "GPTSentencePieceTokenizer" or "HuggingFaceTokenizer" or "Llama2Tokenizer" or "Llama3Tokenizer" or "MistralTokenizer" or "TikTokenizer" or "NullTokenizer"
tokenizer-modelSentencepiece tokenizer modelNonestr
tiktoken-patterntiktoken tokeninzerのバージョンNone"v1" or "v2"
tiktoken-num-special-tokenstiktoken tokeninzerのスペシャルトークン数1000int
tiktoken-special-tokenstiktokenスペシャルトークン例:["<unk>", "<s>", "</s>"]Nonestr配列
reset-position-idsend-of-document tokenの後にposistion idsをリセットする有無
reset-attention-maskend-of-document tokenの後にattention maskをリセットする有無
eod-mask-lossend-of-document tokenのためにlossをmaskする有無
no-create-attention-mask-in-dataloaderdataloaderでattention masksを作らない有無
num-dataset-builder-threadsdataset builderのためのrankごとのスレッド数1int
s3-cache-paths3 dataloaderを使用した際のcache index filesパスNonestr

autoresume_args

オプション名役割デフォルト値制約
adlr-autoresumeadlr cluster上でautoresumeを有効化する有無
adlr-autoresume-intervalautoresume信号をチェックする間隔1000int

moe_args

オプション名役割デフォルト値制約
expert-model-parallel-sizeexpert model parallelismの次元1int
num-expertsMoEのexpert数Noneint
moe-router-load-balancing-typeload balancing type"aux_loss""aux_loss" or "sinkhorn" or "none"
moe-router-topk各トークンにルーティングするエキスパートの数2int
moe-router-pre-softmaxpre-softmax routingを有効化有無
moe-grouped-gemmGrouped GEMMを活用有無
moe-aux-loss-coeffaux lossの係数をスケーリング。推奨1e-20.0float
moe-z-loss-coeffz-lossの係数をスケーリング。推奨1e-3Nonefloat
moe-input-jitter-eps入力テンソルに印加するノイズのjitter-epsNonefloat
moe-token-dispatcher-typemoe-token-dispatcher-type"allgather""allgather" or "alltoall"
moe-per-layer-loggingレイヤごとのloggingを有効化有無
moe-expert-capacity-factor各expertのcapacity factorNonefloat
moe-pad-expert-input-to-capacity入力のパディング有無
moe-token-drop-policydrop tokens policy"probs"probs or "position"
moe-layer-recomputemoe_layerのcheckpointing有無
moe-extended-tpexpert parallelismを利用する有無

logging_args

オプション名役割デフォルト値制約
log-params-normparams normを計算しログ出力する有無
log-num-zeros-in-grad勾配の零数を計算しログ出力する有無
log-throughputthroughputを計算しログ出力する有無
log-progresscheckpoint directoryのprogress.txtにprogressを出力する有無
timing-log-levelログレベル00(イテレーション情報のみ)or 1(一部のoperations)or 2(全てのoperations)
no-barrier-with-level-1-timingLevel 1タイマーにbarrierを使用しない有無
timing-log-option複数rankの時間reportの方法"minmax""max"(最大値のみ報告)or "minmax"(最小値と最大値のみ報告)or "all"(全て報告)
tensorboard-log-intervaltensorboardのログ間隔1int
tensorboard-queue-sizetensorboardのイベントキューサイズ1000int
log-timers-to-tensorboardtensorboardにtimersを記録する有無
no-log-loss-scale-to-tensorboardtensorboardにloss scaleを記録しない有無
log-validation-ppl-to-tensorboardtensorboardにvalidation perplexityを記録する有無
log-memory-to-tensorboardtensorboardにmemoryを記録する有無
log-world-size-to-tensorboardtensorboardにworld-sizeを記録する有無
wandb-projectwandb project name""str
wandb-exp-namewandb experiment name""str
wandb-save-dirwandb resultsをローカルに保存するディレクトリ""str
logging-levelデフォルトロギングレベルNonestr

straggler_detector_args

オプション名役割デフォルト値制約
log-stragglerGPU毎にstragglerをログ出力する有無
disable-straggler-on-startupStartup時にStragglerDetectorを無効化する有無
straggler-ctrlr-portStragglerDetectorをon/offするポート65535int
straggler-minmax-counthigh/low estimated throughputを報告するランク数1int

inference_args

オプション名役割デフォルト値制約
inference-batch-times-seqlen-threshold推論時に、batch size×sequence-lengthがこの値を下回る場合、pipeliningを使用しない512int
max-tokens-to-oomOOMを防ぐための、推論時のトークン数の上限12000int
output-bert-embeddingsBert embeddingsを出力する有無
bert-embedder-typeBert embedder"megatron""megatron" or "huggingface"

transformer_engine_args

オプション名役割デフォルト値制約
fp8-formatfp8 formatNonee4m3 or "hybrid"
fp8-marginfp8のScaling margin0int
fp8-intervalfp8のScaling更新間隔0int
fp8-amax-history-lenテンソルごとにamax historyを記録するステップ数1int
fp8-amax-compute-algohistoryからamaxを計算するアルゴリズム"most_recent""most_recent" or "max"
no-fp8-wgradその他の計算がfp8に設定されていても、wgradを高精度に計算する有無
transformer-implTransformerの実装"local""local" or "transformer_engine"

experimental_args

オプション名役割デフォルト値制約
spec<module_location function_name> pairをspecifyするNonestr
hybrid-attention-ratioattention layersのtotal layerに対する比0.0float, [0,1]
hybrid-mlp-ratiomlp layersのtotal layerに対する比0.0float, [0,1]
hybrid-override-patternhybrid layer patternを強制するNonestr
yaml-cfg追加のargsのためのconfig fileNonestr

one_logger_args

オプション名役割デフォルト値制約
no-one-loggerone_loggerを無効化する有無
one-logger-projectone_logger project nameNonestr
one-logger-run-nameone-logger表示名Nonestr
one-logger-asyncone-logger async modeNonestr
app-tag-run-nameone-logger tag名Nonestr
app-tag-run-versionone-loggerバージョン0.0.0str