Skip to content

Releases: aida0710/mado-ml-tracking

mado ML Tracking v0.5.3

Choose a tag to compare

@github-actions github-actions released this 28 Oct 03:35
1d9b7d6

コンピュータの無いProjectでは実行の画面を畳み、画面の点検で見つかったわかりにくい表示と名前を直しました。

変更点

  • 実行の画面を畳む: 使えるコンピュータが1台も無いProjectでは、サイドバーの「実行」(Sweep・Task・Code・Workflow・Job・Hook・使えるコンピュータ)と、モデル画面の自動実行・昇格ポリシー・Aliasの保護のタブを出しません。設定画面に、コンピュータを登録すると出ることを案内します。
  • Sweepの状態: 試行がすべて失敗・中止で終わったSweepは、完了ではなく失敗(理由 all_trials_failed)になります。
  • 権限エラーの案内: tokenの権限が足りないときに勧める用途を、今のtokenの権限をすべて含むものにし、必要な権限を併記します。
  • 名前の整理: Jobの「試行」を「実行回数」に(Sweepの試行と区別)、「Compute」を「使えるコンピュータ」に、実験画面の見出しを「すべての実験」か実験名にしました。日本語の画面に混ざっていた alias・policy・snapshot の表記をそろえ、「親データ版」を「親のバージョン」にしました。
  • パンくず: 比較・レポート・Sweep・Workflow・モデルのバージョン・Runの画面に、Projectからのパンくずを付けました。
  • Artifactのアップロード: モデル・Codeの画面にあったボタンを、Artifactの画面へ移しました。
  • 内部: デザインシステム v0.7.2 のuploadWithProgressを使うようにし、不安定だったテストを直しました。

互換性と更新手順

DBの移行と設定の名前の変更はありません。v0.5.0〜v0.5.2から更新するときは、配布物で更新する手順でイメージを差し替えます。

v0.4.0以前から更新するときは、先にv0.5.0の更新手順(環境変数の名前の付け替えなど)を済ませます。

mado ML Tracking v0.5.2

Choose a tag to compare

@github-actions github-actions released this 26 Oct 12:09
e55b818

画面のAPIの呼び出しを、mado S3 Data Catalogと同じデザインシステムの取得処理(zodで応答を確かめる)にまとめ、エラーは訳さずAPIの文をそのまま表示します。本番を公開イメージの配布物で動かす手順も足しました。

変更点

  • エラーの表示: 日本語の画面でエラーをcodeから訳すのをやめ、どちらの言語の画面でもAPIの文をそのまま表示します。画面の言語で出すのは、通信の失敗、応答の形が合わないとき、手前のプロキシがHTMLで返した413だけです。APIの形でない失敗は「HTTP 502 Bad Gateway」のように出ます。
  • APIの呼び出し: デザインシステム v0.7.1 のrequestJsonで呼び、応答を@mmt/contractsのzodスキーマ(APIのルートの一覧と同じもの)で確かめます。
  • 応答の修正: Experimentの応答が契約に無いMLflowの列まで返していたのを、契約の列だけにしました。Runの最新の値(latestMetrics)のNaN・Infinityを契約の型に合わせました。
  • 本番の動かし方: サーバーでソースからビルドせず、配布物(digest固定の公開イメージ)と運用側の.env・compose.override.ymlだけで動かす手順をdeploy/release/README.mdに書きました(更新・戻し方・ソースのcheckoutから移す手順)。
  • 見た目: デザインシステム v0.7.1 で、行の高さをブラウザの既定として明示しました(見た目は変わりません)。

互換性と更新手順

DBの移行と設定の名前の変更はありません。v0.5.0・v0.5.1から更新するときは、配布物で更新する手順でイメージを差し替えます。

v0.4.0以前から更新するときは、先にv0.5.0の更新手順(環境変数の名前の付け替えなど)を済ませます。

mado ML Tracking v0.5.1

Choose a tag to compare

@github-actions github-actions released this 26 Oct 06:51
a5b424e

SSOユーザーの全体管理者を、Authentikのgroupではなくこのアプリの全体管理で決められるようにしました。

変更点

  • 全体管理者をアプリで管理する: MMT_OIDC_ROLE_MAPPING_JSONを空(未設定か{})にすると、AuthentikはログインできるかどうかだけをMMT_OIDC_ALLOWED_GROUPSで決め、全体管理者は「全体管理」→「ユーザー」でSSOユーザーにも付け外しできます。初めてSSOで入った人はMMT_OIDC_DEFAULT_ROLE(既定user)になり、以後のログインと再確認では全体管理者を変えません。groupの同期と、許可groupから外れた人を拒否する判定は今までどおりです。
  • 対応表が無いときの動きが変わります: 以前は、対応表が無いとSSOユーザーはログインのたびにMMT_OIDC_DEFAULT_ROLEになり、誰も全体管理者になりませんでした。v0.5.1では、対応表が無ければ全体管理者はアプリで管理し、ログインでは変えません。対応表がある環境の動きは変わりません。
  • GET /api/auth/config: methods.oidcにmanagesGlobalRole(Authentikのgroupが全体管理者を決めるか)を足しました。画面はこれを見て「管理者にする/外す」を出し分けます。
  • PATCH /api/admin/users/:idの422 profile_managed_by_ssoをOpenAPIに載せました(応答は以前から返していました)。

互換性と更新手順

DBの移行と設定の名前の変更はありません。v0.5.0から更新するときは、イメージを差し替えるだけです。

v0.4.0以前から更新するときは、先にv0.5.0の更新手順(環境変数の名前の付け替えなど)を済ませます。

SSOで対応表を使わずに運用していた環境では、更新後もSSOユーザーの全体管理者は今のまま残り、ログインで外れなくなります。外すときは「全体管理」→「ユーザー」で外します。

mado ML Tracking v0.5.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 04:14
ce24367

開発と運用の土台とAPIの形を、兄弟製品のMadoにそろえました。監査ログの値の名前を変え、Webのnginxを非rootで動かし、APIはビルドしたJavaScriptで動かします。APIのエラー応答は英語の文とcodeになり、ヘルスチェックはGET /healthzに、API tokenの前置きはmado_mt_(Job tokenはmado_mtj_)になりました。発行済みのAPI tokenはすべて使えなくなるので、更新後に発行し直してください。

設定の環境変数の名前は、すべてMMT_で始まる形になりました(AUTH_MODE→MMT_AUTH_MODE、S3_BUCKET→MMT_S3_BUCKETなど)。更新する前に、.envとcompose.override.ymlの名前を付け替えてください(環境変数の名前の付け替え)。

変更点

API

  • 監査ログ(AuditEvent)のoutcomeのfailedをfailureに、接続元の項目ipをipAddressに変えました(DBの列はip_address)。GET /audit-events・GET /projects/:p/audit-eventsのoutcomeの絞り込みもfailureを使います。既存の記録はDBの更新(071_audit_failure_and_ip_address.sql)で書き換えます。

  • docs/openapi.jsonとGET /api/openapi.jsonのinfo.versionが、契約の版(0.1)ではなくアプリの版になりました。

  • 独自APIのエラー応答を{"error": <英語の文>, "code": <理由の名前>}にそろえました。errorは今まで日本語でしたが、英語になります。文に入る値(足りないscope、parameter名、上限など)はerror・codeの横の項目にも入ります(例: scope_requiredのscope・purpose、invalid_requestのfields)。codeの一覧は@mmt/contractsのAPI_ERROR_CODESで、OpenAPIのエラー本文のschema名はApiErrorからApiErrorBodyに変わりました。MLflow互換APIは今までどおり{"error_code", "message"}で、messageが英語になります。

  • Madoと同じ意味のcodeは同じ名前にしました。

    旧 新
    insufficient_scope scope_required
    invalid_parameter_value(Runの検索式・cursorなど) invalid_request
    resource_already_exists already_exists
    invalid_range range_not_satisfiable
    last_global_admin last_active_admin
    local_account_required local_credential_unavailable
    scope_exceeds_issuer token_authority_exceeded
    パスワード変更で現在のパスワードの誤り: 401 invalid_credentials 400 incorrect_password
  • Sweepの探索空間とearly_terminateの誤り(sweep_space_invalid・sweep_early_terminate_invalid)は、reason(values_empty・range_orderなど)とparameterなどの項目で理由を示します。

  • ヘルスチェックのGET /healthとGET /api/healthをやめ、GET /healthz(/apiの外、認証なし)が{"status":"ok"}を返すようにしました。DBに届かなければ503 database_unavailableです。

  • API token(個人・Service Account・worker・launcher)の値はmado_mt_、Job tokenはmado_mtj_で始まります。認証はこの形の値だけを受け付け、mmt_・mmtj_で始まる値は401 invalid_tokenです。一覧に出す先頭は16文字(前置きと8文字)になりました。

Web

  • 画面の応答に、Content-Security-Policy、X-Content-Type-Options: nosniff、X-Frame-Options: DENY、Referrer-Policy: no-referrerを付けます。外部のサイトから画面を読み込むことはできません。
  • APIのエラーは、日本語の画面ではcodeから訳した文を出します。訳の無いcodeはAPIの英語の文を出し、invalid_requestなどの理由の幅が広いcodeは日本語の文のあとにAPIの英語の文を括弧で添えます。英語の画面はAPIの英語の文を出します。

コンテナ・Compose

  • Webのイメージはnginxinc/nginx-unprivilegedになり、nginxはroot以外で動きます。コンテナの中で待ち受けるportは80から8080に変わりました。ホスト側(127.0.0.1:5182)は変わりません。
  • APIとプレビュー用workerのイメージは、TypeScriptをビルドしたJavaScriptをnodeで動かします。イメージにはTypeScriptのソースとビルドの道具が入りません。npm run db:migrate -w @mmt/apiなどのコマンドは今までどおり使えます。
  • 全イメージのベースイメージをdigestで固定しました。
  • compose.ymlにproject名(name: mado-model-tracking)を入れました。展開先のディレクトリ名にかかわらず、同じコンテナとvolumeを使います。
  • apiにヘルスチェック(GET /healthz)を付け、webはapiがhealthyになってから起動します。Webのnginxとedgeのrunner用nginx(deploy/edge/runner-api.conf.template)は/healthzもAPIへ渡します。edgeでは今までの/api/healthと同じく、Job tokenのあるrunnerにだけ答えます。

設定(環境変数)

  • APIとプレビュー用workerが読む環境変数の名前を、すべてMMT_で始まる形にしました(兄弟製品のmado S3 Data CatalogはMDC_)。旧い名前は読みません。対応は環境変数の名前の付け替えの表のとおりです。値の形は変わりません。
  • 旧い名前だけが設定され、新しい名前が無いと、API・プレビュー用worker・db:migrate・bootstrap-admin・backfill-run-mediaはOld environment variable names are set: AUTH_MODE was replaced by MMT_AUTH_MODEのように、残っている旧名と新しい名前を並べて起動しません。表示するのは名前だけで、値は表示しません。今までのDATABASE_URL(→MMT_DATABASE_URL)とOIDC_ADMIN_GROUP(→MMT_OIDC_ROLE_MAPPING_JSON)の検査もここにまとめました。新しい名前もあるときは新しい名前を使い、旧名は無視します。
  • Webのイメージのビルド引数VITE_GIT_COMMIT・VITE_GIT_DATE(「このアプリについて」に出すコミットと日時)を、MMT_GIT_COMMIT・MMT_GIT_DATEにしました。
  • MLFLOW_TRACKING_URI・MLFLOW_TRACKING_TOKENなどMLflowのクライアントの標準の変数、AWS SDKのAWS_*、PostgresのイメージのPOSTGRES_*、NODE_ENVは変わりません。SDK・worker・launcherが読む変数(MMT_API_URL、MMT_API_TOKEN、MMT_WORKER_*など)は元からMMT_で始まっているので、変わりません。

SDK・worker・launcher

  • mado-tracking-worker doctorとコンピュータの接続確認は、MMT_API_URLの/apiを外した/healthzでAPIへの到達を確かめます。
  • workerとrunnerはmado_mtj_で始まるJob tokenだけを受け付けます。v0.4.0までのworker・launcherは新しいAPIが発行するJob tokenを受け付けないので、APIと一緒に更新してください。

そのほか

  • Apache License 2.0のLICENSEとNOTICEを付けました。配布物にも入ります。

互換性と更新手順

更新前にDBをバックアップしてください。

  1. Webのportを書き換えている場合(compose.override.ymlのportsなど)は、コンテナ側の番号を80から8080へ直します。例: '0.0.0.0:80:80'→'0.0.0.0:80:8080'。
  2. v0.4.0までの配布物(bundle)から入れた環境は、Composeのproject名が展開先のディレクトリ名(例: mado-ml-tracking-v040)になっています。docker compose lsで今の名前を確かめ、.envにCOMPOSE_PROJECT_NAME=<その名前>を書いてから更新します。書かないと新しい空のvolumeで起動します。リポジトリをmado-model-trackingというディレクトリに置いて動かしている環境は、そのままで同じ名前です。
  3. .envとcompose.override.ymlの環境変数の名前を付け替えます(環境変数の名前の付け替え)。Composeを使わずに動かしている場合は、APIとプレビュー用workerに渡している環境変数を同じ表のとおりに直します。
  4. 動いているJobを終わらせるか止めます。DBの更新(072)でJob tokenも失効するので、動いたままのJobはAPIへ記録できなくなります。
  5. APIとプレビュー用workerを止め、新しいイメージでDBを更新してから(071_audit_failure_and_ip_address.sql、072_token_prefix.sql)、新しいAPI・プレビュー用worker・Webを起動します。071は監査ログの列名を変えるので、v0.4.0のAPIとは両立しません。Webのコンテナも入れ替えてください。
  6. 072は、発行済みのAPI tokenとJob tokenをすべて失効させます(監査ログのtoken.revokeに、details.reasonがtoken_prefix_changedの記録が残ります)。使っていたものは発行し直して差し替えます。
    • 個人のtoken・Service Accountのtoken: [プロジェクト設定]の[API tokenを発行]かService Accountの画面で、同じ用途・scopeで発行します。SDK・MLflowのMMT_API_TOKEN・MLFLOW_TRACKING_TOKEN、学習のジョブが読むenv file、CIの設定などを新しい値に替えます。tokenを秘密の管理の仕組みに置いている場合は、そこに入れ直します。
    • worker: Service Accountでworker用のtokenを発行し、mado-tracking-worker install --token-file(ComposeのworkerはMMT_WORKER_TOKEN_FILE、既定はvar/worker-token)で差し替えます。
    • launcher: 全体管理の「ランチャー」で各launcherの[tokenを作り直す]を押し、launcher.tomlのtoken_fileが指すファイルを新しい値に差し替えます。
  7. ヘルスチェックを/healthか/api/healthで見ている監視は、/healthzに直します。Webの127.0.0.1:5182/healthzでも確かめられます。
  8. APIのエラーのerrorの文や、上の表の旧いcodeを見ているスクリプトは、新しいcodeで判定するように直します。
  9. 監査ログをAPIで読んでoutcomeのfailedやipを見ているスクリプトは、failureとipAddressに直します。
  10. Composeを使わずにソースから動かしている場合は、npm run build -w @mmt/apiでAPIをビルドしてから、npm run db:migrate -w @mmt/api・npm run start -w @mmt/apiを実行します。

worker・launcher・SDKは、Job tokenの前置きとヘルスチェックの経路が変わったので、APIと同じv0.5.0にそろえてください。

環境変数の名前の付け替え

v0.5.0のAPIとプレビュー用workerは、次の表の旧い名前を読みません。.envとcompose.override.yml(Composeのenvironment)で、名前だけを付け替えます。値は変えません。

旧い名前 新しい名前
HOST MMT_HOST
PORT MMT_PORT
AUTH_MODE MMT_AUTH_MODE
AUTH_SESSION_IDLE_SECONDS MMT_AUTH_SESSION_IDLE_SECONDS
AUTH_SESSION_ABSOLUTE_SECONDS MMT_AUTH_SESSION_ABSOLUTE_SECONDS
OIDC_ISSUER_URL MMT_OIDC_ISSUER_URL
OIDC_CLIENT_ID MMT_OIDC_CLIENT_ID
OIDC_CLIENT_SECRET MMT_OIDC_CLIENT_SECRET
OIDC_SCOPES MMT_OIDC_SCOPES
OIDC_ALLOWED_GROUPS MMT_OIDC_ALLOWED_GROUPS
OIDC_ROLE_MAPPING_JSON MMT_OIDC_ROLE_MAPPING_JSON
OIDC_DEFAULT_ROLE MMT_OIDC_DEFAULT_ROLE
OIDC_AUTO_LINK_VERIFIED_EMAIL MMT_OIDC_AUTO_LINK_VERIFIED_EMAIL
OIDC_LABEL MMT_OIDC_LABEL
OIDC_ALLOW_INSECURE_HTTP MMT_OIDC_ALLOW_INSECURE_HTTP
OIDC_RECHECK_SECONDS MMT_OIDC_RECHECK_SECONDS
OIDC_TOKEN_SYNC_MAX_AGE_SECONDS MMT_OIDC_TOKEN_SYNC_MAX_AGE_SECONDS
DEVELOPMENT_ADMIN_EMAIL MMT_DEVELOPMENT_ADMIN_EMAIL
ARTIFACT_FILESYSTEM_ROOT MMT_ARTIFACT_FILESYSTEM_ROOT
S3_BUCKET MMT_S3_BUCKET
S3_ENDPOINT MMT_S3_ENDPOINT
S3_REGION MMT_S3_REGION
S3_PREFIX MMT_S3_PREFIX
S3_FORCE_PATH_STYLE MMT_S3_FORCE_PATH_STYLE
S3_ACCESS_KEY_ID MMT_S3_ACCESS_KEY_ID
S3_SECRET_ACCESS_KEY MMT_S3_SECRET_ACCESS_KEY

Webのイメージを自分でビルドしている場合は、ビルド引数VITE_GIT_COMMIT・VITE_GIT_DATEをMMT_GIT_COMMIT・MMT_GIT_DATEに替えます。

すでにMMT_で始まっている変数(MMT_DATABASE_URL、MMT_PUBLIC_URL、MMT_WEB_ORIGIN、MMT_STORAGE_SECRET_KEY、MMT_POSTGRES_PASSWORD、MMT_TOKEN_DEFAULT_LIFETIME_DAYS、MMT_FILESYSTEM_STORAGE_DIRなど)と、COMPOSE_FILE・COMPOSE_PROJECT_NAME・NODE_ENVは変わりません。保存先の認証情報を暗号化する鍵MMT_STORAGE_SECRET_KEYは、名前も値も今のままにします(値を変えると、保存済みの暗号文が読めなくなります)。

compose.override.ymlのAUTH_MODEは必ず直してください。 compose.ymlのapiはenvironmentでMMT_AUTH_MODE: oidcを渡し、これは.envより優先されます。localかhybridで動かしている環境は、compose.override.ymlのapiのenvironmentにAUTH_MODE: localなどを書いているはずです。これが旧い名前のままだと無視され、APIはoidcで起動しようとしてMMT_OIDC_ISSUER_URL and MMT_OIDC_CLIENT_ID are required when MMT_AUTH_MODE=oidcで止まります。同じようにHOST・PORT・ARTIFACT_FILESYSTEM_ROOTは、compose.ymlとイメージが新しい名前で値を渡すので、旧い名前が残っていても起動時の検査では見つかりません。下の手順で全部付け替えます。

手順

.envのあるComposeのディレクトリで、APIを止める前に行います。ファイルを書き換えるだけなので、動いているコンテナは作り直すまで今の設定で動き続けます。値には認証情報が入っているので、画面に出しません。cat .envや、絞り込まないdocker compose configは値を表示するので使いません。

  1. 2つのファイルをバックアップします。

    umask 077
    backup="var/backups/env-names-$(date +%Y%m%d-%H%M%S)"
    mkdir -p "$backup"
    cp -p .env "$backup/"
    if [ -f compose.override.yml ]; then cp -p compose.override.yml "$backup/"; fi
  2. 今の名前を確かめます。名前だけを表示し、値は表示しません。

    grep -oE '^[A-Za-z_][A-Za-z0-9_]*=' .env | tr -d '=' | sort
    if [ -f compose.override.yml ]; then
      grep -noE '^[[:space:]]+(- )?[A-Za-z_][A-Za-z0-9_]*[:=]' compose.override.yml
    fi
  3. 表のとおりに名前を付け替えます。.envは旧名=で始まる行、compose.override.ymlは旧名:(mapの形)か- 旧名=(listの形)の行だけを書き換えます。

    renames='
      HOST:MMT_HOST
      PORT:MMT_PORT
      AUTH_MODE:MMT_AUTH_MODE
      AUTH_SESSION_IDLE_SECONDS:MMT_AUTH_SESSION_IDLE_SECONDS
      AUTH_SESSION_ABSOLUTE_SECONDS:MMT_AUTH_SESSION_ABSOLUTE_SECONDS
      OIDC_ISSUER_URL:MMT_OIDC_ISSUER_URL
      OIDC_CLIENT_ID:MMT_OIDC_CLIENT_ID
      OIDC_CLIENT_SECRET:MMT_OIDC_CLIENT_SECRET
      OIDC_SCOPES:MMT_OIDC_SCOPES
      OIDC_ALLOWED_GROUPS:MMT_OIDC_ALLOWED_GROUPS
      OIDC_ROLE_MAPPING_JSON:MMT_OIDC_ROLE_MAPPING_JSON
      OIDC_DEFAULT_ROLE:MMT_OIDC_DEFAULT_ROLE
      OIDC_AUTO_LINK_VERIFIED_EMAIL:MMT_OIDC_AUTO_LINK_VERIFIED_EMAIL
      OIDC_LABEL:MMT_OIDC_LABEL
      OIDC_ALLOW_INSECURE_HTTP:MMT_OIDC_ALLOW_INSECURE_HTTP
      OIDC_RECHECK_SECONDS:MMT_OIDC_RECHE...
Read more

mado ML Tracking v0.4.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 18:56
3f7a820

古い版のworker・launcher・SDK・データを受け付けるために残していた扱いを削除しました。残っていた古い形のデータは、DBの更新(069・070)で今の形へ移します。

変更点

API

  • Run一覧GET /projects/:p/runsを削除しました。Runの一覧はPOST /projects/:p/runs/searchを使います。
  • Dataset一覧・Artifact一覧・Job一覧などのqueryは、知らない条件を422 invalid_requestで拒否します。省略時の既定値は変わりません。
  • MLflow互換のモデルバージョン検索は、MLflowに無いversionとattributes.を受け付けません。version_number、attribute.、前置きなしの属性名を使います。
  • 旧方式のMado連携(kind=legacy、移行待ちの接続、移行完了API)を削除しました。
  • コンピュータの所有者(ownerUserId)とCodeVersionのruntimeを必須にしました。

worker・launcher・SDK

  • workerはworkerInfo(version・hostname・parallelJobs・sshFiles・capabilities)を必ず送ります。送らないworkerのclaimは拒否します。
  • コンテナのresult.jsonと接続確認の結果は、version 2だけを受け付けます。pathで宣言したDatasetにはdigestを書きません(ファイルから計算します)。
  • worker CLIはサブコマンドが必須です(mado-tracking-worker run [--once])。
  • 古いAPIに合わせて送る項目を減らす扱いを削除しました。worker・launcher・SDKはAPIと同じ版を使ってください。
  • SDKのregister_model(name=...)を削除しました(model_name=を使います)。register_code・create_code_versionはruntimeが必須です。

設定

  • OIDC_ADMIN_GROUPとDATABASE_URLを削除しました。どちらかが設定されているとAPIは起動しません。OIDC_ROLE_MAPPING_JSONとMMT_DATABASE_URLを使います。
  • OIDC_ROLE_MAPPING_JSONが無いとき、mmt-adminsを全体管理者にする既定はなくなりました。SSOで全体管理者を決めるには対応表が必要です。

互換性と更新手順

更新前にDBをバックアップしてください。

  1. .envからOIDC_ADMIN_GROUPとDATABASE_URLを消します(OIDC_ADMIN_GROUPを使っていた場合はOIDC_ROLE_MAPPING_JSONへ移します)。
  2. APIを止め、新しいイメージでDBを更新してから(069_require_current_protocol.sql・070_require_computer_owners.sql)、新しいAPIを起動します。069は今の版のAPIと両立しません。
    • 069は、旧方式のMado連携の接続と、配送先を確定できない送信待ちのイベントを消します(DatasetVersionのURI・digest・来歴は残します)。接続確認の結果をversion 2へ、S3の保存先のmultipartEnabledを明示値にし、workerの情報が欠けたpresenceは、そのleaseを失効させてから消します。
    • 070は、所有者のいないコンピュータに、成功した作成の監査記録が1人を指すときだけ所有者を補います。所有者を決められないコンピュータや設定の欠けたsiteが残っていると、更新は止まり、DBは何も変わりません。前の版で所有者を設定するかsiteを直してから、もう一度更新してください。
  3. worker・launcher・SDKをこの版へ更新します。

Mado連携は引き続きMado v0.2.1以降で動きます。

配布物

Linux amd64/arm64向けに、Web、API、プレビュー用worker、実行worker、サイトlauncherの5種類をGHCRで配布します。イメージ名はghcr.io/aida0710/mado-ml-tracking-{web,api,preview,worker,launcher}:v0.4.0です。添付のmado-ml-tracking-v0.4.0.tar.gzには、イメージをdigestで固定したCompose、設定例、導入手順が入っています。SHA-256のチェックサムとビルド証明も添付します。

mado ML Tracking v0.3.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 16:04
43fcb39

APIトークンから、トークンの発行・失効、Service Accountの管理、全体の監査ログ、ユーザー管理を使えるようになりました。あわせて、トークンまわりの古い形式の受け付けをやめ、残っていた古い形式のトークンはDBの更新で失効させます。

変更点

トークンから使える操作

  • scopeにtokens:manage・audit:read・users:manageを追加しました。adminはこの3つを含みません。名前を指定して付けたトークンだけが持つので、これまでのトークンでできることは増えません。
  • tokens:manageを持つトークンは、APIでトークンの発行・失効と、Service Accountの作成・変更・トークン発行ができます。扱えるのは、呼び出したトークンのscope・Project・有効期限の範囲に収まるトークンだけです(範囲外は403 scope_exceeds_issuer・project_forbidden・token_outlives_issuer)。
  • audit:readとusers:manageは、全体管理者がProjectを指定せずに発行するトークンだけが持てます。全体の監査ログはadminとaudit:read、ユーザー一覧はadminとusers:manageで読めます。ユーザーの作成・変更・一時パスワードの発行には、すべてのscopeが要ります。
  • 自分のパスワード変更、コンピュータの自分の設定、アーカイブしたProjectの完全な削除は、引き続きブラウザだけで行えます。

古い形式の扱いの削除

  • 個人向けのトークン発行(POST /api/tokens)からkindの指定を外しました。種別は所有者で決まります(人はpersonal、Service Accountはservice)。kindを送ると422になります。
  • TokenSummaryのlegacyを削除し、tokenPrefixを必須にしました。画面の「旧形式」表示もなくなりました。
  • 設定MMT_TOKEN_MAX_LIFETIME_DAYSは読まなくなりました。期限を省略したトークンの既定日数はMMT_TOKEN_DEFAULT_LIFETIME_DAYSだけで決まります。

互換性と更新手順

更新前にDBをバックアップし、新しいAPIを起動する前に、新しいイメージでDBを更新してください(068_revoke_legacy_tokens.sql)。

  • 068は、人が所有するservice token(Service Account導入前の形式)と、先頭12文字を保存する前に発行したトークンを失効させます。理由は監査ログのtoken.revokeのdetails.reasonに残ります。これらを使っていたworker・SDK・スクリプトは、Service Accountか個人のトークンを発行し直して差し替えてください。
  • .envでMMT_TOKEN_MAX_LIFETIME_DAYSを使っている場合は、値を変えずにMMT_TOKEN_DEFAULT_LIFETIME_DAYSへ名前を変えてください。変えないと既定の365日になります。
  • POST /api/tokensにkindを送っているクライアントは、その項目を外してください。

Mado連携は引き続きMado v0.2.1以降で動きます。

配布物

Linux amd64/arm64向けに、Web、API、プレビュー用worker、実行worker、サイトlauncherの5種類をGHCRで配布します。イメージ名はghcr.io/aida0710/mado-ml-tracking-{web,api,preview,worker,launcher}:v0.3.0です。添付のmado-ml-tracking-v0.3.0.tar.gzには、イメージをdigestで固定したCompose、設定例、導入手順が入っています。SHA-256のチェックサムとビルド証明も添付します。

mado ML Tracking v0.2.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 11:36
26fc8ec

mado S3 Data Catalogとの連携を、アクセストークン1本で設定できるようになりました。許可するNamespaceは入力せず、Madoから自動で取得します。あわせて、来歴(Lineage)を既存の記録を書き換えずに補う機能と、モデルごとの来歴の表示を追加しました。

変更点

Mado連携

  • 参照用・送信用・容量取得用の3つのキーを、Madoのアクセストークン1本にまとめました。「許可Namespace」の入力欄はなくなりました。
  • 検索と取り込みのたびに、Madoの/api/mado/access-tokenからトークンの許可範囲を読みます。Madoでトークンの許可Namespaceを変えても、連携の設定を保存し直す必要はありません。全Namespaceを許可したトークンでは、Namespaceを指定せずに1回で検索します。
  • [接続を確認]で、許可されている操作・許可Namespace・有効期限を画面に表示します。DataLineageの読み取りか送信を許可していないトークンや、「RunのNamespace」を許可していないトークンは、Runを送って失敗する前にここで理由を示して断ります。
  • 容量メトリクスは、確認時のトークンに容量の読み取りがある場合だけ表示します。

来歴(Lineage)

  • 既存のRun・バージョンを書き換えずに、データ・モデル・Runの関係を追記するAPIを追加しました。参照と、学習・生成の関係を区別します。
  • モデル版の詳細と一覧から、そのモデルの祖先と子孫だけを表示できます。全体の図と既存の検索は従来どおりです。

互換性と更新手順

更新前にDBをバックアップし、新しいAPIを起動する前に、新しいイメージでDBを更新してください(066_lineage_relation_additions.sqlと067_mado_access_token.sql)。

  • Mado連携を設定している場合: v0.1.0で保存した参照用・送信用・容量取得用のキーは使われなくなり、「未設定」と表示されます。3つのキーは1つにまとめられないため、Madoでアクセストークンを発行し、[Madoの接続設定]で入れ直してから[接続を確認]を押してください。暗号化して保存した以前の値はDBから消しません。
  • Mado側はv0.2.1以降が必要です。 /api/mado/access-tokenの無いMadoへの接続確認は、「Madoを更新してください」という理由で止まります。
  • APIの変更: 連携のcredentialsは{accessToken}だけになり、configからnamespacesを外しました。POST /api/projects/:p/plugins/:id/checkはPluginConnectionを返します(以前はPluginManifest)。

配布物

Linux amd64/arm64向けに、Web、API、プレビュー用worker、実行worker、サイトlauncherの5種類をGHCRで配布します。イメージ名はghcr.io/aida0710/mado-ml-tracking-{web,api,preview,worker,launcher}:v0.2.0です。添付のmado-ml-tracking-v0.2.0.tar.gzには、イメージをdigestで固定したCompose、設定例、導入手順が入っています。SHA-256のチェックサムとビルド証明も添付します。

ドキュメントのMado連携に、新しい設定手順があります。

mado ML Tracking v0.1.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 04:07

mado ML Trackingの初回リリースです。実験の比較、モデル・コード・データセットのバージョン管理、学習・推論・評価の実行を同じアプリで扱います。

主な機能

  • Runのパラメータ・メトリクス・ログ・音声や画像の記録と比較
  • モデル・コード・データセットの固定バージョン、生成元Run、加工元の来歴
  • SSH workerによる学習・推論・評価、サイトへのJob投入、コード編集と前処理ワークフロー
  • モデル登録後の自動推論・評価、探索実験、再開、共有レポート
  • Python SDKとMLflow 3互換API、ファイルシステム・S3互換ストレージへの保存
  • ローカルアカウント・OIDCによるログイン、Projectごとの権限、API token、監査ログ
  • 標準搭載のmado S3 Data Catalog連携(初期状態は無効)、日本語・英語の画面とドキュメント

配布物と導入

Linux amd64/arm64向けに、Web、API、プレビュー用worker、実行worker、サイトlauncherの5種類をGHCRで配布します。イメージ名はghcr.io/aida0710/mado-ml-tracking-{web,api,preview,worker,launcher}:v0.1.0です。

添付のmado-ml-tracking-v0.1.0.tar.gzには、イメージをdigestで固定したCompose、設定例、初回起動の手順、worker・launcherの設定例が入っています。ソースのビルドは不要です。SHA-256のチェックサムとビルド証明も添付します。

展開した配布物のREADMEに従って設定とDB更新、初期管理者の作成を行ってください。ドキュメントには機能、SDKでの記録、実行環境の登録手順があります。

初期リリースでの制限

HTTPSの入口と、実行するコンピュータ・SSH鍵・ストレージは利用者の環境で用意します。GPU用の学習イメージはこの配布物に含めません。Mado連携を使う場合は、Data Catalog側の参照APIと互換Dataset Registryを設定してください。

MLflow 3互換APIの対応範囲はMLflowの手順を参照してください。モデルの配信、MLflowのTracing・GenAI・Gateway・Prompt Registryは対象外です。