サイト内検索

LLM(大規模言語モデル)とは?

LLM (Large Language Model) は、大量のテキストデータから言語のパターンを学習し、人間のような自然な文章を生成できるAIモデルです。ChatGPTをはじめとする対話型AIの基盤技術として、いま最も注目されている分野のひとつです。

一般的にLLMはクラウド上のGPUサーバーで動作させますが、近年ではモデルの軽量化技術の進歩により、エッジデバイス上での動作が現実的になってきました。
クラウドに依存しないオンデバイス
LLMは、以下のようなメリットがあります。

観点

クラウドLLM

オンデバイスLLM

プライバシー

データが外部サーバーに送信される

デバイス内で完結。データが外に出ない

オフライン対応

インターネット接続が必須

完全にオフラインで動作

応答遅延

ネットワーク往復で数百ms~数秒

デバイス内で即応答

運用コスト

API利用料が従量課金で発生

初期投資のみ。ランニングコスト不要

工場や医療現場など、機密性の高いデータを扱う環境や、通信インフラが不安定な環境では、オンデバイスで完結するLLMの価値が特に高くなります。

今回のデモについて

本記事では、Qualcomm IQ-9075を搭載した評価ボード「Dragonwing IQ-9075 EVK」上で、日本語対応LLMLlama-3-ELYZA-JP-8B」をNPU (Hexagon HTP) で動作させたデモをご紹介します。80億パラメーターの日本語LLMが、手のひらサイズのエッジデバイス上でリアルタイムに日本語を生成する様子をお見せします。

使用したAIモデル

今回使用したLlama-3-ELYZA-JP-8Bは、東京大学発のAIスタートアップELYZA社が開発した日本語特化のLLMです。
Meta社のLlama 3アーキテクチャをベースに、日本語データで追加学習されており、自然な日本語での対話が可能です。

Qualcomm AI Hub*でもモデルが公開されており、Qualcomm SoC向けに最適化されたエクスポートパイプラインが提供されています。


*Qualcomm AI Hubの概要と会員登録

Qualcomm AI Hub - 半導体事業 - マクニカ

Qualcomm AI Hub Llama-v3-ELYZA-JP-8Bモデルページ
Llama-v3-ELYZA-JP-8B - Qualcomm AI Hub

項目

内容

モデル名

Llama-3-ELYZA-JP-8B

パラメータ数

80億(8B

ベースモデル

Meta Llama 3

対応言語

日本語・英語

量子化

w4a164bit重み、16bitアクティベーション)

ランタイム

Genie SDKQualcomm LLM推論エンジン)

量子化とは?

LLMは通常、各パラメーターを32bitの浮動小数点数 (FP32) で保持しています。8Bモデルの場合、FP32では約32GBのメモリが必要となり、エッジデバイスでの動作は困難です。

量子化は、パラメータの精度を下げることでモデルサイズと計算量を削減する技術です。今回は重みを4bit、アクティベーション(中間計算結果)を16bitに量子化する「w4a16」を採用しました。これにより、モデルサイズは約5.7GBまで圧縮され、エッジデバイスのメモリーに収まるようになります。

テスト環境

評価ボード:Dragonwing IQ-9075 EVK (Qualcomm IQ-9075搭載)

AIアクセラレーター:Hexagon HTP (100 TOPSINT8)

SDK:Qualcomm AI Engine Direct (QAIRT SDK) + Genie SDK

ホストPC:Ubuntu 22.04 (モデルのエクスポートに使用)

IQ-9075について

IQ-9075Qualcommの産業・IoT向けハイエンドSoCです。デュアルCDSP構成のHexagonプロセッサーを搭載し、NPU性能は100 TOP (INT8)

8B規模のLLMをオンデバイスで実行できる処理能力を持っています。

エッジAIへの実装

PyTorchで学習された8BパラメーターのLLMを、エッジデバイスのNPU上で動作させるために、以下の3ステップで最適化・デプロイを行いました。

Step 1:Qualcomm AI Hubでモデルエクスポート

Qualcomm AI Hubは、AIモデルをQualcomm SoC向けに最適化するためのクラウドサービスです。PyTorchONNX形式のモデルをアップロードすると、量子化・コンパイルを自動で行い、デバイス上で実行可能なContext Binaryを生成してくれます。

# AI Hub経由でエクスポート(量子化 + HTPコンパイル)
python3 -m qai_hub_models.models.llama_v3_elyza_jp_8b.export \
    --target-runtime genie \
    --device "Dragonwing IQ-9075 EVK" \
    --output-dir ./export_output

このコマンドひとつで、以下の処理が自動的に行われます。

  1. HuggingFaceからモデルの重みをダウンロード
  2. w4a16量子化を適用
  3. QCS9075HTP向けにコンパイル
  4. Context Binary.binファイル)を生成

8Bモデルは一度にHTPにロードするにはサイズが大きいため、モデルを8つのパートに分割してコンパイルしました。これにより、各パートのサイズがHTPのバッファ制限内に収まり、安定して動作します。

Step 2:デバイスへのデプロイ

エクスポートが完了したら、生成されたContext BinaryGenie SDKのランタイムライブラリをデバイスに転送します。

# SDKのランタイムを転送
adb push genie-t2t-run /data/qairt/bin/
adb push libGenie.so libQnnHtp.so ... /data/qairt/lib/
# モデルファイルを転送(合計約5.7GB)
adb push ./export_output/*.bin /data/elyza/
adb push ./export_output/*.json /data/elyza/

転送するファイルはGenie SDKの実行バイナリー・ライブラリ一式と、エクスポートで生成されたモデルファイル(Context Binary 8パート + 設定ファイル + トークナイザー)です。

Step 3:実行

Genie SDKに含まれる genie-t2t-run コマンドでモデルを実行します。

# 環境変数を設定して実行
export LD_LIBRARY_PATH=/data/qairt/lib
cd /data/elyza
genie-t2t-run --config genie_config.json --prompt_file prompt.txt

起動すると、HTPにモデルがロードされ、プロンプトに対する応答が生成されます。

動作結果

実際にIQ-9075 EVK上でLlama-3-ELYZA-JP-8Bを動作させた結果です。

プロンプトを入力してから最初の応答が返るまで1秒未満、その後もテキストがスムーズに生成されていく様子が確認できました。短い質問への回答であれば数秒で完了し、対話的な用途にも十分な応答性です。

まとめ

本記事では、Qualcomm IQ-9075を搭載したDragonwing IQ-9075 EVK上で、80億パラメーターの日本語LLMLlama-3-ELYZA-JP-8B」をNPUで動作させるデモをご紹介しました。


IQ-9075
100 TOPSNPU性能を備えており、w4a16量子化と組み合わせることで、8Bクラスの日本語LLMをエッジデバイス上でリアルタイムに動作させることが可能です。Qualcomm AI HubGenie SDKにより、モデルの最適化からデバイス上での実行まで、一貫したワークフローで効率的に開発を進められます。

クラウドに依存しないオンデバイスLLMは、セキュリティ要件の厳しい環境、通信インフラが限られる環境、そしてAPI利用料の削減を求める環境で大きな価値を発揮します。


Qualcomm
社のDragonwingシリーズは、弊社ではエントリークラスからハイエンドまで幅広いラインナップを取り揃えており、お客様のユースケースに応じた最適な製品をご提案可能です。エッジAIでのLLMをはじめ、AI活用にご興味がございましたら、ぜひお気軽にお問い合わせください。

参考リンク

ELYZA-Japanese-Llama-3-8B — https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B

Qualcomm AI Hub — https://aihub.qualcomm.com/models/llama_v3_elyza_jp_8b

お問い合わせ

本ページの内容に関するご質問や製品詳細情報をご希望の方はこちらからお問い合わせください。

関連する情報