目前,我們有一個在 AWS Sagemaker 上運行的系統,其中多個單位擁有自己經過訓練的機器學習模型工件(使用帶有 Sagemaker SKLearn 估計器的 SKLearn 訓練腳本)。通過使用 Sagemaker 的多模型端點,我們能夠在單個實例上托管所有這些單元。我們面臨的問題是,我們需要擴展這個系統,以便我們可以為數十萬個單元訓練單個模型,然后將生成的模型工件托管在多模型端點上。但是,Sagemaker 對可以并行訓練的模型數量有限制(我們的限制是 30)。除了批量訓練我們的模型之外,有誰知道如何在 AWS Sagemaker 中實現一個系統,從而對于數十萬個單元,我們可以為每個單元擁有一個單獨的經過訓練的模型工件?有沒有辦法使用 SKLearn 估計器為 1 個 sagemaker 訓練作業輸出多個模型工件?此外,提交訓練腳本時,Sagemaker如何利用多個CPU?這是否必須在訓練腳本/估計器對象中指定,還是自動處理?
1 回答

慕后森
TA貢獻1802條經驗 獲得超5個贊
以下是一些想法:
1. 有誰知道如何在 AWS Sagemaker 中實現一個系統,從而對于數十萬個單元,我們可以為每個單元擁有一個單獨的經過訓練的模型工件?有沒有辦法使用 SKLearn 估計器為 1 個 sagemaker 訓練作業輸出多個模型工件?
我不知道 30 個訓練作業并發數是否是一個硬性限制,如果它是一個障礙,您應該嘗試打開支持票詢問是否是這樣,并嘗試提高它。否則,正如您所指出的,您可以嘗試在一項作業中訓練多個模型,并生成多個工件,您可以 (a) 手動發送到 S3,或 (b) 保存,以便將opt/ml/model
它們全部發送到模型。 S3 中的 tar.gz 工件。請注意,如果這個工件變得太大,這可能會變得不切實際
2. 提交訓練腳本時,Sagemaker如何利用多個CPU?這是否必須在訓練腳本/估計器對象中指定,還是自動處理?
這取決于您使用的訓練容器的類型。SageMaker 內置容器由 Amazon 團隊開發,旨在高效利用可用資源。如果您在 Sklearn 容器中使用自己的代碼(例如自定義 python),則您有責任確保您的代碼高效編寫并使用可用的硬件。因此框架的選擇非常重要:)例如,一些sklearn模型支持顯式使用多個CPU(例如隨機森林n_jobs
中的參數),但我不認為Sklearn原生支持GPU、多GPU或多節點訓練。
添加回答
舉報
0/150
提交
取消