当前位置: 首页 > news >正文

Android 设备上运行轻量级 LLM 指南

在现代应用开发中,生成式AI正逐渐变得至关重要。在Android平台上,通过MediaPipe LLM推断API,我们可以使用大型语言模型(LLM)来实现多种文本生成任务。本文将为您详尽介绍如何在Android应用中设置和使用LLM推断API,以便在设备上运行这些强大的语言模型。

第一步:环境设置

在开始之前,请确保您的开发环境已正确配置,以支持MediaPipe LLM推断API:

  1. 安装Android Studio:确保您的开发环境中安装了最新版本的Android Studio。

  2. MediaPipe库依赖:在您的build.gradle文件中添加以下依赖:

    dependencies {implementation 'com.google.mediapipe:tasks-genai:0.10.14'
    }
    
  3. 设备准备:建议使用实际设备进行测试,以避免模拟器的性能问题和意外行为。

第二步:下载和准备模型

MediaPipe LLM推断API支持多个文本到文本的大型语言模型,如Gemma 2B、Phi-2等。下载这些模型后,将它们推送到Android设备中。以Gemma 2B为例,它可用于多种文本生成任务。

在下载适合您的任务的模型后,需确保模型格式兼容,必要时需进行格式转换。

转换 Colab Note:llm_conversion.ipynb

第三步:创建任务并配置

官方示例:

git clone https://github.com/google-ai-edge/mediapipe-samples
cd mediapipe
git sparse-checkout init --cone
git sparse-checkout set examples/llm_inference/android

使用createFromOptions()函数来设置LLM推断任务。以下是一些基本的配置选项:

val options = LlmInferenceOptions.builder().setModelPath("/data/local/.../").setMaxTokens(1000).setTopK(40).setTemperature(0.8).setRandomSeed(101).build()val llmInference = LlmInference.createFromOptions(context, options)
配置选项说明:
  • modelPath:模型存储路径。
  • maxTokens:模型处理的最大令牌数。
  • topK:每步生成时考虑的最可能的k个令牌。
  • temperature:文本生成随机性,数值越高生成结果越多样。
  • randomSeed:生成过程的随机种子。

第四步:数据准备与执行任务

输入的格式为字符串类型的提示文本,例如:

val inputPrompt = "Compose an email to remind Brett of lunch plans at noon on Saturday."
执行任务

使用generateResponse()方法生成响应:

val result = llmInference.generateResponse(inputPrompt)
logger.atInfo().log("result: $result")

第五步:结果处理与显示

LLM推断API会返回一个LlmInferenceResult,并且生成的响应文本可以直接用于您的应用中。

第六步:LoRA模型自定义(可选)

通过LLM推断API支持的低秩适应(LoRA),可以在GPU上进行更精细的调整,优化LLM的性能以适应特定任务。

总结:

MediaPipe LLM推断API提供了一种简便的方法,在Android设备上应用强大的生成式AI。通过本文,您可以搭建一个基本的LLM推断应用框架,进行生成性任务处理,从而为用户提供智能、定制化的交互体验。

通过理解并使用这些工具,您将在应用开发中占据技术领先地位。探索这些模型和配置的更多可能性,为用户带来新的惊喜!

参考文档:Android 版 LLM 推理指南


http://www.mrgr.cn/news/11061.html

相关文章:

  • 小山菌_代码随想录算法训练营总结篇
  • Linux云计算 |【第二阶段】SHELL-DAY2
  • C / C++内存管理
  • Kotlin ---作用域函数:run、let、also、apply、with
  • tekton什么情况下在Dockerfile中需要用copy
  • JMeter之插件jp@gc - Stepping Thread Group
  • 数字芯片设计验证经验分享(第三部分):将ASIC IP核移植到FPGA上——如何确保性能与时序以完成充满挑战的任务!
  • C语言典型例题52
  • Midjourney推出网页版编辑器应对Ideogram 2.0冲击
  • 目标小程序和当前小程序主体必须为绑定在同一0pen下的相关或关联主体
  • 大数据技术之Flume事务及内部原理(3)
  • 6U VPX总线架构:搭载飞腾D2000/FT2000 + FPGA-K7(赛灵思)
  • 如何自己通过java实现一个rpc框架?简单例子
  • docker基本环境搭建
  • 谷粒商城篇章11--P311-P325--秒杀服务【分布式高级篇八】
  • 从etcd学习raft
  • 移动式气象站:科技赋能,监测天气
  • sheng的学习笔记-AI-半监督SVM
  • 远程线程注入--DLL注入(C++)
  • springboot集成quartz实现配置化定时任务