當您想要擴展DSW實例存儲空間、持久化存儲數據、共享數據時,可以通過掛載數據集或OSS路徑的方式實現,本文為您介紹如何進行DSW掛載配置。
背景信息
公共資源組和專有資源組默認數據存儲空間有限,且無法持久化存儲,因此,當您需要擴展實例的存儲空間或持久化存儲數據時,可以創建NAS、OSS或CPFS類型的數據集,并將其掛載到DSW指定的路徑,以實現在DSW中讀寫數據集數據。
公共資源組DSW實例,數據存儲在空間有限(100GiB)的免費云盤中,在刪除實例或停機超過15天后,云盤數據將被清空。
專有資源組DSW實例,數據存儲在實例的系統盤中,在停止或刪除實例后,臨時存儲將被清空。
掛載方式分為啟動時掛載和動態掛載。
啟動時掛載:通過設置實例配置頁面的數據集或掛載配置參數,完成數據集或OSS路徑掛載配置。在配置后需要重啟實例才會生效。
動態掛載:在DSW實例中通過PAI SDK進行掛載配置,無需重啟實例即可完成掛載。
此外,為提升性能,您還可以通過數據集的Jindo參數,配置掛載模式,適配不同的場景,如:快速讀寫、增量讀寫、讀寫一致、只讀。
Jindo是阿里云開源大數據團隊自研的數據湖存儲加速套件,詳細內容可參見JindoData概述。
使用限制
多個數據集掛載的路徑不能重復。
在OSS掛載的目錄下,不建議進行頻繁的寫操作。
非OSS類型的自定義數據集不支持配置掛載模式。
掛載配置
啟動時掛載
啟動時掛載,通過設置實例配置頁面的數據集或掛載配置參數,完成數據集或OSS路徑掛載配置。在配置后需要重啟實例才會生效
掛載數據集
相比于直接掛載OSS路徑,掛載數據集具有可以進行版本管理和數據集加速的優點。掛載步驟如下:
創建數據集
登錄PAI控制臺,在AI資產管理>數據集頁面創建自定義數據集或者公共數據集。具體操作可參見創建及管理數據集。
掛載數據集
在新建DSW實例時出現的配置頁中(已存在的實例通過單擊變更配置打開配置頁),找到數據集配置區域。點擊添加,然后選擇已創建的數據集并填寫掛載路徑。掛載模式默認為空,您可以參考下文的掛載模式,按需配置。
如果您掛載的是自定義數據集,請注意以下事項:
如果配置了CPFS類型的數據集,需要設置網絡配置,且選擇的專有網絡需要與CPFS一致。否則,DSW實例可能會創建失敗。
如果配置了NAS類型的數據集,需要設置網絡配置,選擇安全組。
當資源組選擇專有資源組時,因為OSS對fuse接口的支持不如NAS完善,DSW限制第一個數據集必須選擇NAS類型數據集,并且該數據集會同時掛載到您指定的路徑和DSW默認工作目錄/home/admin/workspace下。
掛載OSS路徑
動態掛載
動態掛載是在DSW實例中基于PAI SDK自行編寫代碼,完成數據集和OSS路徑的掛載,無需重啟實例即可完成掛載
準備工作
安裝PAI Python SDK。在打開的DSW實例終端中執行如下命令,安裝PAI Python SDK,要求python >= 3.8。
python -m pip install pai>=0.4.11
配置SDK訪問PAI的密鑰。
方式一:配置DSW實例為PAI默認角色或自定義RAM角色。打開實例配置頁,在頁面底部單擊展開選擇實例RAM角色。具體操作,請參見配置DSW實例RAM角色。
方式二:手動通過PAI Python SDK提供的命令行工具完成配置。在終端中執行如下命令配置訪問參數。操作示例請參見初始化配置。
python -m pai.toolkit.config
使用示例
通過動態掛載功能,您無需重啟配置DSW實例,使用示例如下:
掛載到默認路徑
相應的數據會被掛載到實例內的默認掛載路徑下(使用官方預置實例鏡像默認路徑為
/mnt/dynamic/
)。from pai.dsw import mount # 掛載oss路徑 mount_point = mount("oss://<YourBucketName>/Path/Data/Directory/") # 掛載數據集, 入參為數據集的id # mount_point = mount("d-m7rsmu350********")
掛載到指定路徑
動態掛載功能目前需要將數據掛載到容器內的指定路徑(或是相應的子路徑下),可以通過SDK提供的API獲取動態掛載路徑。
from pai.dsw import mount, default_dynamic_mount_path # 獲取實例的默認掛載路徑 default_path = default_dynamic_mount_path() mount_point = mount("oss://<YourBucketName>/Path/Data/Directory" , mount_point=default_path + "tmp/output/model")
查看實例內的所有掛載數據配置
from pai.dsw import list_dataset_configs print(list_dataset_configs())
卸載掛載數據
from pai.dsw import mount, unmount mount_point = mount("oss://<YourBucketName>/Path/Data/Directory/") # 入參為掛載的路徑,即list_dataset_configs查詢到的MountPath # 執行卸載后需要等待幾秒鐘才會生效 unmount(mount_point)
掛載模式
本節提供部分場景的Jindo配置建議,并未覆蓋所有場景下的最優性能。更靈活的配置,請參見JindoFuse使用指南。
非OSS類型的自定義數據集不支持配置掛載模式
快速讀寫:允許用戶讀寫,讀取速度快,但并發讀寫可能會出現數據不一致的問題,適合掛載訓練數據和模型,不適合作為工作目錄。
{ "fs.oss.download.thread.concurrency": "cpu核數2倍", "fs.oss.upload.thread.concurrency": "cpu核數2倍", "fs.jindo.args": "-oattr_timeout=3 -oentry_timeout=0 -onegative_timeout=0 -oauto_cache -ono_symlink" }
增量讀寫:在增量寫入時能夠保證數據一致性,覆蓋原有數據會有一致性問題。讀取速度略慢,適合保存訓練的模型權重文件。
{ "fs.oss.upload.thread.concurrency": "cpu核數2倍", "fs.jindo.args": "-oattr_timeout=3 -oentry_timeout=0 -onegative_timeout=0 -oauto_cache -ono_symlink" }
讀寫一致:在并發讀寫中能保持數據一致性,適用于對數據一致性要求高,可以容忍讀取速度慢的場景,適合保存代碼項目。
{ "fs.jindo.args": "-oattr_timeout=0 -oentry_timeout=0 -onegative_timeout=0 -oauto_cache -ono_symlink" }
只讀:僅允許讀取,不允許寫入,適合掛載公共數據集。
{ "fs.oss.download.thread.concurrency": "cpu核數2倍", "fs.jindo.args": "-oro -oattr_timeout=7200 -oentry_timeout=7200 -onegative_timeout=7200 -okernel_cache -ono_symlink" }
查看掛載配置
打開DSW實例,在Terminal中,輸入如下命令,查看NAS及OSS類型的數據集是否掛載成功。
# 查看所有掛載
mount
# 查詢NAS掛載路徑
mount | grep nas
# 查詢OSS掛載路徑
mount | grep oss
系統輸出如下返回結果,說明數據集已成功掛載。
NAS數據集已掛載到/mnt/data_nas、/mnt/workspace和/home/admin/workspace目錄。其中,/mnt/data_nas為創建DSW實例時指定的掛載路徑,后兩個路徑為配置第一個NAS數據集時,被掛載的DSW的默認工作目錄。后續只要您的NAS盤和服務正常運行,數據和代碼就可以持久化存儲。
OSS數據集掛載到DSW的/mnt/data_oss目錄。