FfDL社区案例研究:如何使用Fashion MNIST实现图像分类与模型部署
【免费下载链接】FfDLFabric for Deep Learning (FfDL, pronounced fiddle) is a Deep Learning Platform offering TensorFlow, Caffe, PyTorch etc. as a Service on Kubernetes项目地址: https://gitcode.com/gh_mirrors/ff/FfDL
Fabric for Deep Learning(FfDL)是一个强大的深度学习平台,能够在Kubernetes上提供TensorFlow、Caffe、PyTorch等框架的即服务能力。本案例研究将详细展示如何利用FfDL实现Fashion MNIST数据集的图像分类模型训练与部署,帮助新手用户快速掌握深度学习项目的完整流程。
FfDL与Fashion MNIST项目架构解析
FfDL提供了端到端的深度学习解决方案,从模型训练到部署的全流程都可以在Kubernetes环境中高效完成。Fashion MNIST案例采用了分布式训练架构,结合Seldon Core进行模型服务,形成了完整的机器学习 pipeline。
该架构主要包含三个核心组件:
- FfDL平台:提供CLI、SDK和Web界面三种访问方式,支持分布式深度学习训练
- Seldon Core:负责模型服务部署,提供高效的推理能力
- 多框架支持:兼容TensorFlow、Keras、PyTorch等主流深度学习框架
准备工作:环境搭建与数据集准备
前置条件
- 已部署FfDL的Kubernetes集群(至少4 CPU和8GB内存)
- 安装kubectl命令行工具
- 配置对象存储服务(S3兼容)
数据集介绍
Fashion-MNIST是Zalando提供的服装图像数据集,包含60,000个训练样本和10,000个测试样本,每个样本为28x28的灰度图像,共分为10个类别(如T恤、裤子、外套等)。该数据集旨在替代传统MNIST数据集,用于 benchmark 机器学习算法。
环境配置步骤
克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/ff/FfDL cd FfDL设置环境变量:
export VM_TYPE=none export PUBLIC_IP=<Cluster Public IP> node_ip=$(make --no-print-directory kubernetes-ip)配置S3存储:
s3_port=$(kubectl get service s3 -o jsonpath='{.spec.ports[0].nodePort}') s3_url=http://$node_ip:$s3_port export AWS_ACCESS_KEY_ID=test; export AWS_SECRET_ACCESS_KEY=test; export AWS_DEFAULT_REGION=us-east-1; s3cmd="aws --endpoint-url=$s3_url s3"创建存储桶并上传数据:
$s3cmd mb s3://fashion-mnist $s3cmd mb s3://mnist-trained-model mkdir tmp for file in t10k-images-idx3-ubyte.gz t10k-labels-idx1-ubyte.gz train-images-idx3-ubyte.gz train-labels-idx1-ubyte.gz; do test -e tmp/$file || wget -q -O tmp/$file https://github.com/zalandoresearch/fashion-mnist/raw/master/data/fashion/$file $s3cmd cp tmp/$file s3://fashion-mnist/$file done
使用FfDL训练Fashion MNIST模型
模型结构
本案例使用的模型是一个卷积神经网络(CNN),包含3个卷积层和2个全连接层,在30个epochs内以128的 batch size 进行训练。模型代码位于demos/fashion-mnist-training/fashion-train/fashion-training/experiment.py。
训练步骤
1. 准备FfDL客户端
restapi_port=$(kubectl get service ffdl-restapi -o jsonpath='{.spec.ports[0].nodePort}') export DLAAS_URL=http://$node_ip:$restapi_port; export DLAAS_USERNAME=test-user; export DLAAS_PASSWORD=test; # 获取适合您系统的CLI CLI_CMD=$(pwd)/cli/bin/ffdl-$(if [ "$(uname)" = "Darwin" ]; then echo 'osx'; else echo 'linux'; fi)2. 创建Manifest文件
Manifest文件(demos/fashion-mnist-training/fashion-train/manifest.yml)包含训练作业的配置信息,如资源需求、框架版本、数据来源等。
3. 提交训练作业
cd demos/fashion-mnist-training/fashion-train $CLI_CMD train manifest.yml fashion-training4. 通过UI提交训练作业(可选)
如果偏好图形界面,可以通过FfDL Web UI提交训练作业:
- 压缩模型代码:
pushd fashion-training && zip fashion-training * && popd - 访问FfDL Web界面,上传模型压缩包和manifest文件
- 点击"Submit Training Job"按钮
使用Seldon部署训练好的模型
Seldon是一个开源平台,用于在Kubernetes上部署机器学习模型。结合FfDL和Seldon,可以实现模型的无缝部署和服务。
部署步骤
1. 安装Seldon和S2I
# 安装Seldon Core kubectl apply -f https://github.com/SeldonIO/seldon-core/releases/download/v1.15.0/seldon-core-operator.yaml # 安装S2I (Source-to-Image) # 根据您的操作系统安装相应版本:https://github.com/openshift/source-to-image#installation2. 构建Seldon模型镜像
cd demos/fashion-mnist-training/seldon-deployment s2i build . seldonio/seldon-core-s2i-python2 <your-dockerhub-username>/fashion-mnist-model docker push <your-dockerhub-username>/fashion-mnist-model3. 创建存储密钥
编辑bucket-secret.yaml文件,填入对象存储的凭证信息:
kubectl apply -f bucket-secret.yaml4. 部署模型
修改fashion-seldon.json文件,设置训练ID、存储桶名称和镜像地址,然后部署:
kubectl apply -f fashion-seldon.json构建Fashion MNIST Web应用
为了更直观地展示模型效果,可以构建一个Web应用来上传图像并获取预测结果。
应用结构
Web应用代码位于demos/fashion-mnist-training/fashion-mnist-webapp目录,包含以下主要组件:
- 前端界面:使用HTML/CSS/JavaScript实现
- 后端服务:基于Flask的Python应用
- 模型调用:与Seldon部署的模型服务交互
应用功能
- 上传服装图像
- 显示模型预测结果
- 支持多种图像格式(.png, .jpg等)
构建和部署应用
cd demos/fashion-mnist-training/fashion-mnist-webapp docker build -t fashion-mnist-webapp . kubectl apply -f fashion-mnist-webapp.yaml模型测试与结果分析
测试数据准备
项目提供了示例测试图像,位于demos/fashion-mnist-training/sample-test-data目录,包含T恤、外套、裙子等多种服装类型的图片。
模型预测结果
模型能够对输入图像进行分类,并返回每个类别的置信度。以下是一些对抗性样本的预测结果对比:
性能优化建议
- 增加训练epochs数量以提高准确率
- 调整模型结构,增加卷积层或全连接层
- 使用数据增强技术扩充训练集
- 尝试不同的优化器和学习率调度策略
总结与下一步
通过本案例研究,我们展示了如何使用FfDL在Kubernetes上训练和部署Fashion MNIST图像分类模型。从环境搭建、数据准备、模型训练到部署和应用开发,完整覆盖了深度学习项目的各个环节。
关键收获
- FfDL提供了简单易用的深度学习训练平台
- Kubernetes环境确保了训练和部署的可扩展性
- Seldon Core简化了模型服务的部署流程
- Web应用可以直观展示模型效果
后续学习路径
- 尝试使用不同的深度学习框架(如PyTorch)重实现模型
- 探索FfDL的分布式训练功能,提高训练效率
- 学习模型优化技术,减小模型大小并提高推理速度
- 研究模型监控和性能评估方法
希望本案例能够帮助您快速上手FfDL平台,并为您的深度学习项目提供参考!
【免费下载链接】FfDLFabric for Deep Learning (FfDL, pronounced fiddle) is a Deep Learning Platform offering TensorFlow, Caffe, PyTorch etc. as a Service on Kubernetes项目地址: https://gitcode.com/gh_mirrors/ff/FfDL
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考