Object Storage Service (OSS) アクセラレータ機能を使用すると、OSSツールやOSS SDKと連携するアクセラレータを作成して、データのアップロードやダウンロードなどの操作を効率的に実行できます。 このトピックでは、OSSツールとOSS SDKを使用してOSSアクセラレータを設定および使用する方法について説明します。
ソリューション
OSSアクセラレータ機能を次のツールおよびOSS SDKとともに使用して、ミリ秒レベルの応答、低レイテンシ、高スループットでデータアクセスを実装できます。
OSSアクセラレータとossutilの併用: アクセラレータのアクセラレーションエンドポイントをossutil設定ファイルに追加します。
OSSアクセラレータとossfsの併用: ossfsを使用してバケットをローカルディレクトリにマウントする場合、アクセラレータのアクセラレーションエンドポイントをmountコマンドに追加します。
OSSアクセラレータとOSS Connector for AI/MLの使用: OSS connectorを使用してデータセットを構築する場合、
endpoint
パラメーターを使用してアクセラレータのアクセラレーションエンドポイントを渡すことができます。OSSアクセラレータとOSS SDKの併用: OSS SDK for Javaを例として使用します。 OSSClientインスタンスを初期化すると、アクセラレータのアクセラレーションエンドポイントが
endpoint
パラメーターを使用して渡されます。
OSSアクセラレータを使用する場合は、OSSへのアクセスに使用するエンドポイントをアクセラレータのアクセラレーションエンドポイントに設定します。 例:
ossutilを設定するときは、
endpoint
パラメーターをアクセラレータのアクセラレーションエンドポイントに設定します。ossfsを使用してバケットをローカルディレクトリにマウントする場合は、
-ourl
パラメーターをアクセラレータのアクセラレーションエンドポイントに設定します。
前提条件
アクセラレータが作成されます。 詳細については、「OSSアクセラレータの作成」をご参照ください。
バケットは、OSSアクセラレータ機能がパブリックプレビューされている次のリージョンのいずれかにあります。中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (ウランカブ) 、中国 (深セン) 、シンガポールです。
解決策1: OSSアクセラレータとossutilを併用する
OSSアクセラレータとossutilの併用
この例では、ossutilは64ビットLinux x86オペレーティングシステムにインストールされています。 ossutilを他のオペレーティングシステムにインストールする方法の詳細については、「ossutilのインストール」をご参照ください。
ossutilをインストールします。
ossutilインストールパッケージをダウンロードします。
curl -o ossutil-2.0.3-beta.09261200-linux-amd64.zip https://gosspublic.alicdn.com/ossutil/v2-beta/2.0.3-beta.09261200/ossutil-2.0.3-beta.09261200-linux-amd64.zip
ossutilインストールパッケージが保存されているディレクトリに移動し、次のunzipコマンドを実行します。
unzip ossutil-2.0.3-beta.09261200-linux-amd64.zip
パッケージの解凍先のディレクトリに移動し、次のコマンドを実行します。
chmod 755 ossutil
現在のディレクトリで次のコマンドを実行して、ossutilをグローバルに呼び出すことができます。
sudo mv ossutil /usr/local/bin/ && sudo ln -s /usr/local/bin/ossutil /usr/bin/ossutil
次のコマンドを実行します。 ossutilのバージョン番号が返された場合、ossutil 2.0がインストールされます。
ossutil version
ossutilを設定し、アクセラレータのアクセラレーションエンドポイントを追加します。
ossutil構成ファイルを作成します。 设定ファイルのパスと名前を指定できます。
touch ossutilconfig
パラメーターを設定し、設定ファイルを保存します。 詳細については、「ossutilの設定」をご参照ください。
#[profile dev] The name of the section. You can specify the name of the section. #accessKeyId, accessKeySecret The AccessKey ID and AccessKey secret of the RAM user. #region The region in which the bucket is located. # buckets=dev-bucket Use the parameters in the dev-bucket section. #[buckets dev-bucket] The name of the section. You can specify the name of the section. #bucketname The name of the bucket. #endpoint The accelerated endpoint of the accelerator. [profile dev] accessKeyId=LTA*********************ICT accessKeySecret=V0qK**********************OOKp region=cn-hangzhou buckets=dev-bucket [buckets dev-bucket] bucket-name = #Specify the endpoint of the accelerator. endpoint=cn-hangzhou-internal.oss-data-acc.aliyuncs.com
アクセラレータを使用します。
次の例では、アクセラレータがossutilで構成されているため、バケットから
test
という名前の現在のディレクトリにオブジェクトがより迅速にダウンロードされます。 ossutilコマンドの詳細については、「ossutilコマンド」をご参照ください。cp
コマンドは、オブジェクトをダウンロードするために使用されます。-r
パラメーターを指定すると、bucket-name
パラメーターで指定したバケット内のオブジェクトに対して再帰操作を実行できます。-c
パラメーターは、ossutil構成ファイルのパスを指定します。-- profile
パラメーターは、dev
セクションの設定を使用します。ossutil cp -r oss://bucket-name/ ./test/ -c ./ossutilconfig --profile dev
解決策2: OSSアクセラレータとossfsを併用する
OSSアクセラレータとossfsの併用
この例では、ossfsはUbuntu 16.04 x86オペレーティングシステムにインストールされています。 異なるバージョンのossfsを別のオペレーティングシステムにインストールする方法の詳細については、「ossfsのインストール」をご参照ください。
ossfsをインストールします。
sudo wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.3_ubuntu16.04_amd64.deb sudo apt-get update sudo apt-get install gdebi-core sudo gdebi ossfs_1.91.3_ubuntu16.04_amd64.deb
mime.typesファイルを追加します。
次のコマンドを実行してmime.typesファイルを追加し、アップロードされたオブジェクトのコンテンツタイプがオブジェクト名拡張子と一致するようにします。
sudo apt-get install mime-support
ossfsを設定し、ossfsを使用してバケットをローカルファイルシステムにマウントし、バケットのアクセラレータを設定します。 ossfsを使用してマウント操作を実行する方法の詳細については、「ossfsの設定とマウント操作の実行」をご参照ください。
AccessKey IDとAccessKey Secretを /etc/passwd-ossfsという名前のアカウント設定ファイルに保存します。
echo bucket-test:LTAI****************2CT:V0************************OKp > /etc/passwd-ossfs
設定ファイルの権限を640に設定します。
chmod 640 /etc/passwd-ossfs
マウントディレクトリを作成します。
mkdir bucket-test
bucket-testという名前のバケットを /tmp/bucket-test /ディレクトリにマウントし、アクセラレータのアクセラレーションエンドポイントを指定します。
ossfs bucket-test /tmp/bucket-test/ -ourl=cn-hangzhou-internal.oss-data-acc.aliyuncs.com
アクセラレータを使用します。
ossfs用にアクセラレータを設定すると、ローカルファイルシステムにマウントされているバケット内のオブジェクトに対して読み取りおよび書き込み操作を効率的に実行できます。 たとえば、OSSに保存されているモデルファイルをローカルモデルトレーニングタスクでより迅速にロードできます。
ソリューション3: OSSアクセラレータをOSS Connector for AIまたはMLと共に使用する
OSSアクセラレータとOSS Connector for AIまたはMLの併用
次の例は、OSS Connector for AI/ML for Python 3.12をインストールする方法を示しています。 異なるバージョンのOSS Connector for AI/ML for Pythonをインストールするには、Pythonバージョンを特定のバージョン番号に変更します。
前提条件:
オペレーティングシステム: 64ビットx86 Linux
glibc: 2.17以降
Python: 3.12する3.8
PyTorch: 2.0以降
OSSチェックポイント機能を使用するには、Linuxカーネルがuserfaultfdをサポートしている必要があります。
説明この例では、Ubuntuが使用されています。
sudo grep CONFIG_USERFAULTFD /boot/config-$(uname -r)
コマンドを実行して、Linuxカーネルがuserfaultfdをサポートしているかどうかを確認できます。CONFIG_USERFAULTFD=y
が返された場合、Linuxカーネルはuserfaultfdをサポートします。CONFIG_USERFAULTFD=n
が返された場合、Linuxカーネルはuserfaultfdをサポートしません。 この方法では、OSSチェックポイント機能は使用できません。
AI/ML用のOSSコネクタをインストールします。
pip3.12 install osstorchconnector
コマンドを実行して、LinuxまたはLinuxベースのイメージを使用して生成されたコンテナーにOSS Connector for AI/MLをインストールします。pip3.12 install osstorchconnector
pip3.12 show osstorchconnector
コマンドを実行し、OSS Connector for AI/MLがインストールされているかどうかを確認します。pip3.12 show osstorchconnector
osstorchconnectorのバージョン情報が返されると、OSS Connector for AI/MLがインストールされます。
AI/ML用のOSSコネクタを設定します。
アクセス資格情報の設定ファイルを作成します。
mkdir -p /root/.alibabacloud && touch /root/.alibabacloud/credentials
アクセス資格情報を構成ファイルに追加し、構成ファイルを保存します。
例の
<Access-key-id>
および<Access-key-secret>
を、RAMユーザーのAccessKey IDおよびAccessKey secretに置き換えます。 AccessKey IDとAccessKeyシークレットの作成方法の詳細については、「AccessKeyペアの作成」をご参照ください。 設定項目と一時的なアクセス資格情報を使用した設定の詳細については、「アクセス資格情報の設定」をご参照ください。{ "AccessKeyId": "LTAI************************", "AccessKeySecret": "At32************************" }
OSSコネクタの設定ファイルを作成します。
mkdir -p /etc/oss-connector/ && touch /etc/oss-connector/config.json
OSSコネクタの設定を設定ファイルに追加し、設定ファイルを保存します。 設定項目の詳細については、「OSSコネクタの設定」をご参照ください。
ほとんどの場合、次のデフォルト設定を使用できます。
{ "logLevel": 1, "logPath": "/var/log/oss-connector/connector.log", "auditPath": "/var/log/oss-connector/audit.log", "datasetConfig": { "prefetchConcurrency": 24, "prefetchWorker": 2 }, "checkpointConfig": { "prefetchConcurrency": 24, "prefetchWorker": 4, "uploadConcurrency": 64 } }
アクセラレータを使用します。
次のサンプルコードでは、OssMapDatasetのfrom_prefixメソッドを使用して、アクセラレータのキャッシュ容量でデータセットを構築する方法の例を示します。
Endpoint
では、アクセラレータの高速化されたエンドポイントを指定します。from osstorchconnector import OssMapDataset # Replace ENDPOINT with the accelerated endpoint of the accelerator. ENDPOINT = "cn-hangzhou-internal.oss-data-acc.aliyuncs.com" # Specify the path of the OSS Connector for AI/ML configuration file. CONFIG_PATH = "/etc/oss-connector/config.json" # Specify the path of the access credential configuration file. CRED_PATH = "/root/.alibabacloud/credentials" # Specify the path of the directory of the bucket. OSS_URI = "oss://ai-testset/EnglistImg/Img/BadImag/Bmp/Sample001/" # Use the from_prefix method of OssMapDataset to build a dataset. map_dataset = OssMapDataset.from_prefix(oss_uri=OSS_URI, endpoint=ENDPOINT, cred_path=CRED_PATH, config_path=CONFIG_PATH) # Access objects in the created dataset at random. item = map_dataset[0] print(item.key) content = item.read() print(item.size) print(len(content)) # Traverse the objects in the dataset. for item in map_dataset: print(item.key) print(item.size) content = item.read() print(len(content))
ソリューション4: OSSアクセラレータとOSS SDKを併用する
OSSアクセラレータとOSS SDKの併用
次の例では、OSSアクセラレータはOSS SDK for Javaで動作します。 他のプログラミング言語でOSS SDKと一緒にOSSアクセラレータを使用する場合は、OSSClientインスタンスの初期化時にアクセラレータのアクセラレーションエンドポイントを指定します。
前提条件:
Java 1.7.0以降がインストールされています。
java -versionコマンドを実行して、Javaのバージョンを確認できます。
OSS SDK for Javaの依存関係がMavenプロジェクトに追加されます。 JARパッケージをOSS SDK For Javaにインポートする方法の詳細については、「インストール」をご参照ください。
MavenでOSS SDK for Javaを使用するには、必要な依存関係をpom.xmlファイルに追加するだけです。 この例では、OSS SDK for Java 3.17.4の依存関係が追加されています。
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.17.4</version> </dependency>
Java 9以降を使用する場合は、JAXB関連の依存関係を追加します。 次のサンプルコードは、JAXB関連の依存関係を追加する方法の例を示しています。
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> <!-- no more than 2.3.3--> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.3</version> </dependency>
アクセラレータを使用します。
次のサンプルコードは、OSS SDK for Javaをアクセラレータと一緒に使用してオブジェクトをアップロードする方法の例を示しています。
endpoint
パラメーターの値をアクセラレータのアクセラレーションエンドポイントに置き換えます。import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import java.io.ByteArrayInputStream; public class OssCliectTest { public static void main(String[] args) throws Exception { // Specify the accelerated endpoint of the accelerator. String endpoint = "cn-hangzhou-internal.oss-data-acc.aliyuncs.com"; // Specify access credentials. String alibaba_cloud_access_key_id = "LT********************CT"; String alibaba_cloud_access_key_secret = "V0q***************************OKp"; // Specify the name of the bucket. Example: examplebucket. String bucketName = "BucketName"; // Specify the full path of the object. Example: exampledir/exampleobject.txt. Do not include the bucket name in the full path. String objectName = "Test.txt"; // Create an OSSClient instance. OSS ossClient = new OSSClientBuilder().build(endpoint, alibaba_cloud_access_key_id,alibaba_cloud_access_key_secret); String content = "##################"; // Upload the configurations of the content variable to the Test.txt file in the bucket. ossClient.putObject(bucketName,objectName,new ByteArrayInputStream(content.getBytes())); // Shut down the OSSClient instance. ossClient.shutdown(); } }