すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSSアクセラレータの使用

最終更新日:Dec 03, 2024

Object Storage Service (OSS) アクセラレータ機能を使用すると、OSSツールやOSS SDKと連携するアクセラレータを作成して、データのアップロードやダウンロードなどの操作を効率的に実行できます。 このトピックでは、OSSツールとOSS SDKを使用してOSSアクセラレータを設定および使用する方法について説明します。

ソリューション

OSSアクセラレータ機能を次のツールおよびOSS SDKとともに使用して、ミリ秒レベルの応答、低レイテンシ、高スループットでデータアクセスを実装できます。

  1. OSSアクセラレータとossutilの併用: アクセラレータのアクセラレーションエンドポイントをossutil設定ファイルに追加します。

  2. OSSアクセラレータとossfsの併用: ossfsを使用してバケットをローカルディレクトリにマウントする場合、アクセラレータのアクセラレーションエンドポイントをmountコマンドに追加します。

  3. OSSアクセラレータとOSS Connector for AI/MLの使用: OSS connectorを使用してデータセットを構築する場合、endpointパラメーターを使用してアクセラレータのアクセラレーションエンドポイントを渡すことができます。

  4. 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のインストール」をご参照ください。

  1. ossutilをインストールします。

    1. 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
    2. ossutilインストールパッケージが保存されているディレクトリに移動し、次のunzipコマンドを実行します。

      unzip ossutil-2.0.3-beta.09261200-linux-amd64.zip
    3. パッケージの解凍先のディレクトリに移動し、次のコマンドを実行します。

      chmod 755 ossutil
    4. 現在のディレクトリで次のコマンドを実行して、ossutilをグローバルに呼び出すことができます。

      sudo mv ossutil /usr/local/bin/ && sudo ln -s /usr/local/bin/ossutil /usr/bin/ossutil
    5. 次のコマンドを実行します。 ossutilのバージョン番号が返された場合、ossutil 2.0がインストールされます。

      ossutil version
  2. ossutilを設定し、アクセラレータのアクセラレーションエンドポイントを追加します。

    1. ossutil構成ファイルを作成します。 设定ファイルのパスと名前を指定できます。

      touch ossutilconfig
    2. パラメーターを設定し、設定ファイルを保存します。 詳細については、「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
  3. アクセラレータを使用します。

    次の例では、アクセラレータが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のインストール」をご参照ください。

  1. 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
  2. mime.typesファイルを追加します。

    次のコマンドを実行してmime.typesファイルを追加し、アップロードされたオブジェクトのコンテンツタイプがオブジェクト名拡張子と一致するようにします。

    sudo apt-get install mime-support
  3. ossfsを設定し、ossfsを使用してバケットをローカルファイルシステムにマウントし、バケットのアクセラレータを設定します。 ossfsを使用してマウント操作を実行する方法の詳細については、「ossfsの設定とマウント操作の実行」をご参照ください。

    1. AccessKey IDとAccessKey Secretを /etc/passwd-ossfsという名前のアカウント設定ファイルに保存します。

      echo bucket-test:LTAI****************2CT:V0************************OKp > /etc/passwd-ossfs
    2. 設定ファイルの権限を640に設定します。

      chmod 640 /etc/passwd-ossfs 
    3. マウントディレクトリを作成します。

      mkdir bucket-test
    4. bucket-testという名前のバケットを /tmp/bucket-test /ディレクトリにマウントし、アクセラレータのアクセラレーションエンドポイントを指定します。

      ossfs bucket-test /tmp/bucket-test/ -ourl=cn-hangzhou-internal.oss-data-acc.aliyuncs.com
  4. アクセラレータを使用します。

    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バージョンを特定のバージョン番号に変更します。

  1. 前提条件:

  • オペレーティングシステム: 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チェックポイント機能は使用できません。

  1. AI/ML用のOSSコネクタをインストールします。

    1. pip3.12 install osstorchconnectorコマンドを実行して、LinuxまたはLinuxベースのイメージを使用して生成されたコンテナーにOSS Connector for AI/MLをインストールします。

      pip3.12 install osstorchconnector
    2. pip3.12 show osstorchconnectorコマンドを実行し、OSS Connector for AI/MLがインストールされているかどうかを確認します。

      pip3.12 show osstorchconnector

      osstorchconnectorのバージョン情報が返されると、OSS Connector for AI/MLがインストールされます。

      image

  2. AI/ML用のOSSコネクタを設定します。

    1. アクセス資格情報の設定ファイルを作成します。

      mkdir -p /root/.alibabacloud && touch /root/.alibabacloud/credentials
    2. アクセス資格情報を構成ファイルに追加し、構成ファイルを保存します。

      例の <Access-key-id> および <Access-key-secret> を、RAMユーザーのAccessKey IDおよびAccessKey secretに置き換えます。 AccessKey IDとAccessKeyシークレットの作成方法の詳細については、「AccessKeyペアの作成」をご参照ください。 設定項目と一時的なアクセス資格情報を使用した設定の詳細については、「アクセス資格情報の設定」をご参照ください。

      {
        "AccessKeyId": "LTAI************************",
        "AccessKeySecret": "At32************************"
      }
    3. OSSコネクタの設定ファイルを作成します。

      mkdir -p /etc/oss-connector/ && touch /etc/oss-connector/config.json
    4. 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
          }
      }
      
  3. アクセラレータを使用します。

    次のサンプルコードでは、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インスタンスの初期化時にアクセラレータのアクセラレーションエンドポイントを指定します。

  1. 前提条件:

    • Java 1.7.0以降がインストールされています。

    • java -versionコマンドを実行して、Javaのバージョンを確認できます。

  2. 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>
  3. アクセラレータを使用します。

    次のサンプルコードは、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();
        }
    }