從晶圓制造和電路探測到封裝芯片測試,NVIDIA 利用數據科學和機器學習來優化芯片制造和運營工作流程。這些階段會產生 TB 級的數據,而要確保質量、吞吐量和成本效益,關鍵在于快速、大規模地將這些數據轉化為切實可行的見解。多年來,我們開發了強大的 Machine Learning 流程,可解決缺陷檢測和測試優化等問題。
這是一系列博客中的第一個,這些博客將分享我們使用 NVIDIA cuDF 和 NVIDIA cuML 等 CUDA-X 庫部署此類工作流的關鍵經驗。雖然這些經驗教訓來自半導體制造,但挑戰和解決方案廣泛適用于物流、質量工程和供應鏈優化。
我們先從現實世界的分類任務開始:預測芯片是否通過特定測試。在更高級的場景中,目標擴展到預測芯片的性能箱(從 L1 到 L5),并將問題表述為多類別分類問題。
在這兩種情況下,模型會使用來自多個來源的豐富測量信號:
- 稀疏特征:Wafer-level metrology
- 密集信號:來自電路探針 (CP) 測試的芯片級數據,以及封裝單元的高保真功能測試 (FT) 結果
這些數據集通常涵蓋數十萬行和數百個特征,很快就會使傳統的 CPU 數據處理工作流程不堪重負。
處理不平衡的數據集
以運算為中心的機器學習 (Ops ML) 面臨的一個關鍵挑戰是極端的等級失衡。在某些芯片系列中,超過 99% 的單元通過了測試,只有一小部分單元失敗。這種偏差使得訓練穩健模型變得困難,因為標準學習者往往偏向于大多數類別。
為了解決這一問題,我們利用 CUDA-X 數據科學庫(包括 cuDF 和 cuML)進行快速的數據轉換和可擴展的模型實驗。在處理此類高度不平衡的數據集時,我們采用定向采樣方法(包括 Synthetic Minority Over-Sampling Technique (SMOTE) 和 undersampling)來平衡類,從而實現更穩定、更有效的模型訓練。利用 CUDA-X 庫,這些策略可以直接在 GPU 內存中完成,從而大幅縮短迭代時間并無縫擴展實驗。
合成少數超采樣技術 (SMOTE)
# Minority Oversampling (SMOTE) using cuML from imblearn.over_sampling import SMOTE from cuml.neighbors import NearestNeighbors # X,y are dataframes with features and target resp. nn = NearestNeighbors(n_neighbors = 6 ) X_resampled, y_resampled = SMOTE(n_neighbors = nn).fit_resample(X, y) |
在我們的實驗中,與原生 scikit-learn 相比,cuML 的 NearestNeighbors 與 SMOTE 的結合表明,CUDA-X 庫的價值體現在 2x 到 8x 的速度提升上。
分層下采樣
# Quick example of stratified sampling using cuDF df[ 'label' ] = df[ 'label' ].astype( 'category' ) sampled_df = df.groupby( 'label' ).sample(n = 10000 , replace = True ) X_resampled, y_resampled = sampled_df[x_features], sampled_df[target] |
在實踐中,快速迭代至關重要。得益于 cuDF 的 GPU 加速連接、過濾器和組比,我們通常在幾小時而不是幾天內就能從原始的 CP 和 FT 數據轉換為模型就緒型功能。在訓練隨機森林或 XGBoost 等模型時,cuML 的速度比基于 CPU 的版本持續提高 5 到 30 倍,使我們能夠更快地測試更多假設和調整模型。這種敏捷性使工程師能夠在晶圓廠現場近乎實時地對解決方案進行原型設計。
對于評估至關重要的Metrics
高度不平衡的數據集不僅會使訓練變得復雜,還會扭曲用于評估的標準指標。例如,當模型可以預測每個芯片的“pass”,并且準確性仍為 99% 時,準確性就變成了毫無意義的指標。
為了更好地反映真實性能,我們依賴于加權精度和 precision-recall 曲線下的區域等指標。
加權精度
我們分別評估每個類別的準確性,并采用加權平均值,給予每個類別同等重要性,并消除不平衡。
及格率:p_ac = Predicted Pass/(Predicted Pass + True Pass)
失敗準確率:f_ac = Predicted Fail/(Predicted Fail + True Fail)
加權形式為:
acc = w_f * f_acc + (1 – w_f) * p_acc
對于大多數設置而言,便捷的默認設置是 w_f = 0.5
acc = ( f_acc = p_acc) / 2
精度召回曲線
在嚴重不平衡的數據集中,傳統的相對運算特征 (ROC) 曲線和 ROC 曲線指標下的區域可能會產生誤導。例如,假設產量吞吐量為 98% (即 2% 的部件“不合格”) 的數據集嚴重不平衡。
我們來比較一下 ROC 曲線和 precision-recall 曲線。ROC 曲線上的標記突出顯示了真陽性率為 0.61 且假陽性率為 0.13 的點。乍一看,這似乎是一個合理的操作點。但是,對于不平衡的數據集 (如下所示,其中大多數結果都“通過”) ,ROC 曲線可能會產生誤導,因為它們不會強調假陽性的成本。
看看 precision-recall (PR) 曲線上的同一點。這里的 precision 只有 0.09,recall 是 0.61。這告訴我們,模型預測每 100 個單元“失敗”,只有 9 個單元真正失敗,這對于大多數現實世界的制造場景來說是不可接受的,因為在這些場景中,響應錯誤警報的成本很高。

下方的混淆矩陣(對應上述圖形上的標記)強化了這一點。在選定的操作點,1,274 個單元被錯誤標記為“fail”,而只有 122 個單元被正確標記為“fail”。那是一個 false-alarm 率超過 90%。precision-recall 曲線使這種糟糕的性能更加明顯。

以下是所討論場景的代碼。
import cuml from sklearn.datasets import make_classification from cuml.model_selection import train_test_split from cuml.ensemble import RandomForestClassifier as cuRF from cuml.metrics import roc_auc_score, precision_recall_curve import cupy as cp from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # synthetic dataset dimensions n_samples = 10000 n_features = 20 n_classes = 2 # random forest depth and size n_estimators = 25 max_depth = 10 # generate synthetic data [ binary classification task ] X, y = make_classification (n_classes = n_classes, n_features = n_features, n_samples = n_samples, random_state = 13 , weights = [ 0.98 , 0.02 ])) X_train, X_test, y_train, y_test = train_test_split( X, y, random_state = 0 , test_size = 0.3 ) # Train the RandomForest Classifier model = cuRF( max_depth = max_depth, n_estimators = n_estimators, random_state = 0 ) trained_RF = model.fit ( X_train, y_train) ypred = model.predict_proba ( X_test) [:, 1 ] # Calculate the ROC curve fpr, tpr, _ = roc_curve(y_test, ypred) roc_auc = roc_auc_score(y_test, ypred) plt.plot(fpr, tpr, color = 'darkorange' , label = 'ROC Curve' ) # Calculate the Precision-Recall curve precision, recall, _ = precision_recall_curve(y_test, ypred) pr_auc = auc(cp.asnumpy(recall), cp.asnumpy(precision)) plt.plot(recall, precision, color = 'darkorange' , label = 'Precision-Recall Curve' ) |
可解釋性
模型性能只是其中一部分。在操作環境中,可解釋性和可操作性同樣重要。只有當領域專家能夠理解和信任模型的推理時,預測測試結果才有真正的價值。
這就是為什么我們依賴于 cuML 對集成模型中特征重要性的原生支持。此功能可幫助我們呈現高影響力特征以進行工程審查。在某些情況下,這些見解有助于識別并消除冗余或低價值的測試步驟,從而直接節省成本并簡化流程。
領域專家通過模型輸出進行推理的另一種方法是使用 cuML 的 GPU 加速 SHAP (SHapley Additive exPlanations) 實現,例如 Kernel SHAP 和 Permutation SHAP 解釋器。這些工具使我們能夠了解每個特征對模型預測的貢獻,同時提供全局和局部可解釋性。在實踐中,這些基于 SHAP 的見解幫助我們確定了冗余或預測性較低的測試步驟,從而通過消除測試來節省成本。
總結
對于有興趣進一步探索的用戶,cuDF 文檔提供了有關 GPU 加速數據操作的全面指南,而 cuML 文檔詳細介紹了針對 GPU 優化的機器學習算法套件。對于希望在工作流程中充分發揮 CUDA-X 數據科學庫潛力的從業者來說,這些資源非常寶貴。
如果您已使用 pandas、Polars 或 scikit-learn 等庫構建工作流,CUDA-X 還可以通過 cuDF 的 pandas 加速器和 cuML 的 scikit-learn 估計器提供插入式、零代碼更改加速。這使得擴展現有 Python 工作流變得比以往更容易,而無需從頭開始重寫它們。要更深入地了解加速數據科學,您可以通過我們的 DLI 學習路徑注冊實戰課程。
在我們即將發布的博客中,我們將探索特征工程技術(例如合并測試信號和計算空間 Z-Yield)、使用業務感知指標(例如 Cost of Quality (CoQ) 曲線)進行模型評估,以及使用 ML 增強和賦能運營工程的最佳實踐。這些課程基于 CUDA-X 基礎的流程和 NVIDIA 的制造領域,但這些模式在任何數據豐富的決策驅動型操作環境中都是可重復的。
在構建和部署面向運營的機器學習 (ML) 的下一階段中,請持續關注我們 – 加速數據處理工作流程僅僅是個開始。真正的價值在于讓它變得可行。
?