Data Science Workshop (DSW) では、データセットまたはObject Storage Service (OSS) パスをマウントできます。 これにより、DSWインスタンスのストレージスペースを拡張し、ストレージデータを保持し、データを共有できます。 このトピックでは、DSWでデータセットまたはOSSパスをマウントする方法について説明します。
背景情報
パブリックおよび専用リソースグループのストレージ容量は限られており、永続ストレージをサポートしていません。 ストレージを拡張し、データの永続性を確保するために、Apsara File storage NAS (NAS) 、OSS、またはCloud Parallel File Storage (CPFS) データセット、またはOSSパスをDSWの指定されたパスにマウントできます。
パブリックリソースグループのDSWインスタンスは、容量が制限された空きディスクを使用します。これは、インスタンスが停止または削除されてから15日後にクリアされます。
専用リソースグループのDSWインスタンスは、システムディスクにデータを保存します。インスタンスを停止または削除すると、一時的なストレージがクリアされます。
起動時にマウントするか、動的にマウントするかを選択できます。
起動時のマウント: インスタンスを設定するときに、[データセット] または [マウント設定] パラメーターを設定します。 変更を有効にするには、インスタンスを再起動します。
動的マウント: SDK for PAIを使用して、インスタンスを再起動することなく、DSWインスタンス内のマウントを設定します。
さらに、高速読み取り /読み取り、増分読み取り /書き込み、読み取り /書き込みの一貫性、読み取り専用など、高いパフォーマンスが必要なシナリオでは、データセットのJindoパラメーターを設定してマウントを構成できます。
JindoDataは、データレイクシステムのストレージアクセラレーションのためにAlibaba Cloudビッグデータチームによって開発されたスイートです。 詳細については、「概要」をご参照ください。
制限事項
複数のデータセットを同じパスにマウントすることはできません。
OSSパスがマウントされているパスに対して、書き込み操作を頻繁に実行しないことを推奨します。
マウントの設定
起動時にマウント
インスタンスを設定するときは、[データセット] または [マウント設定] パラメーターを設定します。 変更を有効にするには、インスタンスを再起動します。
データセットのマウント
OSSパスのマウントと比較して、データセットはバージョン管理とデータセットの高速化を可能にします。 データセットをマウントするには、次の手順を実行します。
データセットを作成します。
PAIコンソールで、AIアセット管理 > データセットを選択します。 カスタムデータセットまたはパブリックデータセットを作成します。 詳細については、「データセットの作成と管理」をご参照ください。
データセットのマウント
インスタンスを作成するか、既存のインスタンスの設定を変更します。 [インスタンスの作成] または [設定の変更] ページで、[マウント設定] の横にある [追加] をクリックします。 次に、データセットを選択し、[マウントパス] を指定します。 マウントモードはデフォルトでは空のままです。 詳細については、「マウントモード」をご参照ください。
カスタムデータセットをマウントする場合は注意してください。
CPFSデータセットを使用する場合は、インスタンスに仮想プライベートクラウド (VPC) を設定する必要があります。 選択するVPCは、CPFSデータセットが存在するVPCと同じである必要があります。 そうしないと、DSWインスタンスの作成に失敗する可能性があります。
NASデータセットを使用する場合は、ネットワーク設定を設定し、インスタンスのセキュリティグループを選択する必要があります。
専用リソースグループを選択した場合、NASはOSSよりもFilesystem in Userspace (FUSE) インターフェイスのサポートが優れています。 したがって、最初に追加するデータセットはNASタイプで、指定されたパスとデフォルトのDSW作業ディレクトリ /home/admin/workspaceにマウントする必要があります。
OSSパスのマウント
動的マウント
SDK for PAIを使用して、インスタンスを再起動することなく、DSWインスタンス内のマウントを設定します。
準備
PAI SDK for PythonをDSWインスタンスのターミナルにインストールします。 Pythonのバージョンは3.8以降でなければなりません。
python -m pip install pai>=0.4.11
次のいずれかの方法を使用して、PAI SDK for PythonのAccessKeyペアを設定し、PAIにアクセスします。
方法1: DSWインスタンスのデフォルトロールまたはカスタムRAMロールを設定します。 インスタンスの [設定の変更] ページに移動し、[拡張] をクリックしてRAMロールを選択します。 詳細については、「DSWインスタンスのRAMロールの設定」をご参照ください。
方法2: Python用PAI SDKが提供するCLIを使用して、AccessKeyペアを手動で設定します。 次のコマンドを実行して、パラメーターを設定します。 詳細については、「Python用PAI SDKのインストールと設定」をご参照ください。
python -m pai.toolkit.config
サンプルコード
動的マウント機能を使用すると、DSWインスタンスを再起動することなく、特定のOSSバケットディレクトリをDSWインスタンスにマウントできます。 サンプルコード:
デフォルトのパスにマウントします。
データは、インスタンスのデフォルトのマウントパスにマウントされます。
from pai.dsw import mount # Mount OSS path mount_point = mount("oss://<YourBucketName>/Path/Data/Directory/") # Mount a dataset. Specify the ID of the dataset # mount_point = mount("d-m7rsmu350********")
特定のパスにマウントします。
動的マウント機能では、コンテナ内の特定のパスまたはサブパスにデータをマウントする必要があります。 Python用PAI SDKが提供するAPIを使用して、動的マウントパスを取得できます。
from pai.dsw import mount, default_dynamic_mount_point # Obtain the default mount path of the instance. 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/") # Specify the mounted path, which is the MountPath returned by list_dataset_configs # Wait for a few seconds for the unmounting to take effect unmount(mount_point)
マウントモード
このトピックでは、特定のシナリオでJindoFuseを設定する方法について提案しますが、すべてのシナリオで最適な設定を提供するわけではありません。 詳細については、「JindoFuseのユーザーガイド」をご参照ください。
OSSタイプのカスタムデータセットのみがマウントモードをサポートしています。
クイック読み取り /書き込み: クイック読み取りと書き込みを保証します。 ただし、同時読み取りまたは書き込み中にデータの不整合が発生する可能性があります。 トレーニングデータとモデルをこのモードのマウントパスにマウントできます。 このモードのマウントパスを作業ディレクトリとして使用しないことを推奨します。
{ "fs.oss.download.thread.concurrency": "Twice the number of CPU cores", "fs.oss.upload.thread.concurrency": "Twice the number of CPU cores", "fs.jindo.args": "-oattr_timeout=3 -oentry_timeout=0 -onegative_timeout=0 -oauto_cache -ono_symlink" }
増分読み取り /書き込み: 増分書き込み中のデータの一貫性を保証します。 元のデータを上書きすると、データの不整合が発生する可能性があります。 読み取り速度はやや遅いです。 このモードを使用して、モデル重みファイルをトレーニングデータ用に保存できます。
{ "fs.oss.upload.thread.concurrency": "Twice the number of CPU cores", "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": "Twice the number of CPU cores", "fs.jindo.args": "-oro -oattr_timeout=7200 -oentry_timeout=7200 -onegative_timeout=7200 -okernel_cache -ono_symlink" }
マウント設定の表示
Data Science Workshop (DSW) ページのインスタンスリストで、管理するDSWインスタンスの [操作] 列で [開く] をクリックします。
Data Science Workshopページの上部ナビゲーションバーで、[ターミナル] タブをクリックします。 指示に従ってターミナルを開きます。
[ターミナル] ページで、次のコマンドを実行して、NASデータセットとOSSデータセットがマウントされているかどうかを確認します。
# View all mounted datasets. mount # Query the mount path of a NAS dataset. mount | grep nas # Query the mount path of an OSS dataset. mount | grep oss
次の出力が返されると、データセットがマウントされます。
NASデータセットは、/mnt/data_nas、/mnt/workspace、および /home/admin/workspaceパスにマウントされます。 /mnt/data_nasは、DSWインスタンスの作成時に指定したマウントパスを示します。 他の2つのパスは、最初のNASデータセットに提供されるDSWのデフォルトの作業ディレクトリです。 NASリソースとサーバーが期待どおりに機能する限り、データとコードは保持されます。
OSSデータセットは /mnt/data_ossパスにマウントされます。