# モデルアーキテクチャ・定義・訓練済みモデル ## 定義 「モデル」という語は、別々だが関連する3つの概念を指すために不正確に使われることが多い。**モデルアーキテクチャ**は、あるアプリケーションで学習するために使用する一般的な戦略であり、DNNかランダムフォレストかといったモデルタイプの選択と、DNNのレイヤー数やランダムフォレストのツリー数などの構造的な選択の両方を含む。**モデルの定義(構成されたモデル)**は、モデルの構成と学習環境、学習するデータの種類と定義そのものを指し、使用する特徴量のフルセット・全てのハイパーパラメータ設定・モデルの初期化に使うランダムシードなど、モデルの定義や再現に必要なあらゆるものを含む。**訓練済みモデル**は、ある時点の特定のデータに対して訓練されたモデルであり、重みや閾値などの訓練されたパラメータ値の集合を指す。分散デプロイメントを含む多くのML用ソフトウェアはかなりの非決定性を持ちうるため、全く同じデータに対して全く同じ構成モデルを2回訓練しても、同じ訓練済みモデルが得られるとは限らない。業界標準の用語は存在せず、この区別自体が著者らの便宜的な定義に過ぎないことにも注意が要る。(Source: [[@2024__OReillyJapan__信頼性の高い機械学習 - Chapter 3 MLモデルの基礎]] §3.3) この3層の区別が重要なのは、それぞれが異なる再現性の単位だからである。モデルアーキテクチャの再現には設計の記述だけで足りるが、モデルの定義の再現には特徴量セット・ハイパーパラメータ・ランダムシードを含む訓練環境全体の注意深いバージョン管理が要り、訓練済みモデルはモデルの定義を固定してもなお非決定性のため再現できるとは限らない。 ## 横断的知見 - **10章のモデルストアが記録する「モデルの定義」「モデルのパラメーター」というアーティファクト区分は、本ページの3層区別のうち「モデルの定義」と「訓練済みモデル」に運用レベルでほぼそのまま対応する**: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 10 MLOpsにおけるインフラとツール]] §10.4.2は、モデルストアが記録すべきアーティファクトとして「モデルの定義」(損失関数・隠れ層数などこの形式のモデルの生成に必要な情報)と「モデルのパラメーター」(実際に設定された値。定義と組み合わせて予測モデルの再作成が可能)を明示的に分けて挙げる。これは本ページが『信頼性の高い機械学習』3章から集約した「モデルの定義(構成されたモデル)」と「訓練済みモデル」の区別と、用語も対応関係もほぼ一致する。10章はさらに、特徴抽出関数と予測関数・依存関係・データ・生成コードなど、「モデルの定義」を再現可能にするために必要な周辺アーティファクトも列挙しており、3章が概念レベルで述べた「モデルの定義の再現には特徴量セット・ハイパーパラメータ・訓練環境全体のバージョン管理が要る」という主張を、実際に何を記録すべきかという運用レベルまで具体化している。これは本ページの未解決の問いのうち「モデルレジストリの実装はこの3層をどう扱うか」に対する部分的な回答でもある(ただしMLflow等の具体的な実装の内部設計までは10章も踏み込まない)。(Source: [[@2024__OReillyJapan__信頼性の高い機械学習 - Chapter 3 MLモデルの基礎]] §3.3, [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 10 MLOpsにおけるインフラとツール]] §10.4.2) - **既存の未解決の問い「分散訓練における非決定性の具体的な発生源は何か」に、『機械学習システムデザイン』6章が部分的な回答を与える**: 本ページのソースはこの3層区別が「同じ構成モデルを2回訓練しても同じ訓練済みモデルが得られるとは限らない」非決定性を持つと指摘するにとどまるが、[[@2023__OReillyJapan__機械学習システムデザイン - Chapter 6 モデル開発とオフライン評価]] §6.1.3.2は、実験の再現性を損なう非決定性の具体的な発生源として、CUDAのアトミック演算(演算の順序が非決定的であるため実行するたびに生じる浮動小数点数の丸め誤差が変動する)を挙げる。これはハードウェア・低レベル実装に起因する発生源の一例であり、本ページが指摘する「訓練済みモデルの非再現性」という現象の一部を機序のレベルで具体化する。ただし6章もこれを唯一の発生源として網羅的に扱っているわけではなく、並列計算の順序や乱数シードの伝播など他の発生源との関係は両ソースとも整理されていない。(Source: [[@2024__OReillyJapan__信頼性の高い機械学習 - Chapter 3 MLモデルの基礎]] §3.3, [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 6 モデル開発とオフライン評価]] §6.1.3.2) - **6章のバージョン管理論の困難さは、本ページが区別する「モデルの定義」の再現性という単位に対応する**: 本ページは「モデルの定義」の再現には特徴量セット・ハイパーパラメータ・ランダムシードを含む訓練環境全体のバージョン管理が要ると述べるが、その実務的な難しさには立ち入らない。6章§6.1.3.2は、データのバージョン管理がソースコードのバージョン管理よりも困難である理由(diffの定義の曖昧さ、大規模ファイルの複製コスト、異なるデータバージョンで訓練したモデル同士のマージ不能性、GDPRによる過去バージョンへの復元不能性)を具体的に列挙しており、これは「モデルの定義」を構成する要素のうち特に訓練データのバージョン管理という部分に焦点を当てた、本ページの主張を補強する具体例群である。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 6 モデル開発とオフライン評価]] §6.1.3.2) ## 未解決の問い - モデルレジストリ(MLflow・Vertex AI Model Registryなど)の実装は、この3層(アーキテクチャ/定義/訓練済みモデル)をどのようにバージョニングの単位として扱っているか。[[@2023__OReillyJapan__機械学習システムデザイン - Chapter 10 MLOpsにおけるインフラとツール]] §10.4.2は「モデルの定義」「モデルのパラメーター」という2つのアーティファクトカテゴリでモデルストアが記録すべき情報を整理しており本ページの3層区別のうち2層に対応関係を与えるが、MLflow自体の内部スキーマ・APIレベルの実装には踏み込んでいない。実装コードレベルでの対応関係は依然として本wikiでは示されていない。 - 分散訓練における非決定性の発生源のうち、CUDAのアトミック演算(6章が指摘)以外の発生源(並列計算の順序・浮動小数点演算の非結合性・乱数シードの伝播など)は何か。本ページが挙げる発生源は依然として部分的である。 - モデルの定義の再現性を担保するバージョン管理の実務的なベストプラクティス(特徴量・ハイパーパラメータ・ランダムシードをどう一体的に記録するか)は7章(MLモデル訓練システム)でどこまで具体化されるか。 ## 関連 - ソース: [[@2024__OReillyJapan__信頼性の高い機械学習 - Chapter 3 MLモデルの基礎]] §3.3 / [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 6 モデル開発とオフライン評価]](非決定性の発生源、データバージョン管理の困難さ) / [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 10 MLOpsにおけるインフラとツール]](モデルストアが記録するモデルの定義・パラメーター) - 概念: [[MLモデルの脆弱性の所在]] / [[統計的機械学習]] / [[機械学習アルゴリズム選択の指針]] / [[MLメタデータ管理]](実験管理・バージョン管理という隣接論点、モデルストアのアーティファクト区分) - 書籍: [[信頼性の高い機械学習]] / [[wiki/entities/機械学習システムデザイン|機械学習システムデザイン]] ## 出典 - Cathy Chen ほか, 『信頼性の高い機械学習 ―SRE 原則を活用した MLOps』, オライリー・ジャパン, 2024, 3章 §3.3. - Chip Huyen 著, 江川崇・平山順一 訳, 『機械学習システムデザイン』, オライリー・ジャパン, 2023, 6章, §6.1.3.2. - [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 10 MLOpsにおけるインフラとツール]](§10.4.2 モデルストアが記録するモデルの定義・パラメーター)