TIỀN MÃ HÓA KHÔNG KYCThuê GPU · 3, 7 hoặc 30 ngày
Capordia
Ngôn ngữ: Tiếng Việt
Menu
Vận hành / Song song hóa

Chọn những gì tiến triển cùng nhau trước khi đếm số card.

Song song hóa đáp ứng hai nhu cầu khác nhau: hoàn thành nhiều tác vụ độc lập hơn hoặc chia sẻ cùng một khối lượng công việc cho nhiều GPU. Hãy bắt đầu bằng việc xác định điều gì cần được chia sẻ, đồng bộ hóa hoặc tập hợp lại. Mỗi card vẫn giữ bộ nhớ riêng và cần kiểm tra topology của máy chủ. Lựa chọn đúng phụ thuộc vào phần mềm và kết quả mong đợi; nhân thêm card không đảm bảo bộ nhớ hợp nhất hay thời gian được chia nhỏ.

01

Xác định đơn vị công việc có thể tách rời

Hãy viết ra điều tạo nên một kết quả được chấp nhận: một hình ảnh, một tài liệu đã xử lý, một tập hợp mô phỏng hay một trạng thái huấn luyện cuối cùng. Sau đó, hãy tự hỏi liệu một đơn vị có thể được tính toán mà không cần chờ các đơn vị khác hay không. Hai tài liệu có thể độc lập trong quá trình xử lý, rồi sau đó phụ thuộc vào một bước xây dựng chỉ mục chung. Việc phân chia phải mô tả được bước thứ hai đó thay vì bỏ quên nó trong một lời hứa về song song hóa.

Hãy phân biệt tính độc lập về mặt tính toán với tính độc lập về mặt nghiệp vụ. Một đầu ra có thể được tạo ra mà không cần trao đổi kỹ thuật, nhưng vẫn không thể sử dụng trước khi cả lô được phê duyệt. Vì vậy, hãy gọi tên đơn vị tính toán, đơn vị bàn giao và quy tắc lắp ghép. Cách diễn đạt chung này tránh việc bên mua đếm số card trong khi đội ứng dụng lại đếm số instance hay các mảnh của cùng một mô hình.

02

Lựa chọn giữa công việc độc lập và hợp tác chặt chẽ

Với các tác vụ độc lập, mỗi tiến trình nhận dữ liệu đầu vào riêng và tạo ra một đầu ra có thể nhận diện được. Một card khác có thể thực thi một tác vụ khác mà không cần đồng bộ ở từng bước. Chế độ này hữu ích khi mục tiêu hướng đến số lượng hoàn thành trong một khoảng thời gian. Nó không tự động tăng tốc một tác vụ đơn lẻ, và vẫn cần kiểm tra sự tranh chấp trên dữ liệu, lưu trữ hoặc giấy phép.

Với công việc hợp tác, các thiết bị trao đổi dữ liệu hoặc chờ đợi một kết quả trung gian. Chương trình phải xử lý việc phân chia này. Hướng dẫn CUDA giải thích rằng việc khai thác nhiều GPU liên quan đến các context, phân phối dữ liệu, khởi chạy và giao tiếp. Đây là những thuộc tính của đường đi phần mềm và của hệ thống được quan sát; tên một card trong danh mục không chứng minh rằng đường đi đó đã tồn tại.

Chọn cấu trúc trước khi chọn số lượng card
Câu hỏiCông việc độc lậpCông việc hợp tác
Một card nhận được gì?Một tác vụ hoàn chỉnh riêng biệtMột phần hoặc một bản sao của công việc
Cần phối hợp điều gì?Phân công đầu vào và thu thập đầu raTrao đổi, thứ tự và đồng bộ hóa
Cần kiểm chứng lợi ích gì?Số kết quả được chấp nhận trong một khoảng thời gianKết quả tương tự với thời gian hoặc năng lực được điều chỉnh
Cần dự phòng thất bại nào?Một tác vụ hoặc một lần xuất bản đơn lẻẢnh hưởng của một thành viên không khả dụng lên cả nhóm
03

Không nhầm lẫn giữa sao chép và phân chia bộ nhớ

Nhiều bản sao của một mô hình không có nghĩa là các tham số của nó được chia đều giữa các card. PyTorch DistributedDataParallel đồng bộ hóa gradient giữa các tiến trình đang huấn luyện các mô hình cục bộ của chúng. Do đó, chỉ dựa vào tên gọi này không thể kết luận rằng một mô hình quá lớn so với một card sẽ vừa trên nhiều card. Một cơ chế phân chia cần có tài liệu riêng và sự kiểm chứng riêng.

Bộ nhớ của mỗi card phải đáp ứng được những gì phần mềm thực sự đặt vào đó: dữ liệu, trạng thái mô hình, không gian tạm thời và các trao đổi nếu có. Đỉnh có thể thay đổi theo cấu hình và giai đoạn xử lý. Hãy ghi nhận theo từng thiết bị. Tổng dung lượng danh nghĩa che giấu sự mất cân bằng khi một card thiếu bộ nhớ trong khi các card khác vẫn còn dư. Tổng dung lượng của cả lô không đủ để chấp nhận kịch bản.

04

Ví dụ giả định: phân chia tám lượt chuyển đổi độc lập

Nhóm giả định « Index des ouvrages » chuẩn bị tám lượt chuyển đổi tài liệu. Trong giả thiết làm việc của họ, mỗi lượt chuyển đổi chiếm một card trong mười hai phút, bao gồm cả tải và xuất. Một tác vụ đủ chỗ trên một card và không cần trao đổi trước khi lắp ghép cuối cùng. Những khoảng thời gian này chỉ dùng để xây dựng lập luận: chúng không mô tả bất kỳ lần thực thi hay hiệu năng GPU nào mà Capordia cung cấp.

Với một card, tám tác vụ liên tiếp tương ứng 8 × 12 = 96 phút. Với hai card và phân bổ cân bằng bốn tác vụ mỗi card, phần có thể song song hóa về mặt lý thuyết tương ứng 48 phút. Nếu khâu lắp ráp cuối cùng cần mười phút trên một trạm riêng, toàn bộ đường đi lần lượt trở thành 106 hoặc 58 phút, chưa tính thời gian chờ trước khi khởi chạy. Phép tính này giả định hai card không làm chậm quá trình nạp của nhau.

Phép tính minh họa, chưa đo thực tế — tám tác vụ mười hai phút và mười phút lắp ráp
Tổ chứcPhần có thể song song hóaLắp rápThời gian tính toán
Một card, tám tác vụ96 phút10 phút106 phút
Hai card, bốn tác vụ mỗi card48 phút10 phút58 phút
05

Làm rõ những gì có thể triệt tiêu lợi ích lý thuyết này

Trong cùng ví dụ, các tài liệu có thể không có kích thước bằng nhau. Giao bốn tài liệu dài nhất cho một card sẽ khiến card còn lại phải chờ ở cuối quá trình. Phân phối theo tình trạng sẵn sàng có thể cải thiện sự cân bằng, nhưng đòi hỏi một cơ chế phân công đáng tin cậy và một chính sách tiếp nhận. Hướng dẫn về hàng đợi đề cập đến cách tổ chức này; phép tính hiện tại không chứng minh rằng nó đã được thiết lập.

Lưu trữ cũng có thể trở thành tài nguyên chung chiếm ưu thế. Hai tiến trình cùng đọc dữ liệu hoặc đồng thời ghi các kết quả lớn không nhất thiết có được gấp đôi thông lượng. Bạn cũng nên kiểm tra giới hạn đồng thời của các công cụ và giấy phép. Nếu phần không thể song song hóa tăng lên, hãy tính lại toàn bộ lịch trình. Thời gian tiết kiệm được ở một giai đoạn không nên che khuất khoảng thời gian bị cộng thêm ở nơi khác.

06

Đối với công việc phân tán, hãy nhận đúng cấu trúc liên kết thực tế

Hãy hỏi những card nào hiển thị, chúng giao tiếp với nhau ra sao và những tài nguyên máy chủ nào chia sẻ tiến trình của chúng. Kiểm tra các thiết bị có thể truy cập từ môi trường được sử dụng, không chỉ từ một bảng điều khiển quản trị. CUDA nêu rõ rằng quyền truy cập vào bộ nhớ của một GPU khác phụ thuộc đặc biệt vào cấu trúc liên kết và khả năng của hệ thống. Việc một mô hình hỗ trợ một tính năng không chứng minh rằng liên kết mong đợi tồn tại trên máy.

Hãy giữ một sơ đồ đơn giản về dòng chảy dữ liệu: đầu vào, card hoặc tiến trình liên quan, các trao đổi, tập hợp cuối cùng và đầu ra. Với mỗi mũi tên, xác định xem nó đi qua bộ nhớ máy chủ, một liên kết giữa các GPU hay mạng. Góc nhìn này giúp chọn các kiểm tra tiếp nhận. Nó không áp đặt một công nghệ cụ thể và không biến một yêu cầu đa GPU thành lời hứa về một cấu trúc liên kết cụ thể.

07

So sánh hai cách tổ chức mà không thay đổi kết quả mong đợi

Hãy chuẩn bị một tập dữ liệu nhỏ mang tính đại diện và chạy, trên mục tiêu được phép của bạn, một cách tổ chức tham chiếu rồi đến cách tổ chức ứng viên. Giữ nguyên phiên bản, cài đặt, chất lượng mong đợi và quy tắc lắp ráp. So sánh thời gian đến kết quả được chấp nhận, mức đỉnh bộ nhớ của mỗi card, các lỗi và mức tiêu thụ tài nguyên chung. Hãy tách biệt quan sát với ước tính; một lệnh được đề xuất không có giá trị bằng kết quả đã đạt được.

Đặc biệt kiểm tra rằng số lượng đầu ra được chấp nhận vẫn giữ nguyên và không có đầu vào nào bị bỏ sót. Đối với phép tính nhạy cảm với thứ tự các phép toán, hãy chọn một dung sai hợp lý thay vì một sự bằng nhau tùy tiện. Một cách tổ chức hoàn thành nhanh hơn với chất lượng khác là giải quyết một bài toán khác. Bạn cũng nên giữ một trường hợp mà việc chia sẻ không mang lại lợi ích: giới hạn này giải thích lựa chọn tốt hơn một bảng xếp hạng card không có tải chung.

08

Chuyển lựa chọn thành năng lực yêu cầu

Cuối cùng, hãy viết ra số lượng tác vụ đồng thời, số card cần cho mỗi tác vụ và các điều kiện thiết yếu. Một tác vụ trải trên hai card và hai tác vụ trên một card đại diện cho hai cách tổ chức khác nhau, ngay cả khi tổng số card bằng nhau. Cấu hình được chọn phải cho phép cách tổ chức yêu cầu; đừng bắt đầu từ tổng danh nghĩa rồi sau đó gán cho nó một mục đích sử dụng.

Danh mục liệt kê các lô card. Một lô B200 chứa hai GPU, mỗi GPU 180 GB; thành phần này không đảm bảo rằng một phần mềm sẽ khai thác chúng như một bộ nhớ duy nhất. Bước tiếp theo là khớp nhu cầu với lô, rồi tiếp nhận các thuộc tính thực sự cần thiết. Tiến độ, chi phí và quyết định vẫn chỉ là tạm thời chừng nào các điều kiện quyết định chưa được kiểm chứng.

Câu hỏi để quyết định

Hai GPU có luôn nhanh hơn một GPU không?

Không. Lợi ích phụ thuộc vào phần có thể song song hóa, các trao đổi và tài nguyên dùng chung. Với một tác vụ đơn lẻ không thể chia nhỏ, card thứ hai có thể vẫn không được dùng đến. Hãy so sánh thời gian đến cùng một kết quả được chấp nhận, trên một quy trình rõ ràng.

Một lô hai card có nhân đôi bộ nhớ khả dụng cho chương trình của tôi không?

Không tự động. Mỗi thiết bị có bộ nhớ riêng và chương trình phải phân bổ trạng thái hoặc dữ liệu của nó. Ngược lại, việc nhân bản một mô hình có thể sao chép phần lớn trạng thái đó. Hãy kiểm tra cơ chế phần mềm và mức đỉnh trên mỗi card.

Khi nào nên bắt đầu bằng các tác vụ độc lập?

Khi mỗi đơn vị có thể được tính riêng và lợi ích mong muốn là hoàn thành nhiều đơn vị hơn. Tuy vậy vẫn cần kiểm chứng việc phân công, cân bằng tải và lắp ghép cuối cùng, không giả định rằng lưu trữ và giấy phép sẽ tự động theo kịp.

TIẾP TỤC HỒ SƠXem các cấu hìnhXem câu hỏi thường gặp