summaryrefslogtreecommitdiff
path: root/examples/llava/android
diff options
context:
space:
mode:
authorXiaotaoChen <chenxiaotao1234@gmail.com>2024-01-22 21:09:35 +0800
committerGitHub <noreply@github.com>2024-01-22 15:09:35 +0200
commit3ce7e8f8e7ccfce07e5947ac5f1f3f4628cf68ea (patch)
tree75c5f7d2eb2e6df853fe1fa8cb7119f3178a59a3 /examples/llava/android
parentb2d80e105a59b54822edf7ce7f3ed5f317e96e21 (diff)
llava : MobileVLM support (#4954)
* MobileVLM native implementation * delete depthwise_conv_2d and permute_cpy relative code, replace the two by the existed functions, and opt ldp definition, support LLAMA_PERF option for CMake * move android script to example/llava directory * Fix the editor config checks --------- Co-authored-by: Chenxiaotao03 <chenxiaotao03@meituan.com>
Diffstat (limited to 'examples/llava/android')
-rwxr-xr-xexamples/llava/android/adb_run.sh53
-rwxr-xr-xexamples/llava/android/build_64.sh8
2 files changed, 61 insertions, 0 deletions
diff --git a/examples/llava/android/adb_run.sh b/examples/llava/android/adb_run.sh
new file mode 100755
index 00000000..f73623ae
--- /dev/null
+++ b/examples/llava/android/adb_run.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+model_dir="/Users/cxt/model/llm/mobileVLM/MobileVLM-1.7B_processed"
+projector_name="mmproj-model-f16.gguf"
+llama_name="ggml-model-q4_k.gguf"
+img_dir="/Users/cxt/model/llm"
+img_name="demo.jpg"
+prompt="A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: <image>\nWho is the author of this book? \nAnswer the question using a single word or phrase. ASSISTANT:"
+# img_name="cat.jpeg"
+# prompt="A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: <image>\nWhat is in the image? ASSISTANT:"
+
+program_dir="build_64/bin"
+binName="llava-cli"
+n_threads=4
+
+
+deviceDir="/data/local/tmp"
+saveDir="output"
+if [ ! -d ${saveDir} ]; then
+ mkdir ${saveDir}
+fi
+
+
+function android_run() {
+ # # copy resource into device
+ # adb push ${model_dir}/${projector_name} ${deviceDir}/${projector_name}
+ # adb push ${model_dir}/${llama_name} ${deviceDir}/${llama_name}
+ adb push ${img_dir}/${img_name} ${deviceDir}/${img_name}
+ # copy program into device
+ adb push ${program_dir}/${binName} ${deviceDir}/${binName}
+ adb shell "chmod 0777 ${deviceDir}/${binName}"
+
+ # run
+ adb shell "echo cd ${deviceDir} ${deviceDir}/${binName} \
+ -m ${deviceDir}/${llama_name} \
+ --mmproj ${deviceDir}/${projector_name} \
+ -t ${n_threads} \
+ --image ${deviceDir}/${img_name} \
+ -p \"${prompt}\" \
+ > ${deviceDir}/${modelName}_${projector_name}_${n_threads}_${img_name}.txt"
+ adb shell "cd ${deviceDir}; pwd; ${deviceDir}/${binName} \
+ -m ${deviceDir}/${llama_name} \
+ --mmproj ${deviceDir}/${projector_name} \
+ -t ${n_threads} \
+ --image ${deviceDir}/${img_name} \
+ -p \"${prompt}\" \
+ >> ${deviceDir}/${modelName}_${projector_name}_${n_threads}_${img_name}.txt 2>&1"
+ adb pull ${deviceDir}/${modelName}_${projector_name}_${n_threads}_${img_name}.txt ${saveDir}
+}
+
+android_run
+
+echo "android_run is Done!"
diff --git a/examples/llava/android/build_64.sh b/examples/llava/android/build_64.sh
new file mode 100755
index 00000000..71b6fd3f
--- /dev/null
+++ b/examples/llava/android/build_64.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+cmake ../../../../ \
+-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
+-DCMAKE_BUILD_TYPE=Release \
+-DANDROID_ABI="arm64-v8a" \
+-DANDROID_PLATFORM=android-23 $1
+
+make -j4