如果您是机器学习工程师,您很可能在某个项目中使用过 Docker – 无论是用于部署模型的推理端点还是自动化机器学习管道以进行训练、评估和部署。Docker 简化了这些流程,确保了生产环境中的一致性和可扩展性。
但问题是:您是否知道 Docker Hub 和 GitHub 上提供的所有 Docker 镜像?这些预构建的镜像可以节省您的时间,因为您无需在本地构建镜像。相反,您可以直接在 Dockerfiles 或 Docker Compose 设置中拉取并使用它们,从而加速开发和部署。
在这篇博客中,我们将探讨为机器学习工作流程设计的 12 个顶级 Docker 容器镜像。其中包括用于开发环境、深度学习框架、机器学习生命周期管理、工作流程编排和大型语言模型的工具。
如果您是 Docker 新手,请参加本Docker 简介课程以了解基础知识。
为什么使用 Docker 容器进行机器学习?
如果您曾经听过“它在我的计算机上运行良好”这句话,那么您就会明白在多个平台和阶段维护一致的开发环境是多么痛苦。这就是 Docker 容器的作用所在,因为它们将代码、依赖项和配置封装到可移植映像中,从而确保不同环境中的一致性。无论底层基础架构如何变化,模型和端点 API 在开发、测试和生产部署期间的行为都相同。
通过隔离依赖项(例如特定版本的 Python、PyTorch 或 CUDA),Docker 可确保实验的可重复性并减少库之间的冲突。
容器化应用程序图。
来源:Docker
您可以与您的团队共享 Docker 映像,他们只需提取映像即可创建多个实例。此过程还通过将模型打包到带有 API 的容器中来简化部署,从而实现与 Kubernetes 等编排工具的无缝集成,以实现可扩展的生产服务。
简而言之,作为一名机器学习工程师,您必须知道如何处理 Docker 镜像并在云中部署 Docker 容器。
通过参加简短的容器化和虚拟化概念课程来了解容器化的核心概念。
开发环境 Docker 容器
要建立无缝的机器学习开发工作流程,您需要一个具有基本工具和库的可靠环境。这些 Docker 容器映像提供预配置的数据科学、编码和实验设置。
1. Python
Python是大多数机器学习项目的骨干,因为几乎所有主要框架和应用程序(例如 TensorFlow、PyTorch 和 scikit-learn)都是围绕它构建的。它的流行延伸到部署,其中 Python 通常用于 Docker 镜像中,以创建用于模型推理的一致环境。例如:
FROM python:3.8
RUN pip install –no-cache-dir numpy pandas
供电
Python 的简单性、广泛的库生态系统以及与 Docker 等工具的兼容性使其成为机器学习开发和部署的首选。
2. Jupyter Notebook 数据科学堆栈
Jupyter Docker Stacks为数据科学和机器学习提供了全面的环境,包括 Jupyter Notebook 和一套流行的数据科学库。您可以轻松地从 Docker Hub 中提取映像并在本地使用。此外,您还可以在云上部署此实例并与您的团队共享。
要运行 Jupyter Data Science Notebook,请使用以下命令:
docker run -it –rm -p 8888:8888 jupyter/datascience-notebook
供电
它还可以与 Dockerfile 一起使用,因此您不必使用 pip 安装 Python 包。您只需运行应用程序或执行 Python 脚本即可。以下是示例 Dockerfile:
FROM jupyter/datascience-notebook:latest
供电
该镜像包含 NumPy、pandas、matplotlib 和 scikit-learn 等热门库,以及用于交互式计算的 Jupyter Notebook。它非常适合数据探索、可视化和机器学习实验,是数据科学界的必备工具。
有关更多信息,请查看博客“Docker for Data Science:简介”,您可以在其中了解 Docker 命令、docker 化机器学习应用程序以及行业范围内的最佳实践。
3.Kubeflow Notebooks
Kubeflow Notebook镜像旨在在 Kubernetes pod 内工作,这些 Kubernetes pod 是为 Kubernetes 上的机器学习工作流而构建的。您可以从三种类型的笔记本中进行选择:JupyterLab、RStudio 和 Visual Studio Code(代码服务器)。
通过运行以下命令在本地进行测试:
docker run -it –rm -p 8888:8888 kubeflownotebookswg/jupyter-pytorch
供电
Kubeflow Notebooks 镜像在 Kubernetes 作为底层基础架构的环境中特别有用。它们促进协作和可扩展的机器学习项目,并与 Kubernetes 无缝集成,以实现可扩展和可重复的机器学习工作流程。
通过参加“使用Docker 和 Kubernetes 进行容器化和虚拟化”技能课程,了解Docker 和 Kubernetes。此交互式课程将允许您在现代环境中构建和部署应用程序。
深度学习框架 Docker 容器
深度学习框架需要优化的训练和推理环境。这些容器镜像预先打包了必要的依赖项,节省了安装和设置时间。PyTorch是领先的深 手机号码数据 度学习框容器镜像架之一,以其构建深度神经网络的模块化方法而闻名。您可以使用命令轻松创建 Dockerfile 并运行模型推理,而无需安装 PyTorch 包pip。供电
PyTorch Docker 镜像广泛用于在研究和生产环境中训练和部署模型。它为开发和部署深度学习模型提供了优化的环境,特别是在自然语言处理和计算机视觉任务中。
5. TensorFlow
TensorFlow是另一个在学术界和工业界广泛采用的领先深度学习框架。它与 Google 生态系统以及所有支持 TensorFlow 的软件包配合良好,可用于实验跟踪和模型服务。
FROM tensorflow/tensorflow:latest
RUN python main.py
供电
TensorFlow Docker 镜像包含 TensorFlow Python 包及其依赖项,通常针对 GPU 加速进行了优化。这使其成为构建和部署机器学习模型的容器镜像理想选择,尤其是在大规模生产环境中。
6.NVIDIA CUDA 深度学习运行时
NVIDIA CUDA深度学习运行时对于加速 GPU 上的深度学习计算至关重要。您可以轻松地将其添加到 Dockerfile 中,无需手动设置 CUDA 来运行 GPU 加速的机器学习任务。
FROM nvidia/cuda
RUN python main.py
供电
NVIDIA CUDA Docker 镜像提供了针容器镜像对使用 NVIDIA GPU 的深度学习应用程序优化的运行时环境,显著提高了深度学习模型的性能。
您可以在Polars GPU 加速博客文章中了解有关 GPU 如何加速数据科学工作流程的更多信息。
机器学习生命周期管理 Docker 容器
管理机器学习生命周期(从实验到部署)需要专门的工具。这些 Docker 镜像简化了版本控制、跟踪和部署。
7. MLflow
MLflow是一个用于管理机器学 LGPD 与税法的关系 习生命周期(包括实验、可重复性和部署)的开源平台。您可以使用以下命令运行 MLflow 服务器,该命令将提供 MLflow 服务器用于存储和版本控制实验、模型和工件。它还为管理人员提供了一个交互式仪表板来查看实验和模型。
docker run -it –rm -p 9000:9000 ghcr.io/mlflow/mlflow
供电
8. 拥抱脸部变形金刚
Hugging Face Transformers广泛应用于各种应用,从寻找大型语言模型到构建图像生成模型。它建立在 PyTorch、TensorFlow 和其他主要深度学习框架之上。这意味着您可以使用它来加载任何机器学习模型、对其进行微调、跟踪性能并将您的工作保存到 Hugging Face
供
Hugging Face Transformers Docker 镜像因快速高效地微调和部署大型语言模型而广受欢迎。总体而言,现代 AI 生态系统严重依容器镜像赖于此软件包,您可以将其合并到 Dockerfile 中以充分利用其所有功能,而不必担心依赖关系。
工作流编排 Docker 容器
机器学习项目通常涉及需要自动化和调度的复杂工作流程。这些工作流程编排工具有助于简化机器学习流程。
9. 气流
Apache Airflow是一个用于以编程 WhatsApp 号码 方式创建、调度和监控工作流的 开源平台。供电
Airflow 被广泛用于编排复杂的机器学习管道。它提供了一个以有向无环图(DAG) 形式编写、调度和监控工作流的平台,使其成为机器学习工程中自动化和管理数据工作流不可或缺的一部分。
10. n8n
n8n是一款开源工作流自动化工具,因其灵活性和易用性而广受欢迎,尤其是在自动化机器学习工作流方面。您可以在本地运行它,并使用拖放界面构建自己的 RAG 应用程序。
供电
n8n 提供了一个用户友好的界容器镜像面,用于创建集成各种服务和 API 的工作流。它对于自动执行重复任务以及连接机器学习项目中的不同系统和服务特别有用。
要了解有关使用 Python 创建机器学习工作流程的更多信息,请考虑参加使用Python 设计机器学习工作流程课程。
大型语言模型 Docker 容器
随着 LLM 变得越来越普及,专门的 Docker 容器有助于有效地部署和扩展这些模型。
11. 成为
Ollama旨在本地部署和运行大型语言模型。使用 Ollama Docker,您可以下载和提供 LLM,从而将它们集成到您的应用程序中。这是在生产中运行量化和完整大型语言模型的最简单方法。
docker run -it –rm ollama/ollama
供电
12. Qdrant
Qdrant是一个矢量搜索引擎,用于部署矢量相似性搜索应用程序。它带有一个仪表板和一个服务器,供您连接以快速发送和检索矢量数据。供电
Qdrant 提供用于高效相似性搜索容器镜像和高维数据聚类的工具。它在推荐系统、图像和文本检索以及语义搜索等应用中特别有用,这些应用在涉及大型语言模型的机器学习项目中越来越重要。
结论
通过利用这些容器,数据科学家和工程师可以构建一致、可重复且可扩展的项目环境,从而简化工作流程并提高生产力。
学习过程的下一步是使用这些 Docker 容器镜像构建您自己的项目!
如果您想了解如何使用最新的 AI 开发工具构建自己的 AI 应用程序,请查看开发 AI 应用程序轨道。