1. Chọn điểm khởi đầu phù hợp với dự án
Nền tảng Ubuntu phù hợp khi bạn biết cách tổ chức ngăn xếp phần mềm của mình và mô tả các phụ thuộc hệ thống của nó. Chuẩn bị PyTorch cho phép nêu rõ framework trung tâm của dự án. Blender biểu thị nhu cầu sáng tạo hoặc render. Chuẩn bị tùy chỉnh dùng khi ứng dụng của bạn đã có những điều kiện đặc thù mà các nhãn này khó tóm tắt đúng.
Những lựa chọn này không tự động bao gồm mã, trọng số, dữ liệu hay giấy phép của bạn. Hãy viết rõ điều gì phải có sẵn, điều gì bạn tự mang đến và điều gì bạn sẽ kiểm tra khi khởi động. Tên của một cách chuẩn bị không nên khiến bạn bỏ qua việc kiểm tra phiên bản thực sự được chạy.
Một yêu cầu tốt không nằm ở việc liệt kê mọi công cụ đã biết. Hãy mô tả luồng hữu ích: đọc đầu vào, nạp một tài nguyên, tính toán rồi ghi kết quả. Điều này giúp phân biệt một phụ thuộc bắt buộc với một công cụ tiện lợi và chẩn đoán bước còn thiếu.
Cuộn bảng để xem tất cả các cột.| Chuẩn bị | Yêu cầu cần mô tả | Bước kiểm tra riêng cho dự án |
|---|---|---|
| Ubuntu | Phiên bản mong đợi và các phụ thuộc hệ thống thiết yếu | Chương trình của bạn khởi động với các thư viện cần thiết. |
| PyTorch | Python, biến thể của framework và các tiện ích mở rộng | Import, tính toán trên backend rồi chạy tác vụ đại diện. |
| Blender | Phiên bản, tiện ích mở rộng, tài nguyên liên quan và định dạng xuất | Dự án mở được và bước xử lý đã được kiểm tra. |
| Tùy chỉnh | Quy trình, phiên bản và các tệp tham chiếu | Mỗi tiêu chí trong hồ sơ chuẩn bị đều được kiểm tra. |
2. Viết một hồ sơ chuẩn bị gọn gàng
Với một dự án Python, hãy phân biệt hệ thống, trình thông dịch, các gói và tài nguyên của ứng dụng. Giữ nguyên các phiên bản chính xác khi một phụ thuộc yêu cầu. Khi bạn chấp nhận một khoảng phiên bản, hãy giải thích phép kiểm tra để xác nhận khoảng đó. «Cài đặt phiên bản mới nhất» rất khó đối chiếu với một môi trường tham chiếu.
Ví dụ minh họa: dự án của bạn phân loại ảnh bằng một tiện ích mở rộng gốc. Yêu cầu của bạn nêu phiên bản Python, biến thể PyTorch đã chọn, tham chiếu của dự án và các điều kiện tiên quyết của tiện ích mở rộng. Yêu cầu cung cấp ba ảnh kiểm tra được phép và mô tả định dạng đầu ra mong đợi. Yêu cầu không tuyên bố về thông lượng hay bộ nhớ đủ nếu chưa thử nghiệm.
Hồ sơ chuẩn bị có thể vẫn ngắn gọn: một README, một tệp phụ thuộc và một tham chiếu mã là đủ nếu các bước và quyền truy cập rõ ràng. Hãy giữ các tham số có thể thay đổi trong một tệp riêng để một kích thước batch mới không biến yêu cầu thành một bản cài đặt khác.
Mục tiêu: phân loại một mẫu ảnh nhỏ
Mã: kho lưu trữ và bản sửa đổi của dự án
Python: phiên bản mà ứng dụng yêu cầu
PyTorch: phiên bản và biến thể CUDA hoặc ROCm đã chọn
Tiện ích mở rộng: phiên bản, nguồn gốc và điều kiện tiên quyết để biên dịch
Đầu vào: mẫu được phép và các định danh mong đợi
Kiểm tra: đầu ra theo định danh, định dạng hợp lệ, kết quả đọc lại được
Cung cấp quyền truy cập: quy trình riêng, không có bí mật trong phiếu này3. Kiểm tra các phụ thuộc riêng của PyTorch
Hãy kiểm tra chuỗi tính toán trước khi nhân thêm các gói. Bộ chọn chính thức của PyTorch cho phép chọn bản cài đặt theo nền tảng. CUDA và ROCm không phải là hai tên gọi thay thế cho cùng một tệp nhị phân. Framework chính có thể chạy trong khi một toán tử chuyên biệt hoặc một tiện ích mở rộng của dự án vẫn không tương thích.
Nếu một tiện ích mở rộng cần được biên dịch, quá trình build có thể đòi hỏi thêm công cụ và thư viện. Tài liệu PyTorch nêu rõ rằng việc cài gói torch không tự động cung cấp các chuỗi biên dịch cần thiết cho mọi tiện ích mở rộng. Hãy ghi các điều kiện tiên quyết này vào quy trình; một lệnh cài đặt cố gắng biên dịch không phải là bất thường cần che giấu.
Hãy lên kế hoạch cho ba phép kiểm tra riêng biệt: import framework, một phép tính nhỏ trên thiết bị và một thao tác dùng tiện ích mở rộng. Nếu hai phép đầu đạt và phép thứ ba thất bại, bạn có chẩn đoán chính xác hơn là chỉ «PyTorch không chạy». Hãy ghi lại lỗi đầy đủ đầu tiên và các phiên bản liên quan.
4. Chọn cách mô tả môi trường
Với các gói Python, một quy trình tái tạo bằng môi trường ảo thường là nền tảng đơn giản. Quy trình này nhắm tới một trình thông dịch và tách các phụ thuộc của dự án. Nó không mô tả toàn bộ máy: hãy giữ các yêu cầu hệ thống trong README và đừng trình bày việc sao chép một thư mục đã cài đặt như một quy trình di động được.
Nếu dự án của bạn đã dùng container, hãy cung cấp công thức, tham chiếu và các tham số thiết yếu để khởi chạy. Một tag có thể thay đổi; một tham chiếu bằng dấu vân tay (hash) xác định chính xác hơn một image cụ thể. Tuy vậy vẫn cần tổ chức các bản cập nhật và xác thực lại dự án. Container tự nó không chứng minh được quyền truy cập GPU hay sự hiện diện dữ liệu của bạn.
Hãy chọn cơ chế mà bạn biết cách duy trì. Một image quá đầy đủ có thể che giấu các phụ thuộc không cần thiết; một công thức quá tối giản có thể để lại các bước cài đặt thủ công nằm ngoài hồ sơ. Trong cả hai trường hợp, kiểm tra ở mức ứng dụng vẫn là điểm đối chiếu. Những chỉ dẫn này mô tả sự chuẩn bị của bạn, không giả định cách dịch vụ cung cấp image.
5. Chuẩn bị notebook và các dự án đồ họa
Notebook giúp khám phá dữ liệu và trực quan hóa đầu ra. Tuy nhiên, tệp của nó và tiến trình thực thi các ô là hai thứ tách biệt: các biến từ phiên cũ không phải là một phụ thuộc được ghi nhận. Trước khi bàn giao, hãy khởi động lại nhân và chạy các ô theo thứ tự; ghi lại phiên bản Python đã dùng.
Khi bản thử nghiệm trở thành một quy trình thường xuyên, hãy chuẩn bị một điểm vào không đòi hỏi phải thao tác từng ô một. Hướng dẫn về chuyển từ notebook sang script trình bày chi tiết quá trình chuyển đổi này. Yêu cầu chuẩn bị của bạn phải xác định nhu cầu notebook, mà không nhầm lẫn giao diện làm việc với việc chương trình đã được kiểm soát thành công.
Với Blender hoặc một phần mềm đồ họa khác, hãy thêm các tài nguyên liên quan, tiện ích mở rộng và quy trình xuất. Một dự án mở được trên máy của bạn có thể phụ thuộc vào các tệp nằm ở nơi khác. Hãy tự hỏi làm sao một máy khác tìm lại được từng tệp đó và kết quả nhỏ nào sẽ cho phép kiểm tra chuỗi trước khi làm toàn bộ công việc.
6. Nghiệm thu với tiêu chí và kết quả được xem lại
Khi bàn giao, hãy so sánh các phiên bản quan sát được với bảng ghi của bạn. Chạy chẩn đoán, rồi chạy ca ứng dụng đã dự kiến. Với ba ảnh trong ví dụ, hãy kiểm tra rằng mỗi định danh đều có đầu ra, các danh mục hợp lệ và các tệp tạo ra đọc lại được. Một màn hình không báo lỗi không thay thế cho bản tổng kết này.
Hãy giữ lại những sai lệch hữu ích: phiên bản khác, tiện ích mở rộng thiếu, đầu vào không truy cập được, đầu ra ghi ở nơi khác. Phân biệt điều gì cản trở việc bắt đầu với điều chỉ cần cập nhật tài liệu. Để yêu cầu hỗ trợ, hãy kèm mã đơn hàng và một đoạn trích tối thiểu; không cần gửi toàn bộ tập dữ liệu của bạn.
Một bản chuẩn bị đã được xác nhận cho mẫu không bảo đảm dung lượng bộ nhớ cũng như hành vi của mọi khối lượng công việc trong tương lai. Sau đó, hãy tăng khối lượng với một mục tiêu xác định và xem xét giới hạn đầu tiên gặp phải. Cuối cùng, hãy giữ lại quy trình đã chỉnh sửa: nó trở thành tham chiếu của bạn cho lần thuê tiếp theo.