type
status
date
slug
summary
tags
category
icon
password
😀
从零了解MLOps和KubeFlow部署,以实现机器学习算法应用工作流闭环。目前项目上特征工程规模量大,处理形式并不复杂,依赖低效“人工”实现“智能”;而其他部门已有成熟的K8S用于生产,直接利用云上部署开发存在限制,故尝试本地化部署测试KubeFlow的工作流及评估迁移难度。 起初,尝试DeployKF-0.1.3,但根据文档部署后不懂如何完整搭建,后利用MiniKube更加“傻瓜式”地完成了服务启动。 如果你也是网络架构的小白,欢迎体验!

📝 MLOps入门介绍

通过胡老师的视频资料,快速理解MLOps的使用。视频回放(社区B站主页)
 

📝 先了解一下KubeFlow

简介

Kubeflow 项目致力于使 Kubernetes 上的机器学习 (ML) 工作流程的部署变得简单、可移植且可扩展。目标是提供一种简单的方法,将最佳的 ML 开源系统部署到不同的基础设施。无论您在哪里运行 Kubernetes,都应该能够运行 Kubeflow。

框架

基于Kubernetes构建,使用配置UI指定工作流所需的ML组件工具,并将工作流部署到公有云、私有云或混合云进行实验和生产。
notion image

核心组件与工作流

  • Central Dashboard, UI可视化前端;
  • Kubeflow Notebooks, 集群内运行基于web的开发环境,对Jupyter、VS Code等提供本机支持,可直接在集群中创建容器;
  • Kubeflow Pipelines, 基于Docker;
  • Katib, 用于AutoML,支持多个框架(TensorFlow, MXNet, PyTorch, XGBoost等 ),支持多个AutoML算法;
  • Training Operators, 多模型框架训练器;包含Scheduling;
  • Multi-Tenancy, 多用户
notion image

📝 本地化部署

📌
系统环境:Windows 11 家庭中文版 22H2 x64 硬件环境:Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz 2.30 GHz; 16GB/256GB

❓DeployKF尝试,失败告终

💡
若报错提示wsl内核进程被占用,可先执行 wsl —shutdown 终止内核后(这个过程将关闭docker)重试

Local-Path-Provisioner部署

部署遇到的问题

  1. wsl中执行kubectl抛出异常;此时win-minikube执行正常
  • 与docker服务的通信异常
    • 在docker desktop中设置-k8s设置重启了服务【有效解决】
  • wsl中和powershell中执行相同语句,显示不同的pods情况。前者是wsl中docker创建,后者在windows中创建
 

✅ K8S & KubeFlow本地化部署

1. 环境配置:wsl2-Ubuntu 安装

官方安装步骤:
关键代码:
了解Linux基础配置和知识

2. 环境配置:Docker Desktop

3. MiniKube的win部署

  • k8s pods结果
    • 红框为minikube基础服务
    • 末尾两个为minikube dashboard服务
notion image
基本操作语句查表
💡
多开powershell,minikube启动的app需要单独一个窗口建立端口代理或tunnel

使用minikube创建KubeFlow服务

💡
待所有节点构建完成,STATUS=Running后即服务启动完成。

一些示例

  • addons list
notion image
  • 拉取kubeflow服务,kubeflow创建后节点情况
notion image
  • 在k8s的dashboard可以查看到namespace的状态
notion image
notion image

一些问题

  1. 运行一段时间后,kubectl(win)就无法访问
notion image
💡
问题:资源不足的问题,minikube 2核 4G 不足以启动kubeflow
 

🤗 总结归纳

当在Windows环境下使用MiniKube部署KubeFlow时,需要考虑一些特定的步骤和配置。以下是一个总结归纳,帮助你成功完成这个任务:

步骤总览:

  1. 安装必要的软件
      • 安装WSL或者Docker:MiniKube 可使用Docker作为虚拟化驱动,其他请详见
      • 安装kubectl:用于与Kubernetes集群进行交互。
      • 安装Minikube:用于在本地启动Kubernetes集群。
  1. 启动MiniKube
      • 在命令行中执行 minikube start
      • 可以使用 -driver 选项指定虚拟化驱动,如 -driver=docker
  1. 配置kubectl
      • MiniKube启动后,设置kubectl的上下文,以便与MiniKube集群通信。
  1. 安装KubeFlow
      • 使用KFDef配置文件或者KFctl工具,按照KubeFlow官方文档指导进行安装。
      • 在Windows环境下,注意一些路径和文件格式可能需要进行调整。
  1. 验证KubeFlow安装
      • 使用kubectl命令或者KubeFlow提供的工具验证KubeFlow的各个组件是否正确运行。

注意事项和调整:

  1. 文件路径格式
      • 在Windows环境下,路径格式与Linux可能不同,需要注意文件路径的斜杠方向。确保配置文件中的路径是正确的。
  1. 网络配置
      • 确保MiniKube能够访问所需的镜像仓库,可以配置代理或者设置合适的网络环境。
  1. 资源配置
      • 需要根据实际资源情况调整KubeFlow的配置文件,特别是Pod的资源请求和限制。
  1. Windows上的权限问题
      • 有时Windows上可能会有权限问题,确保你在运行命令时有足够的权限,或者使用管理员权限运行命令行。
  1. 查看日志和状态
      • 如果遇到问题,查看MiniKube和KubeFlow的日志文件,以便更好地定位和解决问题。

📎 参考文章

 
 
需要补充的是,博客中存在部分文字内容由人工智能语言模型生成的,因此可能与其他来源的内容相似。相关引用已注明出处,Noel 尊重并感谢每位创作者。若有不恰当之处,欢迎联系我与我交流,我将在24h内作出修正。
本博客的目的是为了提供有用的信息和见解。感谢您阅读本博客,文章涉及代码部分属Noel Du创作,转载请注明出处。 2024 Noel Du. All rights reserved.
Amis配置批量操作Amis+SQLModel的条件组合配置