視頻中,我們將深入了解利用GPU加速在Orange Pi5上跑LLMs的精彩世界。最近知乎上的一篇文章《利用GPU加速,在Orange Pi上跑LLMs》引起了我們的注意,這篇文章主要展示了GPU加速的LLM在嵌入式設備上以合適的速度順利運行。具體來說,是在Orange Pi 5(8G)上,作者通過機器學習編譯(MLC)技術,實現了Llama2-7b以2.5 toks/sec的速度運行,RedPajama-3b以5 toks/sec運行。此外,還在16GB版本的Orange Pi 5上以1.5 tok/sec的速度運行Llama-2 13b模型。
下面我們看看他們是如何做到的:
背景
開放語言模型的進步已經催生了跨問題回答、翻譯和創意任務的創新。雖然當前的解決方案需要高端的桌面GPU甚至服務器級別的GPU來實現滿意的性能。但為了使LLM日常使用,我們想了解我們如何在廉價的嵌入式設備上部署它們。
許多嵌入式設備配備了移動GPU(例如Mali GPU)可以用來加速LLM的運行速度。在這篇文章中,我們選擇了Orange Pi 5,這是一個基于RK3588的開發板,與Raspberry Pi相似,但也配備了更強大的Mali-G610 GPU。這篇文章總結了我們首次嘗試利用機器學習編譯,并為該設備提供了開箱即用的GPU加速。
面向Mali GPU的機器學習編譯
機器學習編譯(MLC)是一種新興技術,它自動編譯和優化機器學習工作負載,并將編譯后的工作負載部署到廣泛的后端。在寫作時,基于Apache TVM Unity,MLC支持的平臺包括瀏覽器(WebGPU, WASM)、NVIDIA GPU(CUDA)、AMD GPU(ROCm, Vulkan)、Intel GPU(Vulkan)、iOS和MacBooks(Metal)、Android(OpenCL)以及Mali GPU(本文)。
基于通用機器學習編譯實現Mali代碼生成
MLC是建立在Apache TVM Unity之上的,這是一個用于在不同硬件和后端上編譯機器學習模型的通用軟件棧。為了將LLM編譯到Mali GPU上,我們復用了所有現有的編譯流程,沒有進行任何代碼優化。更具體地說,我們成功地部署了Llama-2和RedPajama模型,采取了以下步驟:
·復用了模型優化步驟,包括量化、融合、布局優化等;
·復用了在TVM TensorIR中的定義的通用GPU內核優化空間,并將其重新運用在到Mali GPU;
·復用了基于TVM的OpenCL代碼生成后端,并將其重新運用在到Mali GPU;
·復用了現有的用戶界面,包括Python API、CLI和REST API。
運行方法
本節提供了一個分步運行指南,以便您可以在自己的Orange Pi設備上嘗試它。這里我們使用RedPajama-INCITE-Chat-3B-v1-q4f16_1作為運行示例。您可以用Llama-2-7b-chat-hf-q4f16_1或Llama-2-13b-chat-hf-q4f16_1(需要16GB的板)來替換它。
準備工作
請首先按照這里的指示,為RK3588板設置OpenCL驅動程序。然后從源代碼克隆MLC-LLM,并下載權重和預構建的庫。
# clone mlc-llm from GitHub
git clone --recursive https://github.com/mlc-ai/mlc-llm.git && cd mlc-llm
# Download prebuilt weights and libs
git lfs install
mkdir -p dist/prebuilt && cd dist/prebuilt
git clone https://github.com/mlc-ai/binary-mlc-llm-libs.git lib
git clonehttps://huggingface.co/mlc-ai/mlc-chat-RedPajama-INCITE-Chat-3B-v1-q4f16_1
cd ../../..
使用CLI
從源代碼編譯mlc_llm_cli
cd mlc-llm/
# create build directory
mkdir -p build && cd build
# generate build configuration
python3 ../cmake/gen_cmake_config.py
# build `mlc_chat_cli`
cmake .. && cmake --build . --parallel $(nproc) && cd ..
驗證是否編譯成功
# expected to see `mlc_chat_cli`, `libmlc_llm.so` and `libtvm_runtime.so`
ls -l ./build/
# expected to see help message
./build/mlc_chat_cli --help
使用mlc_llm_cli運行LLM
./build/mlc_chat_cli --local-id RedPajama-INCITE-Chat-3B-v1-q4f16_1 –device mali
CLI運行截圖
使用Python API
編譯TVM runtime(無需編譯完整TVM編譯器)
# clone from GitHub
git clone --recursive https://github.com/mlc-ai/relax.git tvm_unity && cd tvm_unity/
# create build directory
mkdir -p build && cd build
# generate build configuration
cp ../cmake/config.cmake . && echo "set(CMAKE_BUILD_TYPE RelWithDebInfo)\nset(USE_OPENCL ON)" >> config.cmake
# build `mlc_chat_cli`
cmake .. && cmake --build . --target runtime --parallel $(nproc) && cd ../..
設置PYTHONPATH(可按需添加到bashrc或zshrc)
export TVM_HOME=$(pwd)/tvm_unity
export MLC_LLM_HOME=$(pwd)/mlc-llm
export PYTHONPATH=$TVM_HOME/python:$MLC_LLM_HOME/python:${PYTHONPATH}
運行下列Python腳本
from mlc_chat import ChatModule
from mlc_chat.callback import StreamToStdout
cm = ChatModule(model="RedPajama-INCITE-Chat-3B-v1-q4f16_1")
# Generate a response for a given prompt
output = cm.generate(
prompt="What is the meaning of life?",
progress_callback=StreamToStdout(callback_interval=2),)
# Print prefill and decode performance statistics
print(f"Statistics: {cm.stats()}\n")
評論區Hihg翻了!
這篇文章同時發表 Hacker News。在人工智能評論區,大家的討論熱鬧非凡,令人目不暇接。他們熱烈地討論Orange Pi 5的硬件選項和可擴展性,感嘆如此強大的模型,如此實惠的價格,將改變游戲規則,認為這一突破將為預算有限的人工智能愛好者帶來了新的可能性。
“這一功能強大的工具使得在Orange Pi 5等設備上充分發揮人工智能的潛力變得前所未有的簡單。對于開發者和業余愛好者來說,這都是一個改變游戲規則的工具?!?/p>
“通過 GPU加速語言模型編譯,Orange Pi 5已被證明是一款經濟實惠的人工智能利器。這款設備擁有令人驚嘆的速度,能以極低的成本運行高性能模型,正在徹底改變人工智能領域?!?/p>
我們欣喜地可以看到,Orange Pi 5正在以其強大的人工智能能力讓越來越多的人工智能愛好者加入到創新、創意的世界,不斷進行新的實踐和探索。
-
gpu
+關注
關注
28文章
4777瀏覽量
129360 -
人工智能
+關注
關注
1796文章
47683瀏覽量
240302 -
開發板
+關注
關注
25文章
5121瀏覽量
98207
發布評論請先 登錄
相關推薦
評論