デバイス

デバイスの選択

使用可能なデバイスの完全な一覧は、get_devices() を使用して取得できます。

import qai_hub as hub

client = hub.Client()
devices = client.get_devices()
print(devices)

または コマンドラインインターフェース を使用して:

qai-hub list-devices

デバイスタイプ

デバイスには 3 つのタイプがあります:

  • 一般デバイス (General devices): ほとんどのデバイスは、一覧に記載されているとおりの実デバイスです。デバイス名に (Family)(Proxy) が含まれていない場合、そのデバイスを対象とするすべてのワークロードは、正確にそのホストされているデバイス上で実行されます。

  • ファミリーデバイス (Family devices): デバイス名が (Family) で終わる場合、それはデバイスファミリーを示します。これにより、特定のデバイスモデルではなくデバイスファミリーを対象として指定でき、キュー待ち時間の改善が可能になります。たとえば、Samsung Galaxy S25 (Family) を指定すると、Workbench は Samsung Galaxy S25、Samsung Galaxy S25 Ultra、Samsung Galaxy S25+ など、Samsung Galaxy S25 のいずれのバリエーション上でもワークロードを実行できます。特定の単一デバイスが利用可能である必要はありません。可能な限り、ファミリーデバイスを対象にすることを強く推奨します。

  • プロキシデバイス (Proxy devices): デバイス名が (Proxy) で終わる場合、ホストされていないデバイスの代替として使用されるデバイスであることを示します。これらのプロキシデバイスにより、ユーザーは AI Hub Models でデバイス/モデルの互換性によるフィルタリングを行ったり、AI Hub Workbench で該当デバイス上で実行されるアセットを作成したりすることができます。私たちは可能な限り実デバイスに近いプロキシデバイスを選定していますが、実際のデバイスをホストしていないため、実機でのメトリクス、性能、精度は AI Hub Models ページに掲載されている結果と異なる場合があります。プロキシのメトリクスは常に NPU 上で実行されます。実際のデバイスで実行する際も、同様の結果を得るために NPU を使用していることを確認してください。CPU で実行した場合、まったく異なるメトリクスになる可能性があります。

デバイスのフィルタリング

これにより、Device オブジェクトのリストが返されます。デバイスは名前、OS、または属性に基づいてフィルタリングできます。特定のデバイスを取得するには、名前とOSでフィルタリングします。

import qai_hub as hub

client = hub.Client()
devices = client.get_devices(name="Samsung Galaxy S24 (Family)")
print(devices)

devices_os13 = client.get_devices(os="13", attributes="os:android")
print(devices_os13)

OSバージョンは単一の値または半開区間として表現できます。例えば、os=[10, 12) はOSのメジャーバージョン10と11を選択しますが、12は含まれません。

import qai_hub as hub

client = hub.Client()
devices_os10_to_os11 = client.get_devices(os="[10, 12)", attributes="os:android")
print(devices_os10_to_os11)

devices_os12_and_more = client.get_devices(os="[12,)", attributes="os:android")
print(devices_os12_and_more)

デバイスはさらに属性でフィルタリングできます。次の例では、Snapdragon® 8 Gen 2 SOCを搭載し、TensorFlow Lite をサポートするすべてのデバイスを選択します。サポートされている属性は Device に記載されています。

import qai_hub as hub

client = hub.Client()
devices = client.get_devices(attributes=["chipset:qualcomm-snapdragon-8gen2", "framework:tflite"])
print(devices)

名前、OS、および属性は一緒に使用することもできます。返されるデバイスのリストには、提供されたすべてのフィルターに一致するデバイスが含まれます。このリストは空になることもあります。次のコードは、Snapdragon® 8 Gen 2 SOCとAndroid OSバージョン12以上を持つすべてのデバイスを選択します。

import qai_hub as hub

client = hub.Client()
devices = client.get_devices(attributes=["chipset:qualcomm-snapdragon-8gen2", "os:android"], os="[12,)")
print(devices)

Device クラスと同様、名前やOSまたは属性は単一デバイスの選択に使用できます。

import qai_hub as hub

device_sn8gen2 = hub.Device(attributes="chipset:qualcomm-snapdragon-8gen2")
device_os12 = hub.Device(os="12", attributes="os:android")
device_galaxy_s23 = hub.Device(name="Samsung Galaxy S23 Ultra")

提供されたフィルターに一致するデバイスが複数ある場合、最新の利用可能なOSバージョンを持つ任意のデバイスが選択されます。