您的位置:首页 > 科技 > 能源 > 数字广东网络建设有限公司是国企_怎样自己建一个网站_福州seo代理商_最新天气预报最新消息

数字广东网络建设有限公司是国企_怎样自己建一个网站_福州seo代理商_最新天气预报最新消息

2024/12/24 22:13:55 来源:https://blog.csdn.net/u011240877/article/details/144645930  浏览:    关键词:数字广东网络建设有限公司是国企_怎样自己建一个网站_福州seo代理商_最新天气预报最新消息
数字广东网络建设有限公司是国企_怎样自己建一个网站_福州seo代理商_最新天气预报最新消息

概述

大家好,最近被 Gemini 2.0 “狙击 OpenAI“ 的消息刷屏,让我对 Google 的大模型技术有了新的认识,同时也好奇,作为 Google 的亲儿子,Android 上有没有什么比较好用的端上大模型库呢?经过一番学习,最后发现了适用范围最广的 MediaPipe LLM!

很多人可能听说过 MediaPipe,但不清楚这个 MediaPipe LLM 和 MediaPipe 什么关系。

简单的讲,MediaPipe 是 Google 开发的一个开源框架,用于构建跨平台的计算机视觉和机器学习解决方案。它支持完整的机器学习管道,并允许在设备端运行大型模型,从而减少对网络的依赖并提高响应速度。

而 MediaPipe LLM 是 MediaPipe 中专门用于集成和使用大语言模型 (LLM) 的一个模块或组件。它旨在将 LLM 的强大能力引入到多媒体处理流水线中。它特别优化了在设备端运行大型模型的能力,使得在 Android 设备上运行大型语言模型(LLMs)成为可能(与传统的小型设备模型相比,大语言模型通常拥有超过百倍的参数量,对内存和计算能力有更高的要求)。

重点来了!MediaPipe LLM 可以 使用 Google 的 Gemini 模型!包括最新的 Gemini 2.0!

在 Android 上使用 MediaPipe LLM

在 Android 上使用 MediaPipe LLM,主要包括这么几步:

环境和依赖设置

在你的 Android 项目的 build.gradle 文件中添加以下依赖:

dependencies {// 使用最新版本的 MediaPipe LLM Inference API 库implementation 'com.google.mediapipe:tasks-genai:0.10.14'
}

对于 Android 12 (API 31) 或更高版本的设备,添加原生 OpenCL 库依赖,并在 AndroidManifest.xml 中添加以下标签:

<uses-native-library android:name="libOpenCL.so" android:required="false"/>
<uses-native-library android:name="libOpenCL-car.so" android:required="false"/>
<uses-native-library android:name="libOpenCL-pixel.so" android:required="false"/>

模型准备

模型下载

MediaPipe LLM Inference API 支持多种预训练的文本到文本语言模型。以下是如何下载和使用这些模型的步骤:

  1. 选择模型:确定你需要的模型类型,比如 Gemma、Phi 2、Falcon 或 Stable LM。

  2. 下载模型:从官方或第三方资源下载模型。对于 Gemma 模型,你可以在 Kaggle Models 上找到最新的版本。

    • Gemma-2 2B on Kaggle
  3. 模型转换:如果你使用的是非 Gemma 模型,可能需要将模型转换为 MediaPipe 兼容的格式。使用 MediaPipe 提供的 Python 包进行转换。

    python
    from mediapipe.tasks.python.genai import converterconfig = converter.ConversionConfig(# 基础模型参数...# LoRA 相关参数lora_ckpt=LORA_CKPT,lora_rank=LORA_RANK,lora_output_tflite_file=LORA_OUTPUT_TFLITE_FILE,
    )converter.convert_checkpoint(config)
    
  4. 推送模型到设备:使用 adb 将模型文件推送到 Android 设备上。

    bash
    adb shell rm -r /data/local/tmp/llm/
    adb shell mkdir -p /data/local/tmp/llm/
    adb push /path/to/model_version.bin /data/local/tmp/llm/
    
模型特点
  • Gemma 系列

    • Gemma-2 2B:Gemma 系列的最新版本,适用于多种文本生成任务,如问答、摘要和推理。
    • Gemma 2B:适用于各种文本生成任务,包括问答、摘要和推理。
    • Gemma 7B:具有更大的参数量,能够处理更复杂的语言任务,但需要更多的计算资源。
  • Phi-2

    • Phi-2:一个具有 2.7 亿参数的 Transformer 模型,最适合问答、聊天和代码格式任务。
  • Falcon-RW-1B

    • Falcon-RW-1B:一个 10 亿参数的因果解码器模型,训练于 3500 亿个 RefinedWeb 令牌。
  • StableLM-3B

    • StableLM-3B:一个 30 亿参数的解码器模型,预训练于 1 万亿个多样化的英文和代码数据集。

通过这些步骤和模型特点的介绍,你应该能够更好地理解如何为你的 Android 应用选择合适的模型,并有效地集成 MediaPipe LLM Inference API。这些模型的选择将取决于你的具体需求,包括应用场景、性能要求和资源限制。

创建任务

使用 createFromOptions() 函数初始化 MediaPipe LLM Inference 任务:

// 设置 LLM Inference 任务的配置选项
val options = LlmInferenceOptions.builder().setModelPath('/data/local/tmp/llm/model_version.bin') // 模型路径.setMaxTokens(1000) // 最大令牌数.setTopK(40) // 令牌生成时考虑的候选数量.setTemperature(0.8) // 生成时引入的随机性程度.setRandomSeed(101) // 文本生成时使用的随机种子.build()// 创建 LLM Inference 任务实例
val llmInference = LlmInference.createFromOptions(context, options)

运行任务

准备输入数据(prompt),并使用 generateResponse() 方法生成响应:

val inputPrompt = "Compose an email to remind Brett of lunch plans at noon on Saturday."
val result = llmInference.generateResponse(inputPrompt)
logger.atInfo().log("result: $result")

如果想要异步流式生成,可以使用 generateResponseAsync()

val options = LlmInference.LlmInferenceOptions.builder()....setResultListener { partialResult, done ->logger.atInfo().log("partial result: $partialResult")  //这里返回结果}.build()llmInference.generateResponseAsync(inputPrompt)

处理和显示结果

LLM Inference API 返回 LlmInferenceResult,其中包含生成的响应文本。你可以如下处理和显示结果:

// 假设 result 是 LlmInferenceResult 对象
val responseText = result.responseText
// 将响应文本显示在 UI 上
textView.text = responseText

总结

OK,这就是 MediaPipe LLM 的基本介绍,使用起来还是非常方便的!

希望通过这篇文章可以让你对如何在端上使用 Google 大模型有更多的认识。

如果想直接参考代码,可以下载官方提供的案例:

git clone https://github.com/google-ai-edge/mediapipe-samples

如果想了解更多 Gemini on Android 的信息,推荐叶老师的这个视频,讲解的很清晰:Gemini on Android:打开移动设备的AI新世界

时代的车轮滚滚向前,我们必须向前(AI)看!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com