Trang chủ Thủ Thuật Cách sử dụng GPU NVIDIA với Docker Containers

Cách sử dụng GPU NVIDIA với Docker Containers

0
53

Cách sử dụng GPU NVIDIA với Docker Containers

Graphic showing the NVIDIA and Docker logos

Bộ chứa Docker không tự động nhìn thấy GPU của hệ thống của bạn. Điều này làm giảm hiệu suất trong các khối lượng công việc phụ thuộc vào GPU, chẳng hạn như các khuôn khổ học máy. Đây là cách hiển thị GPU NVIDIA của máy chủ lưu trữ của bạn vào vùng chứa của bạn.

Làm cho GPU hoạt động trong Docker

Bộ chứa Docker chia sẻ hạt nhân của máy chủ lưu trữ của bạn nhưng mang theo hệ điều hành và gói phần mềm của riêng chúng. Điều này có nghĩa là chúng thiếu trình điều khiển NVIDIA được sử dụng để giao tiếp với GPU của bạn. Docker thậm chí không thêm GPU vào vùng chứa theo mặc định, do đó, một docker run đơn giản sẽ không nhìn thấy phần cứng của bạn.

Ở cấp độ cao, để GPU của bạn hoạt động là một quy trình gồm hai bước: cài đặt trình điều khiển trong hình ảnh của bạn, sau đó hướng dẫn Docker thêm thiết bị GPU vào vùng chứa của bạn trong thời gian chạy.

Hướng dẫn này tập trung vào các phiên bản CUDA và Docker hiện đại. Bản phát hành mới nhất của Bộ công cụ vùng chứa NVIDIA được thiết kế cho sự kết hợp của CUDA 10 và Docker Engine 19.03 trở lên. Các bản dựng cũ hơn của CUDA, Docker và trình điều khiển NVIDIA có thể yêu cầu các bước bổ sung.

Thêm trình điều khiển NVIDIA

Đảm bảo rằng bạn có trình điều khiển NVIDIA hoạt động bình thường trên máy chủ của mình trước khi bạn tiếp tục với cấu hình Docker của mình. Bạn sẽ có thể chạy nvidia-smi thành công và xem tên GPU, phiên bản trình điều khiển và phiên bản CUDA của bạn.

7ca3462c

Quảng cáo

Để sử dụng GPU của bạn với Docker, hãy bắt đầu bằng cách thêm Bộ công cụ vùng chứa NVIDIA vào máy chủ của bạn. Điều này tích hợp vào Docker Engine để tự động định cấu hình các vùng chứa của bạn để hỗ trợ GPU.

Thêm kho lưu trữ gói của bộ công cụ vào hệ thống của bạn bằng cách sử dụng lệnh ví dụ:

phân phối = $ (. / etc / os-release; echo $ ID $ VERSION_ID) 
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key thêm - 
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

Tiếp theo, cài đặt nvidia-docker2 trên máy chủ của bạn:

apt-get cập nhật
apt-get install -y nvidia-docker2

Khởi động lại daemon Docker để hoàn tất cài đặt:

sudo systemctl khởi động lại docker

Bộ công cụ vùng chứa bây giờ sẽ hoạt động. Bạn đã sẵn sàng để bắt đầu một vùng chứa thử nghiệm.

Bắt đầu một vùng chứa với quyền truy cập GPU

Vì Docker không cung cấp GPU của hệ thống của bạn theo mặc định, bạn cần tạo vùng chứa có --gpus để phần cứng của bạn hiển thị. Bạn có thể chỉ định các thiết bị cụ thể để bật hoặc sử dụng từ khóa all

Các nvidia/cuda được định cấu hình sẵn bằng các mã nhị phân CUDA và các công cụ GPU. Khởi động vùng chứa và chạy lệnh nvidia-smi để kiểm tra GPU của bạn có thể truy cập được. Đầu ra phải khớp với những gì bạn đã thấy khi sử dụng nvidia-smi trên máy chủ của bạn. Phiên bản CUDA có thể khác nhau tùy thuộc vào các phiên bản bộ công cụ trên máy chủ lưu trữ của bạn và trong hình ảnh vùng chứa đã chọn của bạn.

docker run -it --gpus tất cả nvidia / cuda: 11.4.0-base-ubuntu20.04 nvidia-smi

c5d24934

Chọn hình ảnh cơ sở

Sử dụng một trong các nvidia/cuda là cách nhanh nhất và dễ nhất để tải công việc GPU của bạn chạy trong Docker. Nhiều biến thể khác nhau có sẵn; chúng cung cấp một ma trận các tùy chọn hệ điều hành, phiên bản CUDA và phần mềm NVIDIA. Các hình ảnh được xây dựng cho nhiều kiến trúc.

Mỗi thẻ có định dạng sau:

11.4.0-base-ubuntu20.04
  • 11.4.0 – Phiên bản CUDA.
  • base – Hình ảnh hương vị.
  • ubuntu20.04 – Phiên bản hệ điều hành.
Quảng cáo

Ba hương vị hình ảnh khác nhau có sẵn. base là một tùy chọn tối thiểu với các tệp nhị phân thời gian chạy CUDA cần thiết. runtime là một tùy chọn đầy đủ tính năng hơn bao gồm các thư viện toán học CUDA và NCCL cho giao tiếp giữa các GPU. Biến thể thứ ba là devel cung cấp cho bạn mọi thứ từ runtime cũng như tiêu đề và các công cụ phát triển để tạo hình ảnh CUDA tùy chỉnh.

Nếu một trong những hình ảnh phù hợp với bạn, hãy sử dụng nó làm cơ sở trong Dockerfile của bạn. Sau đó, bạn có thể sử dụng hướng dẫn Dockerfile thông thường để cài đặt ngôn ngữ lập trình, sao chép mã nguồn và định cấu hình ứng dụng của bạn. Nó loại bỏ sự phức tạp của các bước thiết lập GPU thủ công.

TỪ nvidia / cuda: 11.4.0-base-ubuntu20.04
RUN apt cập nhật
CHẠY apt-get install -y python3 python3-pip
RUN pip cài đặt tensorflow-gpu

SAO CHÉP tensor-code.py.
ENTRYPONT ["python3", "tensor-code.py"]

Việc xây dựng và chạy hình ảnh này với --gpus sẽ bắt đầu khối lượng công việc Tensor của bạn với khả năng tăng tốc GPU.

Định cấu hình hình ảnh theo cách thủ công

Bạn có thể thêm hỗ trợ CUDA vào hình ảnh của mình theo cách thủ công nếu bạn cần chọn một đế khác. Cách tốt nhất để đạt được điều này là tham khảo các tệp Dockerfiles chính thức của NVIDIA.

Sao chép các hướng dẫn được sử dụng để thêm kho lưu trữ gói CUDA, cài đặt thư viện và liên kết nó vào đường dẫn của bạn. Chúng tôi không sao chép tất cả các bước trong hướng dẫn này vì chúng thay đổi theo phiên bản CUDA và hệ điều hành.

Hãy chú ý đến các biến môi trường ở cuối Dockerfile – những biến này xác định cách các vùng chứa sử dụng hình ảnh của bạn tích hợp với Thời gian chạy vùng chứa NVIDIA:

ENV NVIDIA_VISIBLE_DEVICES tất cả
ENV NVIDIA_DRIVER_CAPABILITIES tính, tiện ích
Quảng cáo

Hình ảnh của bạn sẽ phát hiện GPU của bạn sau khi CUDA được cài đặt và các biến môi trường đã được thiết lập. Điều này cho phép bạn kiểm soát nhiều hơn nội dung hình ảnh của mình nhưng bạn có trách nhiệm điều chỉnh các hướng dẫn khi phiên bản CUDA mới phát hành.

Làm thế nào nó hoạt động?

Bộ công cụ vùng chứa NVIDIA là một tập hợp các gói bao bọc thời gian chạy vùng chứa như Docker với giao diện với trình điều khiển NVIDIA trên máy chủ. libnvidia-container chịu trách nhiệm cung cấp API và CLI tự động cung cấp GPU của hệ thống của bạn cho các vùng chứa thông qua trình bao bọc thời gian chạy.

Các nvidia-container-toolkit cụ phần một container runtime prestart móc. Điều này có nghĩa là nó được thông báo khi một vùng chứa mới sắp bắt đầu. Nó xem xét các GPU bạn muốn đính kèm và gọi libnvidia-container để xử lý việc tạo vùng chứa.

Móc được kích hoạt bởi nvidia-container-runtime . Đây kết thúc tốt đẹp “thật” runtime container của bạn như containerd hoặc runc để đảm bảo NVIDIA prestart móc được chạy. Thời gian chạy hiện tại của bạn tiếp tục quá trình bắt đầu vùng chứa sau khi hook đã thực thi. Khi bộ công cụ vùng chứa được cài đặt, bạn sẽ thấy thời gian chạy NVIDIA được chọn trong tệp cấu hình daemon Docker của mình.

Bản tóm tắt

Việc sử dụng GPU NVIDIA bên trong vùng chứa Docker yêu cầu bạn thêm Bộ công cụ vùng chứa NVIDIA vào máy chủ. Điều này tích hợp trình điều khiển NVIDIA với thời gian chạy vùng chứa của bạn.

Việc gọi --gpu docker run với cờ –gpu làm cho phần cứng của bạn hiển thị với vùng chứa. Điều này phải được đặt trên mỗi vùng chứa bạn khởi chạy, sau khi Bộ công cụ vùng chứa đã được cài đặt.

Quảng cáo

NVIDIA cung cấp các hình ảnh CUDA Docker được cấu hình sẵn mà bạn có thể sử dụng làm trình khởi động nhanh cho ứng dụng của mình. Nếu bạn cần một cái gì đó cụ thể hơn, hãy tham khảo Dockerfiles chính thức để lắp ráp tệp của riêng bạn vẫn tương thích với Bộ công cụ vùng chứa.

How to Use lsmod in Linux (With a Practical Example)

Cách sử dụng lsmod trong Linux (Với một ví dụ thực tế)

How to Run a Local Network DHCP Server with Dnsmasq

Cách chạy Máy chủ DHCP Mạng cục bộ với Dnsmasq

What’s New In Kotlin 1.6?

Có gì mới trong Kotlin 1.6?

How to Use Docker to Safely Try Out Software

Cách sử dụng Docker để thử phần mềm một cách an toàn

What Are Kubernetes Controllers and Operators?

Bộ điều khiển và Nhà điều hành Kubernetes là gì?

How to Fix Git Using the Wrong SSH Key & Account

Cách sửa lỗi Git bằng cách sử dụng sai tài khoản và khóa SSH

Dịch từ: https://www.cloudsavvyit.com/14942/how-to-use-an-nvidia-gpu-with-docker-containers/

Hãy giúp chúng tôi đánh giá bài viết này!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây