Object Storage Service (OSS) アクセラレータ機能を使用すると、OSS ツールおよび OSS SDK と連携してデータのアップロードやダウンロードなどの操作を効率的に実行するアクセラレータを作成できます。 このトピックでは、OSS ツールおよび OSS SDK で OSS アクセラレータを構成および使用する方法について説明します。
ソリューション
OSS アクセラレータ機能を次のツールおよび OSS SDK と共に使用して、ミリ秒レベルの応答、低レイテンシ、高スループットのデータアクセスを実現できます。
ossutil と OSS アクセラレータを併用する: アクセラレータの高速エンドポイントを ossutil 構成ファイルに追加します。
ossfs と OSS アクセラレータを併用する: ossfs を使用してバケットをローカルディレクトリにマウントする場合、アクセラレータの高速エンドポイントをマウントコマンドに追加します。
AI/ML 用 OSS コネクタと OSS アクセラレータを併用する: OSS コネクタを使用してデータセットを構築する場合、
endpointパラメーターを使用してアクセラレータの高速エンドポイントを渡すことができます。OSS SDK と OSS アクセラレータを併用する: OSS SDK for Java を例として使用します。 OSSClient インスタンスを初期化するときに、
endpointパラメーターを使用してアクセラレータの高速エンドポイントが渡されます。
OSS アクセラレータを使用する場合は、OSS へのアクセスに使用するエンドポイントをアクセラレータの高速エンドポイントに設定します。 例:
ossutil を構成する場合は、
endpointパラメーターをアクセラレータの高速エンドポイントに設定します。ossfs を使用してバケットをローカルディレクトリにマウントする場合は、
-ourlパラメーターをアクセラレータの高速エンドポイントに設定します。
前提条件
アクセラレータが作成されます。 手順については、「OSS アクセラレータを作成する」をご参照ください。
ソリューション 1: ossutil と OSS アクセラレータを併用する
ossutil と OSS アクセラレータを併用する
この例では、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.zipossutil インストールパッケージが保存されているディレクトリに移動し、次の 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] セクションの名前。 セクションの名前を指定できます。 #accessKeyId, accessKeySecret RAM ユーザーの AccessKey ID と AccessKey シークレット。 #region バケットが配置されているリージョン。 # buckets=dev-bucket dev-bucket セクションのパラメーターを使用します。 #[buckets dev-bucket] セクションの名前。 セクションの名前を指定できます。 #bucketname バケットの名前。 #endpoint アクセラレータの高速エンドポイント。 [profile dev] accessKeyId=LTA*********************ICT accessKeySecret=V0qK**********************OOKp region=cn-hangzhou buckets=dev-bucket [buckets dev-bucket] bucket-name = #アクセラレータのエンドポイントを指定します。 endpoint=cn-hangzhou-j-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: ossfs と OSS アクセラレータを併用する
ossfs と OSS アクセラレータを併用する
この例では、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.debmime.types ファイルを追加します。
次のコマンドを実行して mime.types ファイルを追加し、アップロードされたオブジェクトのコンテンツタイプがオブジェクト名拡張子と一致するようにします。
sudo apt-get install mime-supportossfs を構成し、ossfs を使用してバケットをローカルファイルシステムにマウントし、バケットのアクセラレータを構成します。 ossfs を使用してマウント操作を実行する方法の詳細については、「ストレージスペースをマウントする」をご参照ください。
AccessKey ID と AccessKey シークレットを /etc/passwd-ossfs という名前のアカウント構成ファイルに保存します。
echo bucket-test:LTAI****************2CT:V0************************OKp > /etc/passwd-ossfs構成ファイルの権限を 640 に設定します。
chmod 640 /etc/passwd-ossfsマウントディレクトリを作成します。
mkdir bucket-testbucket-test という名前のバケットを /tmp/bucket-test/ ディレクトリにマウントし、アクセラレータの高速エンドポイントを指定します。
ossfs bucket-test /tmp/bucket-test/ -ourl=cn-hangzhou-j-internal.oss-data-acc.aliyuncs.com
アクセラレータを使用します。
ossfs 用にアクセラレータを構成した後、ローカルファイルシステムにマウントされているバケット内のオブジェクトに対して読み取りおよび書き込み操作を効率的に実行できます。 たとえば、ローカルモデルのトレーニングタスクで OSS に保存されているモデルファイルをより迅速にロードできます。
ソリューション 3: AI または ML 用 OSS コネクタと OSS アクセラレータを併用する
AI または ML 用 OSS コネクタと OSS アクセラレータを併用する
次の例は、Python 3.12 用の AI/ML 用 OSS コネクタをインストールする方法を示しています。 異なるバージョンの Python 用の AI/ML 用 OSS コネクタをインストールするには、Python のバージョンを特定のバージョン番号に変更します。
前提条件:
オペレーティングシステム: 64 ビット x86 Linux
glibc: 2.17 以降
Python: 3.8 ~ 3.12
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 ベースのイメージを使用して生成されたコンテナーに AI/ML 用 OSS コネクタをインストールします。pip3.12 install osstorchconnectorpip3.12 show osstorchconnectorコマンドを実行して、AI/ML 用 OSS コネクタがインストールされているかどうかを確認します。pip3.12 show osstorchconnectorosstorchconnector のバージョン情報が返された場合、AI/ML 用 OSS コネクタがインストールされています。

AI/ML 用 OSS コネクタを構成します。
アクセス認証情報用の構成ファイルを作成します。
mkdir -p /root/.alibabacloud && touch /root/.alibabacloud/credentials構成ファイルにアクセス認証情報を追加し、構成ファイルを保存します。
例の
<Access-key-id>と<Access-key-secret>を RAM ユーザーの AccessKey ID と AccessKey シークレットに置き換えます。 AccessKey ID と AccessKey シークレットの作成方法の詳細については、「AccessKey ペアを作成する」をご参照ください。 構成項目と一時的なアクセス認証情報を使用した構成の詳細については、「アクセス認証情報を構成する」をご参照ください。{ "AccessKeyId": "LTAI************************", "AccessKeySecret": "At32************************" }OSS コネクタの構成ファイルを作成します。
mkdir -p /etc/oss-connector/ && touch /etc/oss-connector/config.jsonOSS コネクタの構成を構成ファイルに追加し、構成ファイルを保存します。 構成項目の詳細については、「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 # ENDPOINT をアクセラレータの高速エンドポイントに置き換えます。 ENDPOINT = "cn-hangzhou-j-internal.oss-data-acc.aliyuncs.com" # AI/ML 用 OSS コネクタ構成ファイルのパスを指定します。 CONFIG_PATH = "/etc/oss-connector/config.json" # アクセス認証情報構成ファイルのパスを指定します。 CRED_PATH = "/root/.alibabacloud/credentials" # バケットのディレクトリのパスを指定します。 OSS_URI = "oss://ai-testset/EnglistImg/Img/BadImag/Bmp/Sample001/" # OssMapDataset の from_prefix メソッドを使用してデータセットを構築します。 map_dataset = OssMapDataset.from_prefix(oss_uri=OSS_URI, endpoint=ENDPOINT, cred_path=CRED_PATH, config_path=CONFIG_PATH) # 作成されたデータセット内のオブジェクトにランダムにアクセスします。 item = map_dataset[0] print(item.key) content = item.read() print(item.size) print(len(content)) # データセット内のオブジェクトをトラバースします。 for item in map_dataset: print(item.key) print(item.size) content = item.read() print(len(content))
ソリューション 4: OSS SDK と OSS アクセラレータを併用する
OSS SDK と OSS アクセラレータを併用する
次の例では、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.ClientBuilderConfiguration; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.common.auth.CredentialsProviderFactory; import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider; import com.aliyun.oss.common.comm.SignVersion; import java.io.ByteArrayInputStream; public class OssCliectTest { public static void main(String[] args) throws Exception { // アクセラレータの高速エンドポイントを指定します。 String endpoint = "cn-hangzhou-j-internal.oss-data-acc.aliyuncs.com"; // エンドポイントにマッピングされるリージョンの ID を指定します。 例: cn-hangzhou。 String region = "cn-hangzhou"; // アクセス認証情報を指定します。 String alibaba_cloud_access_key_id = "LT********************CT"; String alibaba_cloud_access_key_secret = "V0q***************************OKp"; // バケットの名前を指定します。 例: examplebucket。 String bucketName = "BucketName"; // オブジェクトの完全なパスを指定します。 例: exampledir/exampleobject.txt。 完全なパスにバケット名を含めないでください。 String objectName = "Test.txt"; // OSSClient インスタンスを作成します。 // OSSClient が不要になったら、shutdown メソッドを呼び出してリソースを解放します。 ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration(); // V4 署名アルゴリズムの使用を明示的に宣言します。 clientBuilderConfiguration.setSignatureVersion(SignVersion.V4); OSS ossClient = OSSClientBuilder.create() .endpoint(endpoint) .credentialsProvider(credentialsProvider) .clientConfiguration(clientBuilderConfiguration) .region(region) .build(); String content = "##################"; // content 変数の構成をバケットの Test.txt ファイルにアップロードします。 ossClient.putObject(bucketName,objectName,new ByteArrayInputStream(content.getBytes())); // OSSClient インスタンスをシャットダウンします。 ossClient.shutdown(); } }