ERNIE 3.0 模型下载
ERNIE 3.0 模型下载
预训练模型
| 模型名称 | 模型大小 | 下载链接 |
|---|---|---|
| ERNIE 3.0 Base | 414MB | 下载链接 |
| ERNIE 3.0 Medium | 165MB | 下载链接 |
推理模型
| 模型名称 | 模型大小 | 下载链接 |
|---|---|---|
| ERNIE 3.0 Base 推理模型 | 414MB | 下载链接 |
#### 3.1.3 模型使用接口
每个模型都提供了详细的使用示例,通常以Jupyter Notebook的形式提供,如introduction_cn.ipynb。这些示例展示了模型的加载、训练和推理等使用方法,帮助开发者快速上手。
ERNIE-3.0的使用示例:
```python
import paddle
from paddlenlp.transformers import ErnieModel, ErnieTokenizer
# 加载模型和分词器
model = ErnieModel.from_pretrained("ernie-3.0-base-zh")
tokenizer = ErnieTokenizer.from_pretrained("ernie-3.0-base-zh")
# 输入文本
text = "我爱中国"
# 文本预处理
inputs = tokenizer(text, return_tensors="pd")
# 模型推理
outputs = model(**inputs)
# 获取结果
last_hidden_state = outputs[0]
pooled_output = outputs[1]
print("last_hidden_state shape:", last_hidden_state.shape)
print("pooled_output shape:", pooled_output.shape)
3.2 PaddleCV API设计
PaddleCV是飞桨模型库提供的一个高层API,用于快速构建计算机视觉应用。PaddleCV的API设计遵循了高内聚低耦合的原则,提供了简洁易用的接口。
3.2.1 初始化接口
PaddleCV的初始化接口支持两种方式:通过任务名称或配置文件路径。这种灵活的初始化方式使得开发者可以根据自己的需求选择合适的方式。
# 通过任务名称初始化
paddlecv = PaddleCV(task_name='object_detection', device='GPU')
# 通过配置文件路径初始化
paddlecv = PaddleCV(config_path='configs/detection/ppyoloe/ppyoloe_crn_l_300e_coco.yml', device='GPU')
3.2.2 任务执行接口
PaddleCV的任务执行接口非常简单,只需调用实例并传入输入数据即可。输入数据可以是图片路径、图片数组等多种格式,PaddleCV会自动进行数据预处理。
# 单张图片检测
result = paddlecv('input_image.jpg')
# 多张图片检测
results = paddlecv(['image1.jpg', 'image2.jpg', 'image3.jpg'])
3.2.3 辅助接口
PaddleCV还提供了一些辅助接口,如列出所有支持的任务和模型,帮助开发者了解和选择合适的任务和模型。
# 列出所有支持的任务
PaddleCV.list_all_supported_tasks()
# 列出所有支持的模型
PaddleCV.list_all_supported_models()
4. 高内聚低耦合设计的优势与实践
4.1 优势分析
高内聚低耦合的模块化架构设计为飞桨模型库带来了多方面的优势:
- 可维护性:模块内部高内聚使得每个模块的功能相对独立,修改一个模块不会对其他模块产生太大影响,降低了系统的维护成本。
- 可扩展性:模块之间低耦合使得添加新的功能模块变得容易,只需按照统一的接口规范实现新模块即可,无需修改现有代码。
- 可重用性:每个模块都可以被独立地重用,提高了代码的复用率,减少了重复开发工作。
- 可测试性:模块的独立性使得单元测试变得容易,可以对每个模块进行单独测试,提高了测试效率和代码质量。
- 易用性:清晰的模块划分和统一的API接口使得开发者更容易理解和使用系统,降低了学习成本。
4.2 实践案例
4.2.1 添加新模型
在飞桨模型库中添加新模型非常简单,只需按照以下步骤操作:
- 在modelcenter目录下创建新模型的目录,如new_model。
- 在新模型目录下添加模型信息文件info.yaml、下载文件download_cn.md、Benchmark文件benchmark_cn.md和使用示例introduction_cn.ipynb等。
- 在任务管理模块中注册新模型对应的任务,更新TASK_DICT变量。
通过这种方式,新模型可以无缝集成到飞桨模型库中,与其他模块保持低耦合。
4.2.2 修改现有模型
当需要修改现有模型时,由于模型之间的低耦合,只需修改对应模型目录下的文件即可,不会影响其他模型的功能。例如,优化PP-YOLOE的性能,只需修改modelcenter/PP-YOLOE目录下的相关文件,如模型代码、配置文件等。
4.2.3 定制任务流程
开发者可以通过自定义Pipeline来定制任务流程。例如,添加新的数据预处理步骤,只需创建一个新的PreprocessStage类,并将其添加到Pipeline的处理阶段中。
class CustomPreprocessStage(PreprocessStage):
def __call__(self, input):
# 自定义预处理逻辑
processed_input = custom_preprocess(input)
return processed_input
# 定制Pipeline
pipeline = Pipeline(cfg)
pipeline.stages.insert(0, CustomPreprocessStage(cfg.custom_preprocess))
5. 飞桨模型库API接口设计的最佳实践
5.1 API命名规范
飞桨模型库的API命名遵循以下规范:
- 类名采用帕斯卡命名法(PascalCase),如PaddleCV、Pipeline。
- 函数名和方法名采用蛇形命名法(snake_case),如list_all_supported_tasks、from_pretrained。
- 变量名采用蛇形命名法(snake_case),如task_name、config_path。
- 常量名采用全大写蛇形命名法(UPPER_SNAKE_CASE),如TASK_DICT、VERSION。
- API接口的命名要具有描述性,能够清晰地表达其功能,如list_all_supported_models表示列出所有支持的模型。
5.2 API文档编写
飞桨模型库非常重视API文档的编写,每个API接口都有详细的文档说明,包括功能描述、参数说明、返回值说明和使用示例等。文档通常以Markdown或Jupyter Notebook的形式提供,方便开发者查阅。
以PaddleCV类的文档为例:
class PaddleCV(object):
"""
PaddleCV是飞桨模型库提供的高层API,用于快速构建计算机视觉应用。
Args:
task_name (str, optional): 任务名称,如'object_detection'、'image_classification'等。
如果指定了task_name,则会使用推荐的配置文件。 Defaults to None.
config_path (str, optional): 配置文件路径。如果task_name为None,则必须指定config_path。
Defaults to None.
output_dir (str, optional): 输出目录,用于保存处理结果。 Defaults to 'output'.
run_mode (str, optional): 运行模式,可选值为'paddle'、'onnx'等。 Defaults to 'paddle'.
device (str, optional): 运行设备,可选值为'CPU'、'GPU'等。 Defaults to 'CPU'.
Examples:
>>> paddlecv = PaddleCV(task_name='object_detection', device='GPU')
>>> result = paddlecv('input_image.jpg')
"""
...
5.3 错误处理机制
飞桨模型库的API接口具有完善的错误处理机制,能够及时发现和报告错误,并提供有用的错误信息。
在PaddleCV的初始化过程中,如果同时未指定task_name和config_path,会抛出AssertionError异常,提示开发者必须指定其中一个参数。
def __init__(self, task_name=None, config_path=None, ...):
if task_name is not None:
...
else:
assert config_path is not None, "task_name and config_path can not be None at the same time!!!"
5.4 版本兼容性
飞桨模型库非常重视API接口的版本兼容性,尽量保持API接口的稳定性。当需要引入不兼容的变更时,会提前发布 deprecation warning,并在新版本中提供迁移指南。
例如,当某个API接口即将被废弃时,会在文档中注明,并在代码中添加警告信息:
def old_api(self, ...):
warnings.warn("old_api is deprecated, please use new_api instead.", DeprecationWarning)
...
更多推荐


所有评论(0)