Skip to content

環境変数 ​

API serverは、リポジトリの直下の.envを読みます。雛形は.env.exampleです。.envには認証情報が入るので、chmod 600 .envで本人だけが読めるようにし、リポジトリやチャットに貼らないでください。

sh
cp .env.example .env
chmod 600 .env

値を変えたら、APIを再起動します。形式の違う値や、足りない設定があると、APIは設定の名前だけを表示して起動しません。

API server: 基本 ​

変数既定内容
MMT_DATABASE_URLなし(必須)PostgreSQLの接続URL
NODE_ENVdevelopment本番ではproduction。HTTPSのURLが必須になり、開発用の機能が使えなくなる
HOST127.0.0.1APIが待ち受けるアドレス
PORT4182APIが待ち受けるポート
MMT_PUBLIC_URLhttp://127.0.0.1:4182利用者が開くURL。SSOのcallbackもこのURLから作る
MMT_WEB_ORIGINhttp://127.0.0.1:5182画面のorigin。通知のリンクにも使う
MMT_ALLOW_PRIVATE_ORIGINSfalsetrueにすると、LAN・VPNのprivate IPとlocalhostのoriginも許可する。開発用。サーバではfalseのままにする
MMT_TRUSTED_PROXY_HOPS0(composeでは1)APIの前にあり、X-Forwarded-Forに接続元を足すproxyの数。ログインの回数制限と監査の接続元に使う。composeのwebの前にもう1段proxyを置くなら2
MMT_ALLOW_SEEDfalse見本データの投入を許す。AUTH_MODE=developmentのときだけ効く
MMT_ALLOW_LOCAL_EXECUTORfalselocal executorを許す。AUTH_MODE=developmentのときだけ効く
DEVELOPMENT_ADMIN_EMAILadmin@localhost開発用ログインで全体管理者になるメールアドレス

認証とSSO ​

詳しい設定は認証方式とローカルアカウントとAuthentik(SSO)を参照してください。

変数既定内容
AUTH_MODEhybridlocal、oidc、hybrid、development
AUTH_SESSION_IDLE_SECONDS604800(7日)操作しないままsessionが切れるまでの秒数。300以上
AUTH_SESSION_ABSOLUTE_SECONDS604800(7日)ログインからsessionが切れるまでの秒数。3600以上で、idle以上
OIDC_ISSUER_URLなしAuthentikのApplicationのIssuer。oidc・hybridで必須。HTTPSのURL
OIDC_CLIENT_IDなしProviderのClient ID。oidc・hybridで必須
OIDC_CLIENT_SECRETなしProviderのClient Secret
OIDC_ALLOWED_GROUPSなしログインを許すgroup(カンマ区切り)。oidc・hybridで必須
OIDC_ROLE_MAPPING_JSONなしgroup→全体のroleの対応表。例: {"mmt-admins":"admin","mmt-users":"user"}
OIDC_DEFAULT_ROLEuser対応表のどのgroupにも入っていない人のrole
OIDC_SCOPESopenid profile email offline_access要求するscope。openidは必須。refresh tokenにはProvider側のoffline_access mappingも必要
OIDC_LABELAuthentikログイン画面のSSOボタンの表示名
OIDC_AUTO_LINK_VERIFIED_EMAILfalse同じメールアドレスのローカルアカウントへ自動で結び付けるか
OIDC_ALLOW_INSECURE_HTTPfalseloopbackのHTTPのIssuerを許す(試験用)。本番では使えない
MMT_SESSION_ENCRYPTION_KEYなしsessionに保存するAuthentikのtokenの暗号鍵(base64の32 byte)。oidc・hybridで必須
OIDC_RECHECK_SECONDS60SSOのsessionのgroupを確かめ直す間隔(秒)
OIDC_TOKEN_SYNC_MAX_AGE_SECONDS604800(7日)SSOのユーザーのAPI tokenを使える、最後のgroupの同期からの秒数。60以上
MMT_TOKEN_DEFAULT_LIFETIME_DAYS365API token発行で期限を省略したときの既定日数。1〜3650。expiresAt: nullは無期限、明示する未来の日時には上限なし。

暗号鍵はターミナルで作ります。MMT_SESSION_ENCRYPTION_KEYとMMT_STORAGE_SECRET_KEYには別の値を使ってください。

sh
openssl rand -base64 32

Artifactと保存先 ​

保存先の設定は保存先で詳しく説明します。

変数既定内容
ARTIFACT_FILESYSTEM_ROOTAPIの作業ディレクトリのvar/artifactsファイルシステムの保存先の場所。相対パスはAPIの作業ディレクトリから数えるので、本番では絶対パスにする
S3_BUCKETなし設定すると、環境変数のS3を保存先として選べる
S3_ENDPOINTなし(AWS S3)S3互換ストレージのendpoint
S3_REGIONus-east-1region
S3_PREFIXなし(bucketの直下)bucketの中のprefix。.env.exampleではmado-model-tracking
S3_FORCE_PATH_STYLEfalsepath-styleのURLを使う
S3_ACCESS_KEY_ID、S3_SECRET_ACCESS_KEYなしS3の認証情報。無ければAWS SDKの標準の方法で探す
MMT_STORAGE_SECRET_KEYなし画面で追加したS3の保存先のシークレットをDBで暗号化する鍵(base64の32 byte)
MMT_HOOK_SECRET_KEYなしWebhook のフックのシークレットをDBで暗号化する鍵(base64の32 byte)。無いと、Webhook のフックを作れず、保存済みのフックの署名も確かめられない
MMT_ARTIFACT_MAX_BYTES214748364800(200GiB)Artifact 1件の上限
MMT_ARTIFACT_DELETE_GRACE_DAYS7削除したArtifactの本体を消すまでの日数。0〜3650
MMT_UPLOAD_REQUEST_TIMEOUT_MS0(無効)uploadの要求全体の締め切り
MMT_UPLOAD_IDLE_TIMEOUT_MS120000通信が止まったuploadを切るまでの時間
MMT_MLFLOW_MULTIPART_UPLOADStrueMLflow SDKのmultipart uploadを受け付ける
MMT_MLFLOW_MULTIPART_DOWNLOADSfalse変えないでください。trueにするとMLflow 3.17以降のSDKのdownloadが失敗する
MMT_UPLOAD_FINALIZE_WAIT_MS100000MLflowのmultipart uploadの完了を待つ時間

通知 ​

詳しくは通知と運用アラートを参照してください。

変数既定内容
MMT_NOTIFICATION_*なしWebhookのURLと署名の鍵。名前は自由に付け、通知先にはその名前を登録する
MMT_SMTP_URLなしSMTPサーバーのURL。smtp://(STARTTLS)かsmtps://
MMT_SMTP_FROMなし送信元のアドレス。例: mado ML Tracking <mmt@example.com>
NODE_EXTRA_CA_CERTSなし社内CAの証明書(PEM)のパス。SMTPやWebhookの送信先の検証に使う

Mado連携 ​

Mado連携はAPI serverに標準搭載されています。別のサービスや、連携だけの.envはありません。連携のためにAPI serverの.envに置くのは、Madoのアクセストークンを暗号化する鍵だけです。MadoのURLとアクセストークンは環境変数ではなく、全体管理者がProjectの[連携]で保存します。NamespaceはアクセストークンからMadoが返すので、どこにも設定しません(Mado連携)。

変数既定内容
MMT_PLUGIN_SECRET_KEYなしMadoのアクセストークンを、DBで暗号化する鍵(base64の32 byte)。Mado連携を使わないなら不要。無いとアクセストークンを保存できず、連携を有効にできない
  • 鍵はopenssl rand -base64 32で作り、ほかの暗号鍵(MMT_SESSION_ENCRYPTION_KEY、MMT_STORAGE_SECRET_KEY、MMT_HOOK_SECRET_KEY)とは別の値にします。
  • アクセストークンを保存したあとは、鍵を変えたり消したりしないでください。保存済みのトークンを復号できなくなります。鍵を失ったときは、元の鍵を戻すか、保存済みのアクセストークンをすべて入れ直します。DBを復元するときにも要るので、鍵も安全な場所に保管してください。

そのほかのAPI serverの設定 ​

変数既定内容
MMT_CHECKPOINT_KEEP_COUNT5Runごとに一覧へ出すcheckpointの数
MMT_CSV_EXPORT_MAX_ROWS50000Run検索のCSV出力の最大行数
MMT_REPORT_SNAPSHOT_MAX_BYTES52428800共有レポートの1つのバージョンで固定するデータの上限(バイト)
MMT_GIT_SSH_KEY_PATH、MMT_GIT_KNOWN_HOSTS_PATHなしエディタへSSHのGitリポジトリを読み込むための秘密鍵とknown_hosts(絶対パス)。両方を設定する

preview worker ​

長い音声・動画のプレビューを作るworker(npm run preview-worker -w @mmt/api、またはcomposeのpreview)の設定です。DBと保存先の設定はAPI serverと同じ値を使います。

変数既定内容
MMT_PREVIEW_FFMPEG_PATHffmpegffmpegのパス
MMT_PREVIEW_FFPROBE_PATHffprobeffprobeのパス
MMT_PREVIEW_POLL_INTERVAL_MS5000処理するArtifactを探す間隔
MMT_PREVIEW_TOOL_TIMEOUT_MS1800000(30分)ffmpeg・ffprobeの1回の上限。最大40分
MMT_PREVIEW_WORK_DIROSの一時ディレクトリ本体を一時的に置く場所。MMT_PREVIEW_MAX_SOURCE_BYTESの大きさが入る空きが要る
MMT_PREVIEW_MAX_SOURCE_BYTES10737418240(10 GiB)これより大きいArtifactはpreviewを作らない(skipped、source_too_large)

worker ​

mado-tracking-workerの設定です。installで導入した場合は、~/.config/mado-tracking-worker/<worker-id>.envにまとめて書かれます。

変数既定内容
MMT_API_URLなし(必須)API serverのURL。コンピュータからも届くURLにする
MMT_API_TOKENなし(必須)Service Accountのtoken
MMT_API_TOKEN_FILEなしtokenを読むファイル(コンテナ用)。MMT_API_TOKENがあればそちらを使う
MMT_WORKER_IDなし(必須)workerのID。再起動をまたいで同じ値にする
MMT_WORKER_TARGET_IDSなし(許可されたすべて)担当するコンピュータのID(カンマ区切り)。[接続に使うworker]で選ばれた接続確認は、これに関係なく受け取る
MMT_WORKER_SSH_DIRなし~/.sshに加えて、SSH鍵とknown_hostsの候補を探すディレクトリ。パスだけを報告する(SSH鍵の候補を報告する)
MMT_WORKER_STATE_DIR~/.local/state/mado-tracking-worker/<IDのハッシュ>実行中のJobの記録を置くディレクトリ
MMT_WORKER_MAX_OUTPUT_FILES100001つのJobで回収する出力ファイルの上限。1〜1000000
MMT_ALLOW_LOCAL_EXECUTORなしtrueでlocal executorを使う(開発用。API側の許可も要る)

Docker composeで動かす場合は、MMT_WORKER_TOKEN_FILE、MMT_WORKER_SSH_DIR、MMT_WORKER_UID、MMT_WORKER_GID、MMT_WORKER_API_URLも使います(worker)。composeのMMT_WORKER_SSH_DIRは、コンテナの~/.sshへmountするホストのディレクトリです。

Python SDK ​

変数既定内容
MMT_API_URLなしAPI serverのURL
MMT_API_TOKENなしAPI token
MMT_OFFLINE_DIR~/.local/share/mado-tracking/offlineオフライン記録を置くディレクトリ

実行コードに渡される変数 ​

workerはJobの実行コードに次の変数を渡します。実行コードはこれを読むだけで、自分で設定する必要はありません。

変数内容
MMT_API_URL、MMT_API_TOKEN、MLFLOW_TRACKING_TOKEN接続先とJob限定token
MMT_PROJECT_ID、MMT_EXPERIMENT_ID、MMT_RUN_ID、MMT_JOB_ID、MMT_JOB_KIND実行するRunのIDと種類
MMT_JOB_CONTEXT_FILEJob、Run、パラメータ、モデルバージョン、入力データセットなどをまとめたJSON
MMT_PARAMETERS_FILE、MMT_PARAMETERS_JSONパラメータ
MMT_MODEL_VERSION_FILE、MMT_MODEL_VERSION_ID使うモデルバージョン
MMT_DATASET_VERSIONS_FILE、MMT_INPUT_DATASET_VERSION_IDS、MMT_INPUT_DATASET_DIRS入力データセットのバージョンと、本体を置いたディレクトリ
MMT_UPSTREAM_RUN_ID、MMT_UPSTREAM_RUN_FILE上流のRun(あるときだけ)
MMT_RESUME_CHECKPOINT_DIR、MMT_RESUME_STEP、MMT_RESUME_CHECKPOINT_FILE再開元のcheckpoint(再開するときだけ)
MMT_OUTPUTS_DIR、MMT_RESULT_FILE出力のディレクトリとresult.jsonのパス