在 Azure 上設計 AI 工作負載的訓練數據
當您在應用程式中設計 AI 功能的數據時,請考慮非功能性需求,例如操作性、成本和安全性,以及與數據擷取、準備和驗證相關的功能需求。
數據設計和應用程式設計無法分離。 應用程式設計需要您瞭解使用案例、查詢模式和新鮮度需求。 為了解決驅動使用 AI 需求的商務需求,應用程式可能需要來自歧視模型、產生模型或模型類型組合的輸出。
若要產生有意義的結果,必須訓練 AI 模型。 模型定型牽涉到教學模型來分類或預測新的或看不見的情況。 定型數據必須針對特定問題和工作負載內容量身打造。
監督式定型牽涉到提供具有卷標樣本的模型。 當所需的結果清楚時,這種類型的定型會很有用。 相反地,非監督式學習可讓模型識別數據內的模式和關聯性,而不需要預期輸出的指引。 在定型期間,會調整演算法類型和其參數,以控制模型學習的方式。 方法會根據模型類型而有所不同,其中可能包含類神經網路、判定樹和其他專案。
例如,影像偵測模型通常會在物件偵測、臉部辨識或場景理解等工作上定型。 他們會從批注影像中學習,以識別特定物件或功能。 其他常見範例包括詐騙偵測算法和價格點預測模型。 這些模型會從歷史財務數據中學習,以做出明智的決策。
本文主要著重於上述使用案例,其中模型在為應用程式提供有意義的輸入之前先定型。 本文包含數據收集、處理、儲存、測試和維護的指引。 未涵蓋透過 AI 探索數據科學或商業智慧的數據設計。 目標是藉由提供 AI 工作負載訓練數據管線的建議,透過符合工作負載需求的策略來支援定型需求。
如需推斷期間需要內容的 AI 模型數據設計相關信息,請參閱基礎數據設計。
重要
預期數據設計是以統計實驗為基礎的反覆程式。 若要達到可接受的品質等級,請調整定型數據、其處理、模型特徵開發,以及模型超參數(可能的話)。 此實驗迴圈通常會在初始模型定型期間和持續精簡工作期間發生,以解決工作負載中功能生命週期中的數據和模型漂移。
建議
以下是本文所提供的建議摘要。
建議 | 描述 |
---|---|
根據工作負載需求選取數據源。 | 考慮可用的資源,以及數據源是否可協助您達到模型定型可接受的數據品質。 涵蓋正面和負面範例。 結合不同的數據類型,以達到適當的完整性,以進行分析和模型化。 請考慮使用合成少數過度取樣技術 (SMOTE) 等技術,以取得數據短缺或不平衡。 ▪ 數據擷取和分析 |
儘早對收集的數據進行數據分析。 | 離線執行分析程式,例如 Exploratory Data Analysis (EDA)。 請考慮成本和安全性影響。 對於沒有資源條件約束的小型數據集,您可以考慮在來源執行分析。 ▪ 數據收集存放區 |
如果商務和技術需求需要維護數據分割,請加以維護。 | 如果您使用具有不同安全性需求的數據源,請為每個模型建立個別的管線。 建立訪問控制以限制與特定數據子集的互動。 ▪ 數據分割 |
前置處理數據,使其對定型目標有意義。 | 藉由篩選雜訊、重新複製數據、尋址重複專案,以及標準化各種格式,來精簡內嵌數據的品質。 ▪ 數據前置處理 |
避免對過時的數據進行定型。 | 監視數據漂移和概念漂移,作為內部和外部作業迴圈的一部分,以維護模型隨時間的精確度和可靠性。 使用新的觀察定期更新定型數據。 定義觸發模型重新定型並判斷更新頻率的條件。 ▪ 數據維護 |
資料類型
若要在模型中建置預測能力,您需要收集數據、處理數據,並將其饋送至模型。 此程式通常概念化為分成階段的管線。 管線的每個階段都可能會處理相同的數據集,但可能會有不同的用途。 一般而言,您可以處理這些類型的數據:
源數據 是時間點觀察數據。 它也可以是可標示為作為數據管線潛在輸入的數據。
此數據通常是從生產環境或從外部來源取得。 這些數據源可以位於記憶體帳戶、資料庫、API 或其他來源中。 數據可以是各種數據格式,例如 OLTP 資料庫、非結構化檔或記錄檔。 此數據可作為數據管線的潛在輸入。
定型數據 是源數據子集,可用來提供範例給模型。 這些範例是描述性預先計算的數據,可協助模型瞭解模式和關聯性。 如果沒有此數據,模型就無法產生相關的輸出。
評估數據 是源數據的子集,可用來監視和驗證定型期間機器學習模型的效能。 這與定型和測試數據不同,可用來定期評估定型階段的模型效能,並引導超參數微調。 如需詳細資訊,請參閱 模型評估。
測試數據 可用來驗證定型模型的預測能力。 此數據會從未用於定型的源數據進行取樣。 它包含來自生產環境的觀察,因此測試程式是決定性的。 從數據設計的觀點來看,您需要儲存此數據。 如需測試模型的相關信息,請參閱 測試 設計區域。
在某些情況下,使用者在與應用程式互動期間所提供的資訊最終可能會變成源數據。 一般而言,我們建議使用此方式的使用者輸入品質很高。 否則,持續處理下游質量問題的需求可能會變成問題。 本文未涵蓋處理用戶數據的指引。
數據擷取和分析
定型數據會在預先決定的視窗中收集,其具有足夠的表示法來定型您選取的模型類型。 例如,當您定型二元分類模型時,定型數據必須包含案例的表示法(正範例),以及案例為何(負範例)。 若要讓定型數據有意義,請在特徵設計初期進行 EDA。
EDA 可協助分析源數據,以識別特性、關聯性、模式和質量問題。 您可以直接在源數據存放區執行 EDA,或將數據復寫到集中式存放區,例如數據湖或數據倉儲。 此程序的結果是通知數據收集和處理以取得有效模型定型。
注意
雖然 EDA 是生產階段前程式,但會使用從生產來源的數據。 將相同的控制層級套用至此程式,就像用於生產環境一樣。
以下是在準備模型定型時收集數據的一些考慮。
資料來源
您可以從這些來源收集資料:
專屬數據 是由組織所建立或擁有。 它不適合用於公用取用。 它服務於內部用途。
任何人都可以存取公用來源 。 這些來源包括網站、研究論文和公開共享的資料庫。 它可能專屬於利基區域。 例如,維琪百科和 PubMed 的內容會被視為可公開存取。
您選擇的數據源取決於工作負載需求、可用的資源,以及定型模型可接受的數據品質。 不平衡的數據集可能會導致有偏差的模型,因此您需要設計數據收集,以取得足夠的代表性數據樣本。 您可能需要過度取樣少數數據或取樣多數數據。 如果數據稀缺或不平衡,請考慮 SMOTE 和綜合數據產生等技術。
數據收集存放區
收集來源資料的主要選項有兩種:
- 查詢數據源的數據
- 將數據複製到本地化的數據存放區,然後查詢該存放區
選擇取決於工作負載需求和數據量。 如果您有相對少量的數據,來源系統可能會直接處理原始查詢。 不過,常見的作法是從本地化存放區查詢和分析。
權衡。 雖然本地化的數據存放區可能有助於分析和定型程式,但您也需要平衡成本、安全性和模型需求。
複製數據會產生記憶體和計算成本。 維護個別復本需要額外的資源。 本機複本可能包含敏感性資訊。 如果是,您必須使用一般安全性措施來保護數據。
如果您使用生產數據來定型數據,它必須受限於該數據的所有原始數據分類條件約束。
數據可以提供給定型程式(推送模式),或者進程本身可以查詢數據源(提取模式)。 選擇取決於擁有權、效率和資源條件約束。
將數據推送至工作負載時,數據源擁有者有責任提供全新的數據。 工作負載擁有者在其本地化數據存放區中提供適當的位置來儲存數據。 此方法適用於組織所擁有的專屬數據,不適用於公用來源。
有兩種方法可用來提取數據。 在一種方法中,工作負載會針對數據存放區進行查詢、擷取必要的數據,並將它放在本地化的存放區中。 另一種方式是在記憶體中執行實時查詢。 決策取決於數據量和可用的計算資源。 對於較小的數據集,記憶體內部擷取可能就足以進行模型定型。
不論您是否使用推送或提取模式,請避免在過時的數據上定型模型。 數據更新的頻率應該符合工作負載需求。
數據分割
工作負載特定需求可能需要數據分割。 以下是一些潛在的使用案例:
安全性需求 通常會推動分割決策。 例如,法規限制可能會防止跨地緣政治區域導出數據。 如果您的應用程式設計允許使用不同的模型,數據設計會為每個模型納入個別的數據管線。
不過,如果使用單一模型,則會將分割數據源饋送至該模型。 您需要針對這兩個地理位置的數據定型模型,這可能會增加複雜度。
無論應用程式是使用單一模型還是多個模型,都會在每個數據區段上保留安全性措施,使其受到與源數據相同層級的保護。
數據新鮮度比率 可以是分隔數據的因素。 來自不同來源的數據可能會以不同的時間間隔重新整理。 如果數據變更,重新定型會變得必要。 分割可讓您細微控制數據生命週期。 請考慮針對不同的數據區段使用不同的數據表或管線。
不論使用案例為何,分割數據時,訪問控制都是索引鍵。 數據專業人員,例如數據工程師和數據科學家,探索可用的源數據,以瞭解模式和關聯性。 其深入解析有助於預測結果的定型模型。 建立訪問控制,以確保只有授權的使用者才能與特定數據子集互動。 對被視為相關的數據套用最低許可權。 與數據擁有者共同作業以設定適當的許可權。
資料前置處理
在真實世界的案例中,源數據不只是儲存在 AI 案例中。 有一個中繼程式可準備用於定型的數據。 在這個階段中,數據會去除雜訊,使其適合用於取用。 處理源數據時,數據科學家會參與探索、實驗和決策的流程。 其主要目標是識別並擷取保留預測能力之源數據的部分。
前置處理邏輯取決於問題、數據類型和所需結果。 以下是前置處理的一些常見技術。 這份清單並不完整。 工作負載的實際準則將由商務需求所驅動。
品質。 前置處理可協助您確保定型數據已去除雜訊。 目標是確保定型數據中的每個數據列都代表清楚的觀察或與使用案例相關的良好範例,並消除缺乏品質或預測力的觀察。 例如,如果您定序產品評論,您可以選擇排除太短的數據。 您需要探索哪些數據品質會產生有意義的預測結果。
重新複製。 太特定的源數據欄位可以限制預測能力。 例如,請考慮位址欄位。 將範圍從全位址(房屋號碼和街道名稱)擴大至較高層級,例如城市、州或國家/地區,可能更相關。
重複資料刪除。 消除備援可確保定型數據保持準確且具有代表性。 在某些情況下,進行觀察的頻率並不相關。 例如,當您掃描記錄時,如果記錄項目出現 1,000 次,表示其頻率。 它不一定表示它比只發生一次記錄檔更嚴重的錯誤。 這種類型的備援可能會造成雜訊。
敏感數據處理。 除非模型預測能力絕對重要,否則請勿透過匿名方式消除個人資料。 定型數據應該有效,而不會損害隱私權。 如果數據提供價值,您必須注意處理敏感數據的道德考慮。 如需詳細資訊,請參閱 負責的 AI。
標準化轉換。 領域專家認為上述技術是特徵工程的核心部分。 廣泛的範圍和多樣化的源數據最終需要合併到功能存放區,其中功能會組織(例如,合併為功能數據表),以明確進行定型模型。 選取要定型的預測數據之後,請將數據轉換成標準化格式。 標準化也可確保與定型模型的相容性。
將影像轉換成文字表示法是一種轉換形式。 例如,您可以將掃描的檔或影像轉換成計算機可讀取的文字。
若要確保與模型相容,您可能需要調整影像的方向或外觀比例,以符合模型的期望。
注意
混合大量的結構化和非結構化數據可能會增加處理時間。 工作負載小組應測量處理各種格式的影響。 當重新定型工作之間的視窗變短時,前置處理所花費的時間量會變得更重要。
資料保留
定型模型之後,評估是否要刪除用於定型的數據,並重建下一個定型視窗的模型。
如果數據維持相對不變,除非發生模型漂移,否則重新定型可能不需要。 如果預測的精確度降低,您需要重新定型模型。 您可以選擇再次擷取數據、前置處理和建置模型。 如果自上一個定型窗口以來的數據差異很大,該動作最好。 如果有大量數據且沒有太大變更,您可能不需要預先處理和重建模型。 在此情況下,請保留數據、進行就地更新,然後重新定型模型。 決定您想要保留定型數據的時間長度。
一般而言,從功能存放區刪除數據,以減少效能不佳且不再與目前或未來模型相關的功能雜亂和儲存成本。 如果您保留數據,預期會管理成本並解決安全性問題,這是數據重複的典型考慮。
譜系追蹤
數據譜系 是指追蹤從其來源到其在模型定型中使用的數據路徑。 追蹤數據譜系對於可解釋性至關重要。 雖然使用者可能不需要有關數據來源的詳細資訊,但該資訊對於內部數據控管小組而言非常重要。 譜系元數據可確保透明度和責任,即使模型並未直接使用。 這對於偵錯用途很有用。 它也可協助您判斷數據前置處理期間是否引進偏差。
當您可以時,請使用平臺功能進行譜系追蹤。 例如,Azure 機器學習 已整合到 Microsoft Purview 中。 這項整合可讓您在 MLOps 生命週期中存取數據探索、譜系追蹤和治理的功能。
資料維護
所有模型都會隨著時間而過時,這會導致模型的預測能力或與衰變的相關性。 數個外部變更可能會導致衰變,包括使用者行為、市場動態或其他因素的轉變。 一段時間前定型的模型可能會因為變更情況而較不相關。 若要以更逼真度進行預測,您需要最近的數據。
採用較新的模型。 為了確保相關性,您需要持續評估模型效能的作業迴圈,並考慮較新的模型,以將數據管線維持在最少的干擾性。 或者,您可以準備一個更大的變更,涉及重新設計數據生命週期和管線。
當您選擇新的模型時,不一定需要從新的數據集開始。 即使模型切換期間,用於定型的現有觀察可能仍然有價值。 雖然新的模型可能會顯示較窄的案例,但基本程式仍然類似。 功能存放區和數據網格等數據管理方法可以簡化採用新的機器學習模型。
以觸發程式為基礎的與例程作業。 請考慮模型重新定型是否應該由特定事件或條件觸發。 例如,新的、更相關的數據的可用性,或與已建立基準下方的相關性下降可能會觸發重新定型。 此方法的優點是回應性和及時更新。
維護也可以定期排程固定間隔,例如每日或每周。 針對防故障作業,請考慮這兩種方法。
數據移除。 拿掉不再用於定型的數據,以優化資源使用,並將使用過時或無關的數據用於模型定型的風險降到最低。
被遺忘 的權利是指個人將個人資料從在線平臺或資料庫移除的權利。 請務必有原則可移除用於定型的個人資料。
資料保留 \(英文\)。 在某些情況下,您需要重建現有的模型。 例如,針對災害復原,模型應該與災難性事件之前完全相同地重新產生。 我們建議您有遵循主要管線工作負載需求的次要數據管線,例如尋址模型衰變、透過觸發程式型或例行作業的定期更新,以及其他維護工作。
權衡。 數據維護成本高昂。 它牽涉到複製數據、建置備援管線,以及執行例程程式。 請記住,定期訓練可能無法改善答案品質。 它只提供對過時的保證。 評估數據變更的重要性,作為判斷更新頻率的訊號。
請確定數據維護已做為模型作業的一部分。 您應該建立程式,盡可能透過自動化處理變更,並使用正確的工具組。 如需詳細資訊,請參閱 Azure 上適用於 AI 工作負載的 MLOps 和 GenAIOps。