• 文件 >
  • ExecuTorch Llama Android 範例應用程式
快捷方式

ExecuTorch Llama Android 範例應用程式

[更新 - 10/24] 我們已新增在 Android 範例應用程式中,使用 XNNPACK 後端,執行量化 Llama 3.2 1B/3B 模型的功能。目前我們支援使用 SpinQuant 和 QAT+LoRA 量化方法進行推論。

我們很高興分享,經過全新改版的 Android 範例應用程式已上線,包含許多新更新,透過聊天的使用案例,提供更直觀、更流暢的使用者體驗!此應用程式的主要目標是展示 ExecuTorch 如何輕鬆整合到 Android 範例應用程式中,以及如何運用 ExecuTorch 和 Llama 模型提供的許多功能。

此應用程式可作為寶貴的資源,激發您的創造力,並提供基礎程式碼,讓您可以針對您的特定使用案例進行客製化和調整。

請立即深入探索我們的範例應用程式!我們期待您的任何回饋,並很高興看到您創新的想法。

重要概念

從此範例應用程式中,您將學到許多重要概念,例如

  • 如何準備 Llama 模型、建置 ExecuTorch 函式庫,以及跨 Delegates 的模型推論

  • 透過 JNI 層公開 ExecuTorch 函式庫

  • 熟悉目前 ExecuTorch 應用程式面向的功能

目標是讓您了解 ExecuTorch 提供的支援類型,並能安心地將其用於您的使用案例。

支援的模型

整體而言,此應用程式支援的模型包括(因 Delegate 而異)

  • Llama 3.2 量化 1B/3B

  • BF16 中的 Llama 3.2 1B/3B

  • Llama Guard 3 1B

  • Llama 3.1 8B

  • Llama 3 8B

  • Llama 2 7B

  • LLaVA-1.5 視覺模型 (僅限 XNNPACK)

建置 APK

首先,請務必注意,目前 ExecuTorch 提供跨 3 個 Delegates 的支援。一旦您確定了您選擇的 Delegate,請選擇 README 連結,以取得完整的端到端說明,包括環境設定、匯出模型、建置 ExecuTorch 函式庫和應用程式,以及在裝置上執行。

Delegate

資源

XNNPACK (基於 CPU 的函式庫)

連結

QNN (Qualcomm AI 加速器)

連結

MediaTek (MediaTek AI 加速器)

連結

如何使用應用程式

本節將提供使用應用程式的主要步驟,以及 ExecuTorch API 的程式碼片段。

對於載入應用程式、開發和在裝置上執行,我們建議使用 Android Studio

  1. 開啟 Android Studio 並選擇「開啟現有的 Android Studio 專案」,以開啟 examples/demo-apps/android/LlamaDemo。

  2. 執行應用程式 (^R)。這會建置並在手機上啟動應用程式。

開啟應用程式

以下是應用程式的 UI 功能。

選擇設定小工具以開始挑選模型、其參數和任何提示。

選擇模型和參數

一旦您選擇了模型、Tokenizer 和模型類型,您就可以點擊「載入模型」,讓應用程式載入模型並返回主聊天活動。

可選參數

  • 溫度:預設為 0,您也可以調整模型的溫度。模型會在任何調整後重新載入。

  • 系統提示:無需任何格式,您可以輸入系統提示。例如,「你是一位旅行助手」或「用幾句話給我一個回覆」。

  • 使用者提示:更適合進階使用者,如果您想手動輸入提示,您可以透過修改 {{user prompt}} 來達成。您也可以修改特殊 Token。變更後,返回主聊天活動以發送。

ExecuTorch 應用程式 API

// Upon returning to the Main Chat Activity
mModule = new LlamaModule(
            ModelUtils.getModelCategory(mCurrentSettingsFields.getModelType()),
            modelPath,
            tokenizerPath,
            temperature);
int loadResult = mModule.load();
  • modelCategory:指示它是純文字模型還是視覺模型

  • modePath:.pte 檔案的路徑

  • tokenizerPath:Tokenizer .bin 檔案的路徑

  • temperature:模型參數,用於調整模型輸出的隨機性

使用者提示

成功載入模型後,輸入任何提示,然後點擊發送 (即產生) 按鈕以將其發送到模型。

您也可以提供更多後續問題。

ExecuTorch 應用程式 API

mModule.generate(prompt,sequence_length, MainActivity.this);
  • prompt:使用者格式化的提示

  • sequence_length:為了回應提示而產生的 Token 數量

  • MainActivity.this:表示回呼函式 (OnResult(), OnStats()) 存在於此類別中。

[LLaVA-1.5:僅適用於 XNNPACK delegate]

對於 LLaVA-1.5 實作,請在「設定」選單中選擇匯出的 LLaVA .pte 和 Tokenizer 檔案,並載入模型。完成後,您可以從您的圖庫發送圖片,或拍攝即時圖片以及文字提示到模型。

產生的輸出

為了展示後續問題的完成情況,以下是模型產生的完整詳細回應。

ExecuTorch 應用程式 API

請確保您在 mModule.generate() 中提供的回呼類別中具有以下函式。在此範例中,它是 MainActivity.this

  @Override
  public void onResult(String result) {
    //...result contains token from response
    //.. onResult will continue to be invoked until response is complete
  }

  @Override
  public void onStats(float tps) {
    //...tps (tokens per second) stats is provided by framework
  }

回報問題

如果您在遵循本教學課程時遇到任何錯誤或問題,請在此處的 Github 上提交錯誤/問題報告。

文件

存取 PyTorch 的完整開發者文件

檢視文件

教學課程

取得適合初學者和進階開發者的深度教學課程

檢視教學課程

資源

尋找開發資源並取得您的問題解答

檢視資源