

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Neptune ML 中模型訓練產生的成品
<a name="machine-learning-model-artifacts"></a>

在模型訓練之後，Neptune ML 會使用最佳訓練模型參數，來產生啟動推論端點並提供模型預測所需的模型成品。這些成品由訓練任務封裝，並存放在最佳 SageMaker AI 訓練任務的 Amazon S3 輸出位置。

以下各節描述了各種任務的模型成品中包含什麼內容，以及模型轉換命令如何使用預先存在的訓練模型，即使在新的圖形資料上也能產生成品。

## 針對不同任務產生的成品
<a name="machine-learning-task-artifacts"></a>

訓練程序所產生的模型成品內容取決於目標機器學習任務：

****
+ **節點分類與迴歸** – 對於節點屬性預測，成品包括模型參數、來自 [GNN 編碼器](machine-learning-models-and-training.md#machine-learning-gnns)的節點嵌入、訓練圖中節點的模型預測，以及推論端點的一些組態檔案。在節點分類和節點迴歸任務中，會針對訓練期間存在的節點預先計算模型預測，以減少查詢延遲。
+ **邊緣分類和迴歸** – 對於邊緣屬性預測，成品還包含模型參數和節點嵌入。模型解碼器的參數對於推論尤為重要，因為我們會透過將模型解碼器套用至邊緣的來源和目標頂點嵌入，來計算邊緣分類或邊緣迴歸預測。
+ **連結預測** – 對於連結預測，除了針對邊緣屬性預測產生的成品外，也會包含 DGL 圖形作為成品，因為連結預測需要訓練圖才能執行預測。連結預測的目標是預測可能與來源頂點結合的目的地頂點，以形成圖形中特定類型的邊緣。為了執行此操作，來源頂點的節點嵌入和學到的邊緣類型表示法會與所有可能目的地頂點的節點嵌入結合，以產生每個目的地頂點的邊緣可能性分數。然後，對分數進行排序以排名潛在的目的地頂點並傳回頂級候選者。

對於每個任務類型，來自 DGL 的圖形神經網路模型權重會儲存在模型成品中。除了使用預先計算的預測和嵌入 (*直推式推論*) 來減少延遲之外，這還可讓 Neptune ML 在圖形變更時計算全新的模型輸出 (*歸納推論*)。

## 產生新的模型成品
<a name="machine-learning-task-artifacts"></a>

Neptune ML 中於模型訓練之後產生的模型成品會直接繫結至訓練程序。這意味著預先計算的嵌入和預測僅存在於原始訓練圖中的實體。雖然 Neptune ML 端點的歸納推論模式可以即時計算新實體的預測，但是您可能想要在新實體上產生批次預測，而不需要查詢端點。

對於已新增至圖形的新實體，為了取得其批次模型預測，需要針對新圖形資料重新計算新的模型成品。這是使用 `modeltransform` 命令來完成的。當您只想要批次預測而不設定端點時，或者當您想要產生所有預測，以便可以將其寫回圖形時，請使用 `modeltransform` 命令。

由於模型訓練會在訓練程序結束時隱含地執行模型轉換，因此訓練工作一律會在訓練圖資料上重新計算模型成品。不過，`modeltransform` 命令也可以在未用於訓練模型的圖形資料上計算模型成品。為此，必須使用與原始圖形資料相同的特徵編碼來處理新的圖形資料，並且必須遵守相同的圖形結構描述。

您可以達成此目標，方法是首先建立新的資料處理工作 (這是在原始訓練圖資料上執行的資料處理工作的複製)，接著在新的圖形資料上執行它 (請參閱 [處理 Neptune ML 的更新圖形資料](machine-learning-on-graphs-processing.md#machine-learning-on-graphs-processing-updated))。然後，使用新的 `dataProcessingJobId` 和舊的 `modelTrainingJobId` 呼叫 `modeltransform` 命令，以在更新的圖形資料上重新計算模型成品。

對於節點屬性預測，節點嵌入和預測會在新的圖形資料上重新計算，即使是原始訓練圖中存在的節點也是如此。

對於邊緣屬性預測和連結預測，也會重新計算節點嵌入，並會類似地覆蓋任何現有的節點嵌入。為了重新計算節點嵌入，Neptune ML 會將從先前訓練的模型中學到的 GNN 編碼器套用至具有其新特徵之新圖形資料的節點。

對於沒有特徵的節點，會重複使用從原始模型訓練中學到的初始表現法。對於沒有特徵且不存在於原始訓練圖中的新節點，Neptune ML 會將其表示法初始化為該節點類型 (存在於原始訓練圖中) 學到的初始節點表示法的平均值。如果您有許多沒有特徵的新節點，這可能會導致模型預測的效能下降，因為它們都會初始化為該節點類型的平均初始嵌入。

如果您的模型是在 `concat-node-embed` 設定為 true 的情況下進行訓練，則會透過串連節點特徵與可學習的初始表示法來建立初始節點表示法。因此，對於更新的圖形，新節點的初始節點表示法也會使用平均初始節點嵌入，與新的節點特徵串連。

此外，目前不支援節點刪除。如果已在更新的圖形中移除節點，則必須在更新的圖形資料上重新訓練模型。

重新計算模型成品會在新圖形上重複使用學到的模型參數，並且僅應在新圖形與舊圖形非常相似時才進行。如果您的新圖形不夠相似，則您需要重新訓練模型，才能在新圖形資料上取得類似的模型效能。構成足夠相似的內容取決於圖形資料的結構，但根據經驗法則，如果您的新資料與原始訓練圖形資料不同之處超過 10-20%，則您應該重新訓練模型。

對於所有節點都有特徵的圖形，會套用閾值的較高端 (20% 不同)，但對於許多節點沒有特徵，且新增至圖形的新節點沒有屬性的圖形，則較低端 (10% 不同) 甚至可能太高。

如需模型轉換工作的詳細資訊，請參閱 [modeltransform 命令](machine-learning-api-modeltransform.md)。