|
--- |
|
base_model: |
|
- Qwen/Qwen2-VL-2B |
|
pipeline_tag: image-text-to-text |
|
library_name: transformers |
|
tags: |
|
- rknn |
|
- rkllm |
|
- chat |
|
- vision |
|
- rk3588 |
|
- multimodal |
|
--- |
|
## 3ib0n's RKLLM Guide |
|
These models and binaries require an RK3588 board running rknpu driver version 0.9.7 or above |
|
|
|
## Steps to reproduce conversion |
|
```shell |
|
# Download and setup miniforge3 |
|
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh" |
|
bash Miniforge3-$(uname)-$(uname -m).sh |
|
|
|
# activate the base environment |
|
source ~/miniforge3/bin/activate |
|
|
|
# create and activate a python 3.8 environment |
|
conda create -n rknn-llm-1.1.4 python=3.8 |
|
conda activate rknn-llm-1.1.4 |
|
|
|
# clone the lastest rknn-llm toolkit |
|
git clone https://github.com/airockchip/rknn-llm.git |
|
|
|
# update the following 4 files to your desired models and output locations |
|
cd rknn-llm/examples/rkllm_multimodal_demo |
|
nano export/export_vision.py # update model path and output path |
|
nano export/export_vision_rknn.py # update model path |
|
nano export/export_rkllm.py # update input and output paths |
|
nano data/make_input_embeds_for_quantize.py # update model path |
|
|
|
# intstall necessary dependencies for the above |
|
pip install transformers accelerate torchvision rknn-toolkit2==2.2.1 |
|
pip install --upgrade torch pillow # necessary to use vision models with opset_version=18 |
|
|
|
# export vision models and create input embeddings |
|
cd export/ |
|
python export_vision.py |
|
python export_vision_rknn.py |
|
cd .. |
|
python data/make_input_embeds_for_quantize.py |
|
|
|
# install rkllm and export the language model |
|
pip install ../../rkllm-toolkit/packages/rkllm_toolkit-1.1.4-cp38-cp38-linux_x86_64.whl |
|
python export/export_rkllm.py |
|
``` |
|
|
|
## Steps to build and run demo |
|
|
|
```shell |
|
# Dwonload the correct toolchain for working with rkllm |
|
# Documentation here: https://github.com/airockchip/rknn-llm/blob/main/doc/Rockchip_RKLLM_SDK_EN_1.1.0.pdf |
|
wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz |
|
tar -xz gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz |
|
|
|
# ensure that the gcc compiler path is set to the location where the toolchain dowloaded earlier is unpacked |
|
nano deploy/build-linux.sh # update the gcc compiler path |
|
|
|
# compile the demo app |
|
cd delpoy/ |
|
./build-linux.sh |
|
``` |
|
|
|
## Steps to run the app |
|
More information and original guide: https://github.com/airockchip/rknn-llm/tree/main/examples/rkllm_multimodel_demo |
|
```shell |
|
# push install dir to device |
|
adb push ./install/demo_Linux_aarch64 /data |
|
# push model file to device |
|
adb push qwen2_vl_2b_vision_rk3588.rknn /data/models |
|
adb push Qwen2-VL-2B-Instruct.rkllm /data/models |
|
# push demo image to device |
|
adb push ../data/demo.jpg /data/demo_Linux_aarch64 |
|
|
|
adb shell |
|
cd /data/demo_Linux_aarch64 |
|
# export lib path |
|
export LD_LIBRARY_PATH=./lib |
|
# soft link models dir |
|
ln -s /data/models . |
|
# run imgenc |
|
./imgenc models/qwen2_vl_2b_vision_rk3588.rknn demo.jpg |
|
# run llm(Pure Text Example) |
|
./llm models/Qwen2-VL-2B-Instruct.rkllm 128 512 |
|
# run demo(Multimodal Example) |
|
./demo demo.jpg models/qwen2_vl_2b_vision_rk3588.rknn models/Qwen2-VL-2B-Instruct.rkllm 128 512 |
|
``` |