このトピックでは、サービスインスタンスにマウントできる外部ストレージの種類について説明します。Object storage service (OSS) 、Apsara File Storage NAS (NAS) 、Gitリポジトリ、Dockerイメージ、およびemptyDirボリュームです。
背景情報
Elastic Algorithm Service (EAS) では、OSS、NAS、Gitリポジトリ、Dockerイメージ、emptyDirボリュームの外部ストレージをマウントできます。 サービスのランタイムでは、特定のストレージをサービスの1つ以上のインスタンスにマウントできます。 ビジネス要件に基づいて、1つ以上のタイプの外部ストレージをマウントできます。 外部ストレージをマウントするには、サービス構成ファイルにストレージフィールドを追加します。 このフィールドは、ストレージタイプ、マウントするストレージのパス、およびストレージをマウントするサービスインスタンスのパスを指定するために使用されます。
NASファイルシステムのマウント
Gitリポジトリのマウント
emptyDirボリュームをマウントする
OSSバケットのマウント
OSSバケットをマウントするには、Machine Learning Platform for AI (PAI) コンソールのElastic Algorithm Serviceページで、OSSバケットの指定されたパスを読み取る権限をEASに付与する必要があります。 詳細については、「必要なAlibaba Cloudサービスの有効化と権限付与」をご参照ください。
サービス構成ファイルのサンプル構成:
{ "name": "service_name", "storage": [ { "mount_path": "/data_oss", "oss": { "endpoint": "oss-cn-shanghai-internal.aliyuncs.com", "path": "oss://bucket/path/" } } ] }
パラメーター
パラメーター
説明
mount_path
ストレージをマウントするサービスインスタンス上のパス。
oss.endpoint
サービスインスタンスが存在するリージョンのOSSの内部エンドポイント。 内部エンドポイントには-internalが含まれます。
oss.path
マウントするOSSバケットのパス。 パスは
oss://
で始める必要があります。
OSSバケットは、専用リソースグループ内のサービスインスタンスにのみマウントできます。
NASファイルシステムのマウント
サービスインスタンスと同じリージョンにあるNASファイルシステムをマウントできます。 NASファイルシステムをマウントするには、NASファイルシステムのマウントターゲットの内部ドメイン名を使用し、NASファイルシステムが存在する仮想プライベートクラウド (VPC) にサービスインスタンスを接続する必要があります。 ネットワーク接続の設定方法の詳細については、「ネットワーク接続の設定」をご参照ください。
サービス構成ファイルのサンプル構成:
{ "name": "service_name", "storage": [ { "mount_path": "/data_nas", "nfs": { "path": "/", "readOnly": false, "server": "xxx.cn-shanghai.nas.aliyuncs.com" } } ] }
パラメーター
パラメーター
説明
mount_path
ストレージをマウントするサービスインスタンス上のパス。
nfs.path
マウントするNASファイルシステムのパス。
nfs.readOnly
マウントするストレージに読み取り専用モードでアクセスするかどうかを指定します。
nfs.server
マウントターゲットのドメイン名。
Gitリポジトリをマウントする
Gitリポジトリがサービスインスタンスにマウントされ、EASが読み取り専用モードでGitリポジトリにアクセスする場合、サービスインスタンスの起動中にGitリポジトリのコードをプルできます。 マウントされたGitリポジトリは自動的に更新されません。 ソースGitリポジトリのコードが変更された場合、サービスインスタンスを再起動して最新のコードを取得する必要があります。
サービス構成ファイルのサンプル構成:
{ "name": "service_name", "storage": [ { "mount_path": "/data_git", "git": { "repo": "https://codeup.aliyun.com/xxx/eas/aitest.git", "username": "username", "password": "password or access token" } } ] }
パラメーター
パラメーター
必須
説明
mount_path
可
ストレージをマウントするサービスインスタンス上のパス。
git.repo
可
マウントするGitリポジトリのHTTPSアドレス。 Gitプロトコルはサポートされていません。
git.us ername
不可
プライベートGitリポジトリへのログインに使用されるユーザー名。
git.password
不可
プライベートGitリポジトリへのログインに使用されるパスワード。
git.brアンチ
不可
コードをプルするGitリポジトリのブランチ。 デフォルト値:master
git.com mit
不可
コードをプルするGitリポジトリのコミットID。
Dockerイメージのマウント
Dockerイメージをサービスインスタンスに直接マウントすることはできません。 Dockerイメージのパスにあるファイルをローカル共有ボリュームにコピーし、共有ボリュームをサービスインスタンスにマウントする必要があります。 指定されたパスのデータ量が多い場合、より多くのローカルストレージが消費され、サービスインスタンスの起動に使用される期間が延長されます。 この機能を使用する場合は、これらの要素を考慮することをお勧めします。
{ "name": "service_name", "storage": [ { "image": { "image": "registry-vpc.cn-shanghai.aliyuncs.com/eas/test_image:v1", "path": "/path/to/mount/" }, "mount_path": "/data_image" } ] }
説明サービスインスタンスと同じリージョンにあるDockerイメージをマウントできます。 イメージをマウントするには、イメージの内部アドレスを使用する必要があります。 イメージがプライベートイメージリポジトリからのものである場合、dockerAuthパラメーターを設定して、プライベートイメージリポジトリへのアクセスに使用される認証情報を指定できます。 dockerAuthパラメーターの詳細については、「カスタムイメージを使用したモデルサービスのデプロイ」をご参照ください。
パラメーター
パラメーター
説明
mount_path
ストレージをマウントするサービスインスタンス上のパス。
image.image
イメージの内部アドレス。
image.path
サービスインスタンスにマウントするイメージのパス。
emptyDirボリュームをマウントする
次の要件を満たすために、emptyDirボリュームをサービスインスタンスにマウントできます。実行中のサービスインスタンスは、ローカルディスクからデータを読み書きできます。
サービス構成ファイルのサンプル構成:
{ "name": "service_name" 、 "storage": [ { "empty_dir": {}、 "mount_path": "/data_image" } ] }
パラメーター
パラメーター
説明
mount_path
ストレージをマウントするサービスインスタンス上のパス。
empty_dir
emptyDirボリュームを指定するmapオブジェクト。 値は空のままにする必要があります。 このパラメーターで他のプロパティを設定することはできません。
共有メモリの設定
共有メモリの設定方法を次に示します。
{
"name": "service_name" 、
"storage": [
{
"empty_dir": {
"medium": "memory" 、
"size_limit": 20
},
"mount_path": "/dev/shm"
}
]
}
パラメーター:
medium: このパラメーターをmemoryに設定します。
mount_path: このパラメーターを
/dev/shm
に設定します。size_limit: 共有メモリサイズの上限を指定します。 単位は GB です。
完全な設定例
次のサンプルの完全な設定では、OSSバケット、NASファイルシステム、Gitリポジトリ、イメージ、およびemptyDirボリュームがサービスインスタンスにマウントされています。
{
"name": "service_name",
"model_path": "http://path/to/model",
"processor": "pmml",
"storage": [
{
"mount_path": "/data_oss1",
"oss": {
"endpoint": "oss-cn-shanghai-internal.aliyuncs.com",
"path": "oss://bucket1/path/"
}
},
{
"mount_path": "/data_oss2",
"oss": {
"endpoint": "oss-cn-shanghai-internal.aliyuncs.com",
"path": "oss://bucket2/path/"
}
},
{
"mount_path": "/data_nfs1",
"nfs": {
"path": "/",
"readOnly": false,
"server": "xxx.cn-shanghai.nas.aliyuncs.com"
}
},
{
"mount_path": "/data_nfs2",
"nfs": {
"path": "/",
"readOnly": true,
"server": "yyy.cn-shanghai.nas.aliyuncs.com"
}
},
{
"image": {
"image": "registry-vpc.cn-shanghai.aliyuncs.com/eas/test_image:v1",
"path": "/path/to/mount/"
},
"mount_path": "/data_image"
},
{
"empty_dir": {
"medium": "memory",
"size_limit": 20
},
"mount_path": "/dev/shm"
},
{
"mount_path": "/data_git",
"git": {
"repo": "https://codeup.aliyun.com/xxx/eas/aitest.git",
"username": "username",
"password": "password or access token"
}
}
],
"metadata": {
"cpu": 1,
"instance": 1,
"resource": "eas-r-xxx"
}
}