PaddlePaddle(飞桨)

简介

飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,集核心框架、基础模型库、端到端开发套件、丰富的工具组件、星河社区于一体,是中国首个自主研发、功能丰富、开源开放的产业级深度学习平台。 飞桨在业内率先实现了动静统一的框架设计,兼顾科研和产业需求,在开发便捷的深度学习框架、大规模分布式训练、高性能推理引擎、产业级模型库等技术上处于国际领先水平。 飞桨端到端自适应混合并行训练技术以及压缩、推理、服务部署的协同优化,高效支撑以文心一言为代表的文心大模型的生产与应用。

安装方式

详细过程请查看 安装教程

conda

1.可以选择系统已安装的anaconda或者自行安装minicoada和anaconda

如果是使用系统已安装的anaconda,执行如下的命令:

$ module load anaconda/3-2023.09

创建 Anaconda 虚拟环境,PaddlePaddle 的 Anaconda 安装支持 3.8 - 3.12 版本的 Python 安装环境。

$ conda create -n paddle_env python=YOUR_PY_VER

进入 Anaconda 虚拟环境

$ conda activate paddle_env

2.开始安装

cpu版本:

$ conda install paddlepaddle==2.6.1 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/

GPU版本(cuda 11.7):

$ conda install paddlepaddle-gpu==2.6.1 cudatoolkit=11.7 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge

3.验证安装

安装完成后您可以使用 python3 进入 python 解释器,输入import paddle ,再输入 paddle.utils.run_check()

如果出现PaddlePaddle is installed successfully!,说明您已成功安装。

输入print(paddle.__version__),可显示版本号

$ python
Python 3.10.14 (main, Mar 21 2024, 16:24:04) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import paddle
>>> paddle.utils.run_check()
Running verify PaddlePaddle program ...
I0506 10:11:09.997723 1836958 program_interpreter.cc:212] New Executor is Running.
I0506 10:11:10.230551 1836958 interpreter_util.cc:624] Standalone Executor is Used.
PaddlePaddle works well on 1 CPU.
PaddlePaddle is installed successfully! Let's start deep learning with PaddlePaddle now.
>>> print(paddle.__version__)
2.6.1
>>>

容器(docker,singularity)

docker

构建镜像:

../../../_images/hpckapok2_docker1.jpg

填入名称,标签,源镜像拉取命令(cpu版命令为:docker pull registry.baidubce.com/paddlepaddle/paddle:2.6.1):

../../../_images/hpckapok2_docker2.png

显示构建中:

../../../_images/hpckapok2_docker3.png

创建容器:

../../../_images/hpckapok2_docker4.png

进入容器:

../../../_images/hpckapok2_docker5.png

运行:

../../../_images/hpckapok2_docker6.png

运行完毕后,记得结束容器:

../../../_images/hpckapok2_docker7.png

singularity

cpu版本:

$ singularity pull docker://registry.baidubce.com/paddlepaddle/paddle:2.6.1

GPU版本(cuda 11.7):

$ singularity pull docker://registry.baidubce.com/paddlepaddle/paddle:2.6.1-gpu-cuda11.7-cudnn8.4-trt8.4

快速入门(手写数字识别任务)

『手写数字识别』是深度学习里的 Hello World 任务,用于对 0 ~ 9 的十类数字进行分类,即输入手写数字的图片,可识别出这个图片中的数字。

本任务用到的数据集为 MNIST 手写数字数据集,用于训练和测试模型。该数据集包含 60000 张训练图片、 10000 张测试图片、以及对应的分类标签文件,每张图片上是一个 0 ~ 9 的手写数字,分辨率为 28 * 28。部分图像和对应的分类标签如下图所示。

编写一个python文件lenet.py:

import paddle
import numpy as np
from paddle.vision.transforms import Normalize

transform = Normalize(mean=[127.5], std=[127.5], data_format='CHW')
# 下载数据集并初始化 DataSet
train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=transform)
test_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform)

# 模型组网并初始化网络
lenet = paddle.vision.models.LeNet(num_classes=10)
model = paddle.Model(lenet)

# 模型训练的配置准备,准备损失函数,优化器和评价指标
model.prepare(paddle.optimizer.Adam(parameters=model.parameters()),
             paddle.nn.CrossEntropyLoss(),
             paddle.metric.Accuracy())

# 模型训练
model.fit(train_dataset, epochs=5, batch_size=64, verbose=1)
# 模型评估
model.evaluate(test_dataset, batch_size=64, verbose=1)

# 保存模型
model.save('./output/mnist')
# 加载模型
model.load('output/mnist')

# 从测试集中取出一张图片
img, label = test_dataset[0]
# 将图片shape从1*28*28变为1*1*28*28,增加一个batch维度,以匹配模型输入格式要求
img_batch = np.expand_dims(img.astype('float32'), axis=0)

# 执行推理并打印结果,此处predict_batch返回的是一个list,取出其中数据获得预测结果
out = model.predict_batch(img_batch)[0]
pred_label = out.argmax()
print('true label: {}, pred label: {}'.format(label[0], pred_label))

下面使用镜像方式来运行

[test@login04 paddlepaddle]$ singularity shell paddle_2.6.1.sif
Singularity> python lenet.py
Cache file /share/home/test/.cache/paddle/dataset/mnist/t10k-images-idx3-ubyte.gz not found, downloading https://dataset.bj.bcebos.com/mnist/t10k-images-idx3-ubyte.gz
Begin to download
item 403/403 [============================>.] - ETA: 0s - 3ms/item
Download finished
Cache file /share/home/test/.cache/paddle/dataset/mnist/t10k-labels-idx1-ubyte.gz not found, downloading https://dataset.bj.bcebos.com/mnist/t10k-labels-idx1-ubyte.gz
Begin to download
item 2/2 [===========================>..] - ETA: 0s - 125us/item
Download finished
60000 images in train_dataset, 10000 images in test_dataset
The loss value printed in the log is the current step, and the metric is the average value of previous steps.
Epoch 1/5
step 938/938 [==============================] - loss: 0.0063 - acc: 0.9372 - 15ms/step
Epoch 2/5
step 938/938 [==============================] - loss: 0.0184 - acc: 0.9762 - 14ms/step
Epoch 3/5
step 938/938 [==============================] - loss: 0.0097 - acc: 0.9814 - 14ms/step
Epoch 4/5
step 938/938 [==============================] - loss: 0.0084 - acc: 0.9832 - 14ms/step
Epoch 5/5
step 938/938 [==============================] - loss: 0.0428 - acc: 0.9855 - 14ms/step
Eval begin...
step 157/157 [==============================] - loss: 1.8524e-04 - acc: 0.9845 - 6ms/step
Eval samples: 10000
true label: 7, pred label: 7
Singularity>

参考资料

  1. 安装教程

  2. 使用教程

  3. 模型库

Contributor:mzliu


最后更新: 2025 年 06 月 30 日