❓ 一般性问题
你好,
我正在尝试使用本地定制的(非在HuggingFace上)llava模型构建Android应用。我参考了以下指南:
https://llm.mlc.ai/docs/compilation/convert_weights.html#clone-from-hf-and-convert-weight
https://llm.mlc.ai/docs/compilation/compile_models.html#compile-command-specification
https://llm.mlc.ai/docs/deploy/android.html#step-3-build-android-app
我成功地构建了Android apk并按照建议的命令推送了它。主页面没有问题,但是当我点击聊天按钮开始时,出现了错误。
2024-06-12 14:56:45.039 14318-18830 AndroidRuntime ai.mlc.mlcchat E FATAL EXCEPTION: Thread-5
Process: ai.mlc.mlcchat, PID: 14318
org.apache.tvm.Base$TVMError: InternalError: Check failed: (unicode_codepoint >= 0 && unicode_codepoint < static_cast<int>(unicode_to_byte_map.size())) is false:
Stack trace:
File "/hostpc/dir/mlc-llm/cpp/tokenizers/tokenizers.cc", line 360
at org.apache.tvm.Base.checkCall(Base.java:173)
at org.apache.tvm.Function.invoke(Function.java:130)
at ai.mlc.mlcllm.JSONFFIEngine.runBackgroundLoop(JSONFFIEngine.java:64)
at ai.mlc.mlcllm.MLCEngine$backgroundWorker$1.invoke(MLCEngine.kt:42)
at ai.mlc.mlcllm.MLCEngine$backgroundWorker$1.invoke(MLCEngine.kt:40)
at ai.mlc.mlcllm.BackgroundWorker$start$1.invoke(MLCEngine.kt:19)
at ai.mlc.mlcllm.BackgroundWorker$start$1.invoke(MLCEngine.kt:18)
at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)
有解决这个错误的解决方案吗?
谢谢。
8条答案
按热度按时间a8jjtwal1#
你好@emphasis10
我想知道你定制的LLava与标准版本之间的区别。我已经成功地在三星S23上运行了LLava。顺便说一下,Android目前只支持文本输入,尚未支持图像输入,因此LLava目前只能用于基于文本的对话。
以下是详细信息:
LLava源代码:https://huggingface.co/llava-hf/llava-1.5-7b-hf
量化:q4f16_1
MLC配置:
{
"model": "HF://mengshyu/llava-1.5-7b-hf-q4f16_1-MLC",
"estimated_vram_bytes": 4679979417,
"model_id": "llava-1.5-7b-hf-q4f16_1-MLC",
"overrides": {
"context_window_size": 768,
"prefill_chunk_size": 256
}
}
m0rkklqb2#
你好,你能在Android演示应用中添加Llava模型吗?
osh3o9ms3#
我曾经也遇到过同样的问题。你解决了这个问题吗?
我通过编辑mlc-llm的
tokenzier.cc
代码大约360行,使得索引在大于或等于数组大小时强制变为{array_size} - 1
,并从源代码构建和安装mlc-llm
。经过这个修改,应用程序可以正常工作,并生成提示文本。但是,我认为这可能会产生一些副作用。
jk9hmnmh4#
你好@emphasis10
我想知道你定制的LLava与标准版本之间的区别。我已经成功地在三星S23上运行了LLava。顺便说一下,Android目前只支持文本输入,尚未支持图像输入,因此LLava目前只能用于基于文本的对话。
以下是详细信息:
LLava源代码:https://huggingface.co/llava-hf/llava-1.5-7b-hf
量化:q4f16_1
MLC配置:{ "model": "HF://mengshyu/llava-1.5-7b-hf-q4f16_1-MLC", "estimated_vram_bytes": 4679979417, "model_id": "llava-1.5-7b-hf-q4f16_1-MLC", "overrides": { "context_window_size": 768, "prefill_chunk_size": 256 } }
@mengshyu如果我想要在用LLava模型运行的
MLCChat
应用程序中输入图像,我应该怎么做?我应该编辑哪部分代码?你能给我一些提示吗?erhoui1w5#
你好,你能在Android演示应用中添加Llava模型吗?
我们目前没有计划将Llava添加到默认模型列表中,主要是因为它目前不支持图像输入。
wd2eg0qa6#
你好@emphasis10
我想了解一下你定制的LLava与标准版本之间的区别。我已经在三星S23上成功运行了LLava。顺便说一下,Android目前只支持文本输入,尚未支持图像输入,因此LLava目前只能用于基于文本的对话。
以下是详细信息:
LLava源代码:https://huggingface.co/llava-hf/llava-1.5-7b-hf
量化:q4f16_1
MLC配置:{ "model": "HF://mengshyu/llava-1.5-7b-hf-q4f16_1-MLC", "estimated_vram_bytes": 4679979417, "model_id": "llava-1.5-7b-hf-q4f16_1-MLC", "overrides": { "context_window_size": 768, "prefill_chunk_size": 256 } }
@mengshyu如果我想要在运行LLava模型的
MLCChat
应用程序中输入图像,我应该怎么做?我需要编辑哪部分代码?你能给我一些提示吗?@dkjung我认为有两个部分需要修改以支持Android上的图像输入
https://github.com/mlc-ai/mlc-llm/blob/main/python/mlc_llm/serve/data.py#L86
我们目前正在努力支持Android上的phi3-vision,但LLava和phi3-vision在图像预处理方法和配置上有所不同。因此,还需要进行一些进一步的调整。
o75abkj47#
我没有使用mlc_llm包进行处理,而是直接将其转换为模型文件并放置在app.mlc文件夹中。虽然这需要一些手动操作,但可能会更简单。我建议你先使用简单且笨拙的方法。然后,通过命令将模型文件放入APK中
bsxbgnwa8#
你好@emphasis10
我想了解一下你定制的LLava与标准版本之间的区别。我已经成功地在三星S23上运行了LLava。顺便说一下,Android目前只支持文本输入,尚未支持图像输入,因此LLava目前只能用于基于文本的对话。
以下是详细信息:
LLava源代码:https://huggingface.co/llava-hf/llava-1.5-7b-hf
量化:q4f16_1 MLC配置:{ "model": "HF://mengshyu/llava-1.5-7b-hf-q4f16_1-MLC", "estimated_vram_bytes": 4679979417, "model_id": "llava-1.5-7b-hf-q4f16_1-MLC", "overrides": { "context_window_size": 768, "prefill_chunk_size": 256 } }
@mengshyu如果我想要在
MLCChat
应用程序中使用LLava模型作为图像输入,我应该怎么做?我需要修改哪部分的代码?你能给我一些提示吗?我也想在Android上部署LLava,现在遇到了同样的问题。你解决了图像输入的问题吗?