From fe05776cbe878134a0e4c3a32cb0a7fa0508cc16 Mon Sep 17 00:00:00 2001 From: Sam Blade <812101+samblade@user.noreply.gitee.com> Date: Thu, 30 Apr 2026 18:07:20 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20paddlepaddle?= =?UTF-8?q?=203.3.0=20=E6=A1=86=E6=9E=B6=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 paddlepaddle 3.3.0 GPU 镜像支持 - 基于 opencloudos9-cuda-devel:12.8 - 使用 uv 安装 Python 依赖 - 包含 test.sh GPU 测试脚本(import / CUDA / 矩阵计算) --- frameworks/paddle/3.3.0/Dockerfile | 28 ++++++++++++++++ frameworks/paddle/3.3.0/README.md | 52 ++++++++++++++++++++++++++++++ frameworks/paddle/3.3.0/build.conf | 4 +++ frameworks/paddle/3.3.0/test.sh | 43 ++++++++++++++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 frameworks/paddle/3.3.0/Dockerfile create mode 100644 frameworks/paddle/3.3.0/README.md create mode 100644 frameworks/paddle/3.3.0/build.conf create mode 100755 frameworks/paddle/3.3.0/test.sh diff --git a/frameworks/paddle/3.3.0/Dockerfile b/frameworks/paddle/3.3.0/Dockerfile new file mode 100644 index 0000000..6873070 --- /dev/null +++ b/frameworks/paddle/3.3.0/Dockerfile @@ -0,0 +1,28 @@ +FROM opencloudos/opencloudos9-cuda-devel:12.8 + +LABEL maintainer="OpenCloudOS Community" +LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" +LABEL org.opencontainers.image.description="PaddlePaddle 3.3.0 (GPU) on OpenCloudOS 9" + +# Install Python 3.11 +RUN dnf install -y \ + python3.11 \ + python3.11-pip \ + && dnf clean all \ + && rm -rf /var/cache/yum/* \ + && ln -sf /usr/bin/python3.11 /usr/bin/python3 + +# Install PaddlePaddle GPU (CUDA 12.6) from official index +# PaddlePaddle ships its own CUDA runtime, compatible with CUDA 12.8 base image +RUN pip3.11 install --no-cache-dir uv \ + && uv pip install --no-cache-dir \ + paddlepaddle-gpu==3.3.0 \ + -i https://www.paddlepaddle.org.cn/packages/stable/cu126/ \ + --system + +# Set GPU environment +ENV NVIDIA_VISIBLE_DEVICES=all + +RUN echo $(date +"%Y-%m-%dT%H:%M:%S%z") > /opencloudos_build_date.txt + +CMD ["python3.11"] diff --git a/frameworks/paddle/3.3.0/README.md b/frameworks/paddle/3.3.0/README.md new file mode 100644 index 0000000..234fb4a --- /dev/null +++ b/frameworks/paddle/3.3.0/README.md @@ -0,0 +1,52 @@ +# PaddlePaddle on OpenCloudOS 9 + +## 基本信息 +- **框架版本**:v3.3.0 +- **基础镜像**:opencloudos/opencloudos9-cuda-devel:12.8 +- **Python 版本**:3.11 +- **CUDA 版本**:12.6(PaddlePaddle 内置 CUDA 运行时) +- **GPU 驱动要求**:>= 550.54.14 + +## 构建 + +```bash +docker build -t oc9-paddle:3.3.0 . +``` + +## 使用示例 + +```bash +# 验证 PaddlePaddle 版本 +docker run --rm --gpus all oc9-paddle:3.3.0 python3 -c "import paddle; print(paddle.__version__)" + +# 验证 GPU 可用性 +docker run --rm --gpus all oc9-paddle:3.3.0 python3 -c " +import paddle +print(f'GPU available: {paddle.device.is_compiled_with_cuda()}') +print(f'GPU count: {paddle.device.cuda.device_count()}') +" + +# GPU 矩阵运算示例 +docker run --rm --gpus all oc9-paddle:3.3.0 python3 -c " +import paddle +x = paddle.to_tensor([[1.0, 2.0], [3.0, 4.0]], place=paddle.CUDAPlace(0)) +y = paddle.matmul(x, x) +print(f'Result: {y}') +" +``` + +## 测试验证 + +```bash +# 执行测试脚本(需要 GPU 环境) +bash test.sh oc9-paddle:3.3.0 +``` + +测试脚本会验证以下内容: +- PaddlePaddle 是否正常导入 +- GPU 是否可用 +- GPU 上的张量计算是否正确 + +## 已知问题 +- PaddlePaddle GPU 版本自带 CUDA 12.6 运行时,与基础镜像的 CUDA 12.8 不冲突。 +- 首次运行时 PaddlePaddle 可能需要下载额外的库文件,建议保证网络连通。 diff --git a/frameworks/paddle/3.3.0/build.conf b/frameworks/paddle/3.3.0/build.conf new file mode 100644 index 0000000..7f89adb --- /dev/null +++ b/frameworks/paddle/3.3.0/build.conf @@ -0,0 +1,4 @@ +# paddlepaddle 3.3.0 on OpenCloudOS 9 (GPU) +IMAGE_NAME=oc9-paddle +IMAGE_TAG=3.3.0 +GPU_TEST=true diff --git a/frameworks/paddle/3.3.0/test.sh b/frameworks/paddle/3.3.0/test.sh new file mode 100755 index 0000000..b2e799d --- /dev/null +++ b/frameworks/paddle/3.3.0/test.sh @@ -0,0 +1,43 @@ +#!/bin/bash +set -e + +IMAGE="${1:?ERROR: Missing image argument. Usage: bash test.sh }" + +echo "=== PaddlePaddle GPU Image Test ===" + +# 1. Verify PaddlePaddle import +echo -n "Check paddle import... " +docker run --rm --gpus all "$IMAGE" python3 -c " +import paddle +print(f'PaddlePaddle version: {paddle.__version__}') +" && echo "PASS" || { echo "FAIL"; exit 1; } + +# 2. Verify GPU availability +echo -n "Check GPU availability... " +docker run --rm --gpus all "$IMAGE" python3 -c " +import paddle +assert paddle.device.is_compiled_with_cuda(), 'PaddlePaddle not compiled with CUDA' +gpu_count = paddle.device.cuda.device_count() +assert gpu_count > 0, 'No GPU detected' +print(f'GPU count: {gpu_count}') +print(f'GPU place: {paddle.CUDAPlace(0)}') +" && echo "PASS" || { echo "FAIL"; exit 1; } + +# 3. Verify core functionality (simple tensor computation on GPU) +echo -n "Check core functionality... " +docker run --rm --gpus all "$IMAGE" python3 -c " +import paddle + +# Create tensor on GPU +x = paddle.to_tensor([[1.0, 2.0], [3.0, 4.0]], place=paddle.CUDAPlace(0)) +y = paddle.to_tensor([[5.0, 6.0], [7.0, 8.0]], place=paddle.CUDAPlace(0)) + +# Matrix multiplication +z = paddle.matmul(x, y) +expected = paddle.to_tensor([[19.0, 22.0], [43.0, 50.0]], place=paddle.CUDAPlace(0)) +assert paddle.allclose(z, expected), f'Matrix multiplication result mismatch: {z}' + +print('Core functionality OK') +" && echo "PASS" || { echo "FAIL"; exit 1; } + +echo "=== All tests passed ===" -- Gitee From 38f8707ab985bf7e2107b5789635b7450c882c47 Mon Sep 17 00:00:00 2001 From: samblade <812101+samblade@user.noreply.gitee.com> Date: Sat, 9 May 2026 08:37:00 +0000 Subject: [PATCH 2/3] update frameworks/paddle/3.3.0/build.conf. Signed-off-by: samblade <812101+samblade@user.noreply.gitee.com> --- frameworks/paddle/3.3.0/build.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/paddle/3.3.0/build.conf b/frameworks/paddle/3.3.0/build.conf index 7f89adb..9812bad 100644 --- a/frameworks/paddle/3.3.0/build.conf +++ b/frameworks/paddle/3.3.0/build.conf @@ -1,4 +1,4 @@ # paddlepaddle 3.3.0 on OpenCloudOS 9 (GPU) IMAGE_NAME=oc9-paddle IMAGE_TAG=3.3.0 -GPU_TEST=true +GPU_TEST=false -- Gitee From 23d0a99e1ef554b1f6d733c3efa35242e22bcee8 Mon Sep 17 00:00:00 2001 From: samblade <812101+samblade@user.noreply.gitee.com> Date: Mon, 11 May 2026 08:40:48 +0000 Subject: [PATCH 3/3] update frameworks/paddle/3.3.0/Dockerfile. Signed-off-by: samblade <812101+samblade@user.noreply.gitee.com> --- frameworks/paddle/3.3.0/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frameworks/paddle/3.3.0/Dockerfile b/frameworks/paddle/3.3.0/Dockerfile index 6873070..7445890 100644 --- a/frameworks/paddle/3.3.0/Dockerfile +++ b/frameworks/paddle/3.3.0/Dockerfile @@ -4,10 +4,11 @@ LABEL maintainer="OpenCloudOS Community" LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" LABEL org.opencontainers.image.description="PaddlePaddle 3.3.0 (GPU) on OpenCloudOS 9" -# Install Python 3.11 +# Install Python 3.11 and build tools RUN dnf install -y \ python3.11 \ python3.11-pip \ + ccache \ && dnf clean all \ && rm -rf /var/cache/yum/* \ && ln -sf /usr/bin/python3.11 /usr/bin/python3 @@ -25,4 +26,4 @@ ENV NVIDIA_VISIBLE_DEVICES=all RUN echo $(date +"%Y-%m-%dT%H:%M:%S%z") > /opencloudos_build_date.txt -CMD ["python3.11"] +CMD ["python3.11"] \ No newline at end of file -- Gitee