文档
PaddlePaddle 入门教程:ERINE 与产业套件全景
1. PaddlePaddle 的"双引擎"
PaddlePaddle 的核心差异化在于产业套件 > 基础框架:
PaddlePaddle 核心框架
├── 动态图开发(dygraph)
├── 静态图部署(static graph)
└── 自动混合精度(AMP)
产业套件(开箱即用)
├── PaddleOCR —— OCR 识别全场景
├── PaddleNLP —— 中文 NLP 全任务(ERNIE 3.0)
├── PaddleSpeech —— 语音合成/识别
├── PaddleDetection —— 目标检测
├── PaddleSeg —— 图像分割
└── PaddleGAN —— 图像生成
2. 动态图 ↔ 静态图一键切换
这是飞桨最独特的设计:
import paddle
# 动态图模式(开发阶段)
paddle.disable_static()
@ paddle.jit.to_static # 👈 一个装饰器即可
def model(x):
return paddle.nn.functional.relu(paddle.nn.Linear(10, 5)(x))
# 训练:动态图
x = paddle.randn([3, 10])
out = model(x)
# 部署:自动转为静态图,享受图优化
model = paddle.jit.save(model, "inference_model")
动态图用于调试,静态图用于部署——无需重写代码。
3. PaddleNLP + ERNIE:中文 NLP 最强组合
from paddlenlp.transformers import ErnieForSequenceClassification, ErnieTokenizer
tokenizer = ErnieTokenizer.from_pretrained("ernie-3.0-base-zh")
model = ErnieForSequenceClassification.from_pretrained(
"ernie-3.0-base-zh", num_classes=2
)
texts = ["这部电影太棒了!", "服务态度很差,不推荐。"]
inputs = tokenizer(texts, padding=True, return_tensors="pd")
logits = model(**inputs)
predictions = paddle.argmax(logits, axis=-1)
print(predictions) # [1, 0]
ERNIE 3.0 在中文理解任务上长期霸榜 CLUE 榜单。
4. 部署三件套
| 套件 | 目标平台 | 特点 |
|---|---|---|
| PaddleServing | 服务端 | 高性能推理服务 |
| PaddleLite | 移动/嵌入式 | ARM 优化,端侧推理 |
| Paddle.js | 浏览器 | WebGL 加速,不用后端 |
5. PaddlePaddle vs PyTorch vs TensorFlow
| 维度 | PaddlePaddle | PyTorch | TensorFlow |
|---|---|---|---|
| 中文生态 | ⭐⭐⭐ 最强 | ⭐⭐ | ⭐⭐ |
| 产业套件 | ⭐⭐⭐ 最多 | ⭐ | ⭐⭐ |
| 国际社区 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| 国产硬件 | ⭐⭐⭐ | ⭐ | ⭐ |
| 学术论文 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
6. 选 PaddlePaddle 的理由
- 你的业务场景以中文为主(OCR/NLP)
- 需要国产硬件适配(昇腾/昆仑)
- 需要完整产业方案而非从头搭积木
- 公司技术栈在百度云生态内
思考题
- 飞桨的动静态图一键切换与 TensorFlow 的
@tf.function有何异同? - 为什么飞桨在中文 OCR 上比 Tesseract + EasyOCR 表现更好?
- 飞桨的产业套件模式与 HuggingFace 的模型 Hub 模式各有什么优劣?