PaddlePaddle 开源产业级文档印章识别PaddleX-Pipeline “seal_recognition”模型 开箱即用篇(一)

AI时代到来,各行各业都在追求细分领域垂直类深度学习模型,今天给大家介绍一个PaddlePaddle旗下,基于PaddleX Pipeline 来完成印章识别的模型“seal_recognition”。

官方地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/pipeline_usage/tutorials/ocr_pipelines/seal_recognition.md

下面开始在本地使用PaddleX:

一、安装Python:

        推荐使用conda(可选)。

       Python版本:3.8.19(推荐版本)。

二、安装CUDA

        无论运行pytorch、tensflow还是paddlepaddle等深度学习框架,均推荐在GPU上进行推理。若要使用GPU进行推理,请在安装CUDA前提前更新好本机的显卡驱动。

        CUDA版本:11.8(推荐)

        CUDA参考地址:https://developer.nvidia.com/cuda-11-8-0-download-archive

三、安装PaddlePaddle

        既然我们想使用PaddlePaddle深度学习框架旗下的Pipeline,那肯定要提前安装好PaddlePaddle深度学习框架。

        PaddlePaddle版本:3.0.0-beta2

        PaddlePaddle参考地址:飞桨PaddlePaddle-源于产业实践的开源深度学习平台

至此,我们的基础环境已经安装完成,接下来就可以开始进行使用Pipeline了。

四、获取PaddleX

        PaddleX是什么?引用官方介绍:

PaddleX 3.0 是基于飞桨框架构建的低代码开发工具,它集成了众多开箱即用的预训练模型,可以实现模型从训练到推理的全流程开发,支持国内外多款主流硬件,助力AI 开发者进行产业实践。

模型丰富一键调用:将覆盖文本图像智能分析、OCR、目标检测、时序预测等多个关键领域的 200+ 飞桨模型整合为 19 条模型产线,通过极简的 Python API 一键调用,快速体验模型效果。同时支持 20+ 单功能模块,方便开发者进行模型组合使用。

         官方地址:GitHub - PaddlePaddle/PaddleX: All-in-One Development Tool based on PaddlePaddle(飞桨低代码开发工具)

         简单来说,就是PaddlePaddle研发出来的一套开箱即用产品的底座,安装了PaddleX后,就可以通过几行命令来完成不同的任务,比如几行命令完成目标检测,几行命令完成文字识别等。

        安装PaddleX的几种方式:

一、Wheel包安装模式:

        若你只是希望快速完成模型的推理和集成,那么推荐您使用更便捷更轻量的Wheel包安装模式。快速安装轻量级的Wheel包之后,您即可基于PaddleX支持的所有模型进行推理,并能直接集成进您的项目中。

        

        pip install https://paddle-model-ecology.bj.bcebos.com/paddlex/whl/paddlex-3.0.0b1-py3-none-any.whl

二、插件安装模式:

        若您使用PaddleX的应用场景为二次开发 (例如重新训练模型、微调模型、自定义模型结构、自定义推理代码等),那么推荐您使用功能更加强大的插件安装模式。

安装您需要的PaddleX插件之后,您不仅同样能够对插件支持的模型进行推理与集成,还可以对其进行模型训练等二次开发更高级的操作。

       

        git clone https://github.com/PaddlePaddle/PaddleX.git
        cd PaddleX
        pip install -e .
        paddlex --install PaddleXXX  # 例如PaddleOCR

五、基于PaddleX安装第一个插件:PaddleOCR

paddlex --install PaddleOCR

六、几行代码完成快速推理(调用文心一言大模型、默认不可修改,需要Access_token,按需付费。 若无需大语言模型,看查看第七条推理方式):

````
        from paddlex import create_pipeline

        pipeline = create_pipeline(
            pipeline="PP-ChatOCRv3-doc",
            llm_name="ernie-3.5",
            llm_params={"api_type": "qianfan", "ak": "", "sk": ""} # 使用千帆接口,请填入您的ak与sk,否则无法调用大模型
            # llm_params={"api_type": "aistudio", "access_token": ""} # 或者使用AIStudio接口,请填入您的access_token,否则无法调用大模型
            )

        visual_result, visual_info = pipeline.visual_predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/PaddleX3.0/doc_images/practical_tutorial/PP-ChatOCRv3_doc_seal/test.png")

        for res in visual_result:
            res.save_to_img("./output")
            res.save_to_html('./output')
            res.save_to_xlsx('./output')

        vector = pipeline.build_vector(visual_info=visual_info)
        chat_result = pipeline.chat(
            key_list=["印章名称"],
            visual_info=visual_info,
            vector=vector,
            )
        chat_result.print()
    ````

七、几行代码完成快速推理(无需大预言模型,支持本地化部署):

 ````
        from paddlex import create_pipeline

        pipeline = create_pipeline(pipeline="seal_recognition")

        output = pipeline.predict("./test_images/1387.jpg")
        for res in output:
            res.print() ## 打印预测的结构化输出
            res.save_to_img("./output_images/") ## 保存可视化结果
    ````

八、查看结果

写在最后:下一章节,完成印章识别“seal_recognition”模型的微调与训练。

<think>好的,用户让我介绍下翻译命令中的参数--pipeline-parallel-size,也就是PIPELINE_PARALLEL_SIZE,或者简写为-pp。首先,我需要理解这个参数的具体含义和作用。 用户提到的这个参数看起来和并行计算有关,特别是流水线并行(Pipeline Parallelism)。在深度学习中,模型并行通常分为两种:数据并行和模型并行,而模型并行又可以细分为流水线并行和张量并行。流水线并行的核心思想是将模型的不同层分配到不同的设备上,按阶段执行,类似工厂的流水线,从而提高资源利用率和训练速度。 接下来,我需要确认用户的需求。用户可能是在使用某个深度学习框架(比如PyTorch、Megatron-LM或DeepSpeed)时遇到了这个参数,需要了解如何正确设置它。也有可能他们在编写自己的分布式训练脚本,需要理解这个参数的意义。 用户给出的参数名称和简写形式,说明这很可能来自某个具体的库或工具。例如,DeepSpeed或Megatron-LM这类支持大规模模型训练的框架常用类似的参数。我需要回忆这些框架中相关参数的文档,确保解释准确。 参数的作用是设置流水线阶段的数目,也就是将模型分成多少个部分来并行处理。比如,如果设置为4,模型会被分割成4个阶段,每个阶段在不同的GPU上运行。这样,在前向传播和反向传播时,每个阶段处理不同的微批次,通过流水线的方式减少空闲时间,提高效率。 然后,我需要考虑用户可能的困惑点。他们可能不清楚这个参数与数据并行或张量并行的区别,或者如何根据硬件配置选择合适的数值。例如,流水线并行的阶段数通常与可用的GPU数量有关,但也要考虑模型的结构是否容易分割,以及每个阶段的负载是否均衡。 另外,用户可能想知道设置这个参数的具体效果,比如对训练速度的影响,或者是否会影响模型的收敛性。这时候需要解释合理设置的重要性,过大的阶段数可能导致通信开销增加,而过小则可能无法充分利用资源。 还需要注意,不同的框架可能有不同的实现细节。例如,在DeepSpeed中,流水线并行需要与模型的分割策略配合使用,可能需要用户显式地定义模型的分段点,或者框架自动进行分割。这时候用户可能需要参考具体框架的文档来调整模型结构。 最后,总结这个参数的作用,并给出示例用法,帮助用户更好地理解如何应用。例如,在命令行中如何指定这个参数,或者如何在配置文件中设置。同时,提醒用户根据硬件资源和模型结构进行调整,以达到最佳性能。</think>以下是对参数 `--pipeline-parallel-size`(简写为 `-pp` 或 `PIPELINE_PARALLEL_SIZE`)的详细解释: --- ### **参数定义** - **名称**:`--pipeline-parallel-size`(简写 `-pp`) - **含义**:指定**流水线并行(Pipeline Parallelism)的阶数**,即模型在流水线并行策略下被切分的阶段(Stage)数量。 --- ### **核心作用** 在分布式训练(尤其是大规模模型训练)中,流水线并行通过将模型按层划分为多个阶段,分配到不同的设备(如GPU)上执行。每个设备依次处理不同微批次(Micro-batch)的数据,从而**提升训练效率**并**降低显存占用**。 - **公式示例**:若总层数为 $L$,流水线阶数为 $N$,则每个阶段分配的层数约为 $\frac{L}{N}$。 --- ### **典型应用场景** 1. **大模型训练**(如千亿参数模型- 当单设备显存不足时,通过切分模型降低显存需求。 2. **异构计算集群** - 在多设备环境下,通过流水线调度提高设备利用率。 3. **通信优化** - 与数据并行(Data Parallelism)、张量并行(Tensor Parallelism)结合,构建混合并行策略。 --- ### **参数设置建议** | **参数值** | **适用场景** | **注意事项** | |------------|--------------------------------------------|---------------------------------------| | **2** | 小规模集群(如2台设备) | 需确保模型层数可被均匀分割 | | **4~8** | 中等规模模型(如百亿参数) | 需平衡流水线气泡(Bubble)与通信开销 | | **>8** | 超大规模模型(如GPT-3模型) | 需优化微批次大小与设备间带宽 | --- ### **示例用法** #### 1. **命令行工具(如Megatron-LM、DeepSpeed)** ```bash # 启动训练脚本时指定流水线并行阶数为4 python train.py --pipeline-parallel-size 4 # 或简写为 python train.py -pp 4 ``` #### 2. **配置文件(如DeepSpeed)** ```json { "train_batch_size": 1024, "pipeline": { "pipeline_parallel_size": 4 } } ``` --- ### **技术细节** 1. **流水线气泡(Bubble)** - 由于设备间依赖关系,部分设备会处于空闲状态。 - **优化策略**:增加微批次数量(`gradient_accumulation_steps`)以减少气泡比例。 2. **通信开销** - 流水线并行需传递激活值(Activations)和梯度,需确保设备间带宽充足。 3. **与张量并行结合** - 若同时使用张量并行(如设置 `--tensor-parallel-size=8`),总并行度为 $N_{\text{pipeline}} \times N_{\text{tensor}}$。 --- ### **常见问题** 1. **如何选择阶数?** - 参考公式:$N_{\text{pipeline}} \leq \frac{\text{模型层数}}{\text{单设备最大支持层数}}$ - 需通过实验调整,避免阶段负载不均衡。 2. **是否影响收敛性?** - 流水线并行本身不影响模型收敛,但微批次大小需与全局批次大小协调。 --- 如果需要进步分析具体框架(如PyTorch、DeepSpeed)的实现差异,可以补充说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值