菜单

Docker 设置

相关源文件

本页面记录了 face_recognition 库的 Docker 设置选项。Docker 提供了一种便捷的方式来部署该库,而无需处理复杂的依赖项和系统配置。有关基于包的安装,请参阅 包安装,有关树莓派特定的设置,请参阅 树莓派设置

概述

face_recognition 库提供了多种 Docker 部署选项,以适应不同的用例,从简单的基于 CPU 的识别到 GPU 加速处理以及 Jupyter notebook 环境。

来源: docker/README.md1-57 Dockerfile1-53 Dockerfile.gpu1-41 docker-compose.yml1-16

预构建的 Docker 镜像

最简单的入门方法是使用 Docker Hub 上提供的预构建 Docker 镜像。

可用镜像类型

镜像标签描述用例
cpu-latest, cpu, latest标准 CPU 镜像通用人脸识别,无 GPU 加速
gpu-latest, gpuGPU 加速镜像性能密集型应用
cpu-jupyter-kubeflow带 Jupyter 的 CPU 镜像交互式开发,Kubeflow 集成
gpu-jupyter-kubeflow带 Jupyter 的 GPU 镜像高性能交互式开发

来源: docker/README.md7-14

使用预构建镜像

要为您的应用程序使用预构建的镜像

来源: docker/README.md42-56 docker/Dockerfile-python-example1-18

构建自定义 Docker 镜像

如果您需要自定义设置,可以构建自己的 Docker 镜像。

基于 CPU 的镜像

基于 CPU 的 Dockerfile 安装了所有必需的依赖项和 face_recognition 库。

CPU Dockerfile 中的关键组件

  1. 基础镜像: Python 3.10 slim Bullseye
  2. 系统依赖: 构建工具、图像处理库
  3. Dlib 安装(使用 AVX 指令以提高性能)
  4. face_recognition 库安装
  5. 可选的示例脚本执行

来源: Dockerfile1-53 docker/cpu/Dockerfile1-75

基于 GPU 的镜像

基于 GPU 的镜像通过 NVIDIA CUDA 实现加速,显著提高了大型工作负载的性能。

GPU Dockerfile 中的关键组件

  1. 基础镜像: NVIDIA CUDA 9.0 with cuDNN 7
  2. 系统依赖和编译器
  3. Dlib 使用 CUDA 支持编译
  4. face_recognition 库安装

来源: Dockerfile.gpu1-41

Docker Compose 设置

Docker Compose 提供了一种便捷的方式来配置和运行 face_recognition 容器。提供的 docker-compose.yml 文件演示了如何设置一个基本的人脸识别服务。

此配置

  1. 使用本地 Dockerfile 构建容器
  2. 将当前目录挂载到容器中
  3. 运行一个示例 CNN 人脸检测脚本
  4. 提供 GPU 支持的注释选项

来源: docker-compose.yml1-16

GPU 支持

GPU 支持的先决条件

要使用 GPU 加速容器,您需要

  1. 在主机上安装 NVIDIA GPU 驱动程序
  2. NVIDIA Container Toolkit (nvidia-docker)
  3. 配置 Docker 以使用 NVIDIA 运行时

来源: docker/README.md18-27 Dockerfile.gpu1-41

测试 GPU 设置

要验证您的 GPU 设置是否正常工作

这应该会返回可用的 NVIDIA GPU 数量。如果返回 0,则表示 CUDA 设置有问题。

来源: docker/README.md29-36 Dockerfile.gpu1-41

自定义应用程序部署

使用 face_recognition Docker 镜像部署您自己的应用程序

  1. 创建一个扩展基础镜像的 Dockerfile
  2. 复制您的应用程序代码和需求
  3. 安装额外的依赖项
  4. 指定运行应用程序的命令

示例 Dockerfile 结构

来源: docker/README.md42-56 docker/Dockerfile-python-example1-18 Dockerfile36-42

Jupyter Notebook 支持

提供了带有 Jupyter Notebook 支持的特殊 Docker 镜像,专为以下目的设计:

  1. 交互式开发和实验
  2. 在 Kubeflow 环境中部署
  3. 教育目的和原型设计

这些镜像同时包含 face_recognition 库和 Jupyter 环境,有 CPU 和 GPU 版本可供选择。

来源: docker/README.md38-41

性能考量

使用 Docker 进行人脸识别时,请考虑以下性能因素:

  1. 镜像选择:

    • CPU 镜像可在任何系统上运行,但对于大型工作负载速度较慢。
    • GPU 镜像提供显著更好的性能,但需要 NVIDIA 硬件。
  2. 资源分配:

    • 为 Docker 容器分配足够的内存。
    • 对于 GPU 容器,请考虑根据 GPU 内存限制并行进程的数量。
  3. 卷挂载:

    • 挂载卷以实现与容器的高效数据交换。
    • 考虑使用 Docker 卷进行持久化数据存储。

有关更高级的性能优化技术,请参阅 性能优化

来源: Dockerfile1-53 Dockerfile.gpu1-41 docker-compose.yml1-16