在哪裡儲存和寫入 Azure Machine Learning 實驗的檔案
適用於: Python SDK azureml v1 (部分機器翻譯)
在本文中,您將了解在哪裡儲存輸入檔案,以及寫入實驗的輸出檔案,才能防止儲存體限制錯誤和實驗延遲。
在計算目標上執行定型工作時,會與外部環境隔離。 此設計旨在確保實驗的重現性和可攜性。 如果相同的指令碼在相同或另一個計算目標上執行兩次,您會得到相同的結果。 在此設計中,您可以將計算目標視為無狀態的計算資源,與各自完成之後執行的工作沒有任何親和性。
在哪裡儲存輸入檔案
在計算目標或本機機器上起始實驗之前,您必須先確保該計算目標可以使用必要的檔案。 例如,程式碼必須執行的相依性檔案和資料檔。
Azure Machine Learning 會藉由複製整個來源目錄,來將指令碼定型。 如果您不想上傳敏感性資料,請使用 .ignore 檔案,或不要將敏感性資料放入來源目錄中。 請改用資料存放區來存取資料。
實驗快照集的儲存限制為 300 MB 和/或 2,000 個檔案。
因此,我們建議:
將檔案儲存在 Azure Machine Learning 資料集。 使用資料集可防止實驗延遲問題,並具有從遠端計算目標存取資料的優點。 Azure Machine Learning 會處理資料集的驗證和掛接。 深入了解如何在定型指令碼中,以使用資料集定型來指定資料集做為輸入資料來源。
如果您只需要幾個資料檔案和相依性指令碼,而無法使用資料存放區,請將檔案放在定型指令碼所在的相同資料夾目錄中。 直接在定型指令碼中,或在呼叫定型指令碼的程式碼中,將此資料夾指定為
source_directory
。
實驗快照集的儲存體限制
針對實驗,Azure Machine Learning 會根據您在設定執行時所建議的目錄,自動建立程式碼的實驗快照集。 針對管線,系統會針對每個步驟設定目錄。
限制總計為 300 MB 和/或 2,000 個檔案。 如果超出此限制,您會看到下列錯誤:
While attempting to take snapshot of .
Your total snapshot size exceeds the limit of 300.0 MB
若要解決此錯誤,請將實驗檔案儲存在資料存放區。 如果您無法使用資料存放區,下表提供可能的替代解決方案。
實驗描述 | 儲存體限制解決方案 |
---|---|
少於 2000 個檔案且無法使用資料存放區 | 覆寫快照集大小限制 azureml._restclient.snapshots_client.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size' 和 azureml._restclient.constants.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size' 這可能需要幾分鐘的時間,視檔案的數目和大小而定。 |
必須使用特定的指令碼目錄 | 若要避免在快照中包含不必要的檔案,請在目錄中建立忽略檔案 (.gitignore 或 .amlignore )。 將要排除的檔案和目錄新增到這個檔案中。 如需此檔案中可用語法的詳細資訊,請參閱 .gitignore 的語法和模式。 .amlignore 檔案會使用相同的語法。 如果兩個檔案都存在,則會使用 .amlignore 檔案,不會使用 .gitignore 檔案。 |
管線 | 針對每個步驟使用不同的子目錄 |
Jupyter 筆記本 | 建立 .amlignore 檔案,或將筆記本移至新的空白子目錄,然後重新執行程式碼。 |
在哪裡寫入檔案
由於定型實驗的隔離,工作期間對檔案的變更,不一定會在環境外保存。 若指令碼修改計算本機的檔案,變更不會保存至下一次的實驗工作,而且也不會自動傳播回用戶端電腦。 因此,第一次實驗作業期間所做的變更,並不會也不應該影響第二次實驗作業的變更。
寫入變更時,建議使用 OutputFileDatasetConfig 物件,透過 Azure Machine Learning 資料集將檔案寫入儲存體。 請參閱如何建立 OutputFileDatasetConfig。
否則,請將檔案寫入 ./outputs
和 (或) ./logs
資料夾。
重要
Azure Machine Learning 會特別處理 outputs 和 logs 這兩個資料夾。 在定型期間,當您將檔案寫入 ./outputs
和 ./logs
資料夾時,檔案會自動上傳至作業記錄,以供您在作業完成後存取。
針對狀態訊息或評分結果相關的輸出,請將檔案寫入
./outputs
資料夾,以保存為工作記錄中的組建成品。 請注意寫入此資料夾的檔案數目和大小,因為將內容上傳至工作記錄時,可能會發生延遲。 如果擔心延遲,建議將檔案寫入資料存放區。若要將寫入的檔案儲存於作業記錄中的記錄,請將檔案寫入
./logs
資料夾。 記錄會即時上傳,所以此方法適用於從遠端作業來串流即時更新。
下一步
深入了解從儲存體存取資料。
深入了解建立模型定型和部署的計算目標