端侧大模型实践 - 端侧大模型极简版Demo版落地概述

目标:Hadoop → Spark → 大模型轻量化 → 端侧部署 全流程Demo

实现上述目标 最简单、最易落地的场景是「文本分类轻量化部署」 —— 比如基于企业日志/客服文本,用 Hadoop 预处理数据、训练通用文本分类大模型,再轻量化压缩后部署到手机/嵌入式设备(端侧)做本地文本分类,这个场景覆盖全链路且技术门槛最低,无需复杂硬件和业务逻辑。

为什么选这个场景?

  • 数据侧:文本数据易获取(日志、公开语料)、预处理简单(Hadoop/Spark 几行代码就能清洗),无需处理图像/视频等复杂数据;
  • 模型侧:飞桨(PaddlePaddle)有成熟的文本分类预训练模型(如 ERNIE 3.0 轻量版),微调代码极简,且支持一键轻量化压缩,纯CPU环境即可训练
  • 端侧部署:飞桨的 Paddle Lite 框架专门适配端侧,支持手机(Android/iOS)、树莓派等设备,部署脚本开箱即用;
  • 全链路闭环:从 Hadoop 存数据 → 训练模型 → 轻量化 → 端侧运行,完整覆盖你要的「大数据→大模型→端侧」链路,且效果可直观验证(输入文本出分类结果)。

最简落地 Demo 全流程(一步都不绕)

前置条件(极简版)

  1. Hadoop 集群(仅需 HDFS + Spark,单机伪分布式也可);
  2. 一台普通服务器/PC(纯CPU即可训练轻量模型,无需GPU);
  3. 一部 Android 手机(端侧部署,或用模拟器);
  4. 依赖:paddlepaddle>=2.5(CPU版本)、paddlenlppaddlelitepyspark

步骤 1:Hadoop 侧预处理文本数据(10 分钟搞定)

目标:准备「客服咨询文本 + 分类标签」的训练数据(比如「退款咨询」「物流咨询」「产品咨询」3 类)。

1.1 上传原始数据到 HDFS

# 1. 本地创建简易数据集(text,label 格式)
echo -e "我的订单怎么还没发货,物流咨询\n申请退款多久到账,退款咨询\n产品保质期多久,产品咨询" > ./customer_service.csv

# 2. 上传到 HDFS
hadoop fs -mkdir -p /user/demo/data
hadoop fs -put ./customer_service.csv /user/demo/data/

【已搞定】《端侧大模型 Hadoop + Spark 配置方案》: https://www.cnblogs.com/renhui/p/19603327

1.2 Spark 极简清洗(去空、去重)

编写 clean_data.py

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("DemoClean").master("yarn").getOrCreate()
# 读取 HDFS 数据
df = spark.read.csv("hdfs:///user/demo/data/customer_service.csv", header=False, encoding="utf-8")
# 清洗:去空行、去重
clean_df = df.filter(df._c0.isNotNull()).filter(df._c1.isNotNull()).dropDuplicates()
# 保存清洗后的数据到 HDFS
clean_df.write.csv("hdfs:///user/demo/data/clean_data", header=False, mode="overwrite", encoding="utf-8")
spark.stop()

执行清洗:

spark-submit --master yarn clean_data.py

【已搞定】《数据清洗》:https://www.cnblogs.com/renhui/p/19606111

步骤 2:训练轻量文本分类大模型(20 分钟搞定)

目标:基于 Hadoop 清洗后的数据,在纯CPU环境下训练 ERNIE 3.0 轻量版模型,核心代码极简且鲁棒。

2.1 环境准备(CPU版本)

# 卸载GPU版本(如有)
pip uninstall paddlepaddle-gpu -y
# 安装CPU版本PaddlePaddle
pip install paddlepaddle==2.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装其他依赖
pip install paddlenlp hdfs3 pyspark -i https://pypi.tuna.tsinghua.edu.cn/simple

2.2 读取 HDFS 数据并训练

整个过程参照这个:https://www.cnblogs.com/renhui/p/19608104

步骤 3:模型轻量化(10 分钟搞定)

目标:将训练好的模型压缩为端侧可运行的格式(Paddle Lite 支持),减小体积、提升速度。
编写 lite_optimize.py

from paddlelite.lite import *

# 1. 初始化优化器
opt = Opt()
# 2. 设置原始模型路径
opt.set_model_file("./ernie_demo_model/model_state.pdmodel")
opt.set_param_file("./ernie_demo_model/model_state.pdiparams")
# 3. 设置优化目标(适配手机arm架构)
opt.set_valid_places("arm")
opt.set_model_type("naive_buffer")  # 端侧轻量化格式
# 4. 执行优化,生成端侧模型
opt.run("./ernie_lite_model")
print("模型轻量化完成,输出路径:./ernie_lite_model")

执行轻量化:

python3 lite_optimize.py

步骤 4:端侧(Android 手机)部署(15 分钟搞定)

目标:在手机上运行轻量化模型,实现本地文本分类。

4.1 准备端侧运行环境

  1. 下载 Paddle Lite 预编译库:https://github.com/PaddlePaddle/Paddle-Lite/releases(选 Android/arm64-v8a 版本);
  2. 新建 Android 项目,将 ernie_lite_model 拷贝到 assets 目录,引入 Paddle Lite 库。

4.2 端侧核心运行代码(Java 极简版)

import com.baidu.paddle.lite.MobileConfig;
import com.baidu.paddle.lite.Predictor;
import com.baidu.paddle.lite.Tensor;

// 初始化预测器
MobileConfig config = new MobileConfig();
config.setModelFromFile("assets/ernie_lite_model"); // 轻量化模型路径
Predictor predictor = Predictor.createPaddlePredictor(config);

// 输入文本(模拟:需先分词转ID,这里简化用训练时的示例ID)
int[] inputIds = {101, 2769, 4638, 3300, 752, 671, 3736, 102}; // 对应"我的订单怎么还没发货"
Tensor inputTensor = predictor.getInput(0);
inputTensor.resize(new long[]{1, inputIds.length});
inputTensor.setData(inputIds);

// 执行预测
predictor.run();

// 获取输出(分类结果)
Tensor outputTensor = predictor.getOutput(0);
float[] output = outputTensor.getFloatData();
// 解析结果:取最大值对应的标签
int label = 0;
float max = output[0];
for (int i = 1; i < output.length; i++) {
    if (output[i] > max) {
        max = output[i];
        label = i;
    }
}
// 输出分类结果
String[] labelNames = {"物流咨询", "退款咨询", "产品咨询"};
System.out.println("分类结果:" + labelNames[label]); // 预期输出:物流咨询

4.3 运行验证

将 Android 项目打包成 APK 安装到手机,运行后输入文本(或直接用示例ID),即可在手机本地看到分类结果,无需联网调用云端模型。


总结

  1. 核心场景:文本分类轻量化部署(客服文本/日志分类)是「Hadoop→大模型→端侧」全链路最简落地场景,数据/模型/部署都无额外复杂度;
  2. 关键适配点:全程无需GPU,通过限定文本长度、小批量训练、降低学习率等优化,保证纯CPU环境下高效完成模型训练;
  3. 验证标准:能从 HDFS 读取数据→CPU训练出模型→轻量化→端侧本地运行出分类结果,即完成 Demo 核心目标。
posted @ 2026-02-10 20:02  灰色飘零  阅读(28)  评论(0)    收藏  举报