PaddleOCR ARM/aarch64 support. #17328
Replies: 4 comments 4 replies
|
Hello @mkd-enrique ! I’m running into the exact same compatibility hurdles. Have you happened to find a stable workaround or a specific build configuration that works for you in the meantime? Thanks in advance |
|
I am in exactly the same situation. I am on a DGX spark, which is aarch64 architecture with a GB10 (sm_121) GPU. Actively seeking paddle team's future support for such a machine. If anybody have any build that work, love to try. Thanks. |
|
That's not a biggie. You can compile PaddlePaddle for the DGX Spark yourself. I just did it with help of Anthropic's Claude... Step 1. Check this Step 2. Dependencies
Step3: Check for CUDA 13.0 Toolkit for SBSA/aarch64 If not installed, install via apt on DGX OS: Step 4. Python Venv for Paddle Compiling Step 5: Install Build-Dependencies into Venv for Paddle Compiling Verify with: Step 6. Clone PaddlePaddle Source Current Stable-Branch (3.x) Submodules Verify Step 7. Install Packaging Step 8. This is nasty part A
and also create a log file named "cmake_output.log" for which any AI is helpful to analyse in case anything goes south Step 9. This is nasty part II This took about 40mins on my DGX latest version of this walkthrough will be here: https://news.metaparadigma.de/dgx-spark-installing-paddlepaddle-ocr-on-nvidia-dgx-spark-5348/ |
|
I have built and compiled a paddlepaddle GPU for NVIDIA GB10 Grace Blackwell. You can find the python wheel file here. Built and compiled from source here . https://drive.proton.me/urls/XWHH93QBXC#9PjuMilYe2mu Do check it out and let me know if it helps. (.venv_paddle) ➜ ~ neofetch
.-/+oossssoo+/-. evilport-ai-pc@gx10-d283
`:+ssssssssssssssssss+:` ------------------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 24.04.4 LTS aarch64
.ossssssssssssssssssdMMMNysssso. Host: GX10 5.36_GX10DGX
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 6.17.0-1026-nvidia
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 2 hours, 14 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 2693 (dpkg), 16 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: zsh 5.9
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Terminal: /dev/pts/1
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: (20) @ 2.808GHz
ossyNMMMNyMMhsssssssssssssshmmmhssssssso GPU: NVIDIA 000f:01:00.0 NVIDIA Corporation Device 2e12
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Memory: 20763MiB / 124610MiB
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.
(.venv_paddle) ➜ ~ uname -a
Linux gx10-d283 6.17.0-1026-nvidia #26-Ubuntu SMP PREEMPT_DYNAMIC Thu Jun 25 00:57:17 UTC 2026 aarch64 aarch64 aarch64 GNU/Linux
(.venv_paddle) ➜ ~ python --version
Python 3.12.3after installation (.venv_paddle) ➜ ~ paddlex --serve --pipeline PaddleOCR-VL.yaml
Creating model: ('PP-LCNet_x1_0_doc_ori', None, None)
Model files already exist. Using cached files. To redownload, please delete the directory manually: `/home/evilport-ai-pc/.paddlex/official_models/PP-LCNet_x1_0_doc_ori`.
Creating model: ('UVDoc', None, None)
Model files already exist. Using cached files. To redownload, please delete the directory manually: `/home/evilport-ai-pc/.paddlex/official_models/UVDoc`.
Creating model: ('PP-DocLayoutV2', None, None)
Model files already exist. Using cached files. To redownload, please delete the directory manually: `/home/evilport-ai-pc/.paddlex/official_models/PP-DocLayoutV2`.
Creating model: ('PaddleOCR-VL-0.9B', None, None)
Model files already exist. Using cached files. To redownload, please delete the directory manually: `/home/evilport-ai-pc/.paddlex/official_models/PaddleOCR-VL`.
Loading configuration file /home/evilport-ai-pc/.paddlex/official_models/PaddleOCR-VL/config.json
Loading weights file /home/evilport-ai-pc/.paddlex/official_models/PaddleOCR-VL/model.safetensors
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
use GQA - num_heads: 16- num_key_value_heads: 2
Loaded weights file from disk, setting weights to model.
All model checkpoint weights were used when initializing PaddleOCRVLForConditionalGeneration.
All the weights of PaddleOCRVLForConditionalGeneration were initialized from the model checkpoint at /home/evilport-ai-pc/.paddlex/official_models/PaddleOCR-VL.
If your task is similar to the task the model of the checkpoint was trained on, you can already use PaddleOCRVLForConditionalGeneration for predictions without further training.
Loading configuration file /home/evilport-ai-pc/.paddlex/official_models/PaddleOCR-VL/generation_config.json
INFO: Started server process [276542]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit) |
Uh oh!
There was an error while loading. Please reload this page.
Hello fellow OCR developers/researchers!
I’m reaching out to ask whether there are any updates on a projected timeline for supporting aarch64/ARM architectures. I saw that the Paddle team recently announced support for the NVIDIA 50 Series, which is exciting, but I’m currently working on a server that uses an aarch64/ARM architecture with a GB10 (sm_121) GPU.
I’ve tested PaddleOCR on my own device and it works amazingly well. I was really hoping to use it in a project I’m currently developing, but due to the current incompatibility, that’s unfortunately not possible.
I’m very much looking forward to future support for aarch64 along with sm_120/sm_121 GPUs!
All reactions