Lightning là một mô-đun PyTorch hoạt động trong một số môi trường phát triển tích hợp (IDE). Có những lý do thuyết phục để bạn làm quen với nó. Nó có tính di động, cho phép sử dụng mã trên nhiều thiết lập. Phát triển có thể diễn ra trên một máy chủ rẻ hơn trước khi chuyển sang GPU, tại thời điểm đó PyTorch Lightning cung cấp các cơ chế giúp tiết kiệm thêm.

Linode cung cấp các gói GPU được tối ưu hóa cho đồ họa và phát triển mạng nơ-ron (NN) sử dụng GPU RTX 6000 của NVIDIA. Các gói GPU của Linode có sẵn với nhiều loại bộ nhớ, dung lượng lưu trữ và GPU.

PyTorch Lightning có thể phân bổ hiệu quả các lõi Compute Unified Device Architecture (CUDA) của Nvidia RTX 6000. Các lõi CUDA được phân bổ (cụ thể hoặc tự động) để phù hợp với nhu cầu của các vòng lặp đào tạo và mô hình mạng nơ-ron. Các phiên bản có thể được liên kết với nhau và tối ưu hóa để tiết kiệm chi phí trong các phiên đào tạo.

Một số bước được khuyến nghị để tối ưu hóa việc tiết kiệm chi phí thời gian tính toán của các phiên dựa trên GPU. Hướng dẫn này bao gồm việc cấu trúc các tập dữ liệu đào tạo, tối ưu hóa phiên bản làm việc để tăng năng suất và quản lý các cân nhắc về lưu trữ, cùng với các mẹo về khả năng lặp lại và sao chép phiên.

PyTorch Lightning là gì?

PyTorch Lightning là một mô-đun của PyTorch , một khuôn khổ dành cho nhà phát triển để học sâu. PyTorch xây dựng dựa trên thế mạnh đã được khẳng định của Python trong mô hình hóa dữ liệu và đào tạo mạng nơ-ron thông qua việc bổ sung các khả năng được tối ưu hóa cho GPU. PyTorch Lightning bổ sung một khuôn khổ vào PyTorch giúp tối ưu hóa năng suất trong quá trình nghiên cứu và mô hình hóa. Điều này cho phép tính di động của mã trong khi vẫn đạt được cùng một kết quả, như phần cứng cơ bản cho phép.

PyTorch Lightning cho phép các nhà phát triển loại bỏ mã thiết lập PyTorch lặp lại. Khung này bổ sung khả năng mở rộng và giao diện dòng lệnh cho phép các nhà phát triển viết mã mô-đun với kết quả có thể lặp lại. Hơn nữa, PyTorch Lightning bổ sung khả năng sử dụng GPU được mở rộng hoạt động tốt với các phiên bản hỗ trợ GPU chuyên dụng của Linode. Trên thực tế, không cần thay đổi mã đối với PyTorch hoặc PyTorch Lightning hiện có để tận dụng các phiên bản GPU của Linode.

PyTorch Lightning so với PyTorch

Các bổ sung PyTorch vào Python mở rộng khả năng xử lý tensor của nó khi được sử dụng với GPU và các bộ xử lý toán học khác. Tùy thuộc vào kích thước tensor, xử lý song song GPU có thể giảm cả thời gian mô hình hóa và xử lý ma trận cần thiết trong mô hình đào tạo mạng nơ-ron. Quản lý GPU song song của PyTorch có thể tăng hiệu quả thông lượng khả năng đào tạo dữ liệu và mạng nơ-ron.

Lightning tối ưu hóa đầu ra xử lý mô-đun cho các bài tập đào tạo dữ liệu lặp lại nhanh, đào tạo mạng nơ-ron nhanh hơn và điều chỉnh kết quả tạm thời với kết quả có thể lặp lại. Sự kết hợp giữa PyTorch và Lightning cung cấp các phiên làm việc hiệu quả có thể mở rộng trong cơ sở mã. Điều này loại bỏ nhu cầu khởi động lại và thay đổi thường xuyên giữa chừng trong quá trình lập mô hình.

PyTorch Lightning cũng có thể được điều khiển thông qua việc sử dụng các tập lệnh YAML. Các phiên có thể tận dụng các thay đổi lặp đi lặp lại trong tập lệnh YAML để điều khiển các phiên vòng lặp đào tạo mạng nơ-ron phức tạp. Mô hình hóa Lightning nâng cao cũng cung cấp quy trình điều khiển dòng lệnh.

Các trường hợp sử dụng

Khung PyTorch Lightning được tối ưu hóa và tập trung vào nghiên cứu dữ liệu chuyên sâu bằng cách sử dụng các vòng lặp đào tạo mạng nơ-ron. Nó sử dụng nhiều nguồn dữ liệu khác nhau cho tenxơ và các vòng lặp học máy tự giám sát (ML). Nó được thiết kế để tăng tốc độ trên các tìm kiếm lưới và hỗ trợ các dự án sử dụng các mô hình cực kỳ phức tạp. Theo nhà phát triển sáng lập của nó, William Falcon, PyTorch Lightning “chỉ thực sự có tổ chức PyTorch”.

PyTorch Lightning hoạt động hiệu quả nhất khi độ phức tạp của mô hình đòi hỏi phải di chuyển mã từ CPU sang các phiên bản GPU xử lý song song. Nó cũng vượt trội khi các nền tảng mới đòi hỏi phải tái cấu trúc mã hiện có. Lightning tái sử dụng hiệu quả các tài nguyên phần cứng GPU. Các nhà phát triển có thể tạo các mô hình ban đầu trên phần cứng CPU giá rẻ hoặc GPU có số lượng ít, sau đó di chuyển sang môi trường GPU mật độ cao mà không cần thay đổi mã. Mã Lightning tự động mở rộng thông lượng nếu được chuyển sang môi trường GPU song song cao hơn.

Lightning cung cấp đào tạo độ chính xác 16 bit. Việc chuyển từ tính toán mật độ thấp sang tính toán mật độ cao chỉ đơn giản là vấn đề di chuyển các phân đoạn mã sang nền tảng khác. Khi so sánh riêng với PyTorch, mã Lightning thể hiện hiệu suất tăng gấp 3 lần. Hơn nữa, kích thước lô có khả năng tăng gấp đôi trong cùng một không gian bộ nhớ và thực thi trong một nửa thời gian.

Vì Lightning tự động hóa mã điều khiển GPU, các mô hình đang phát triển có thể được chuyển giữa các phiên bản để đáp ứng nhiều yêu cầu phát triển, đào tạo, xác thực, chuyển lỗ và xử lý khác nhau. Điều này làm cho các phiên bản được phát triển bằng Lightning có tính di động cao. Các nhà nghiên cứu và người lập mô hình ML/NN có khả năng chọn phiên bản phần cứng phù hợp cho đúng phần của quy trình phát triển.

Thiết lập Tối ưu hóa

Một pipeline được tối ưu hóa bao gồm một tập hợp một hoặc nhiều “hình ảnh vàng”. Chúng trở thành cơ sở cho nhiều lần lặp lại, kỷ nguyên và/hoặc sprint nếu sử dụng các kỹ thuật phát triển Agile. Pipeline cũng bao gồm các nguồn dữ liệu để đào tạo, tải trước các lần lặp lại đào tạo và các kế hoạch lưu trữ khi các mô hình phát triển.

Mã Lightning được cấu hình để bao gồm nhiều bước tải dữ liệu để đào tạo mạng nơ-ron. Tùy thuộc vào các lần lặp và kỷ nguyên đào tạo mong muốn, mã được cấu hình có thể tùy chọn lưu trữ nhiều đối tượng và không gian lưu trữ trung gian. Điều này cho phép cô lập các bước đào tạo và xác thực để thử nghiệm, xác thực và vòng lặp phản hồi tiếp theo.

Trong suốt quá trình mô hình hóa, nhiều không gian lưu trữ khác nhau được sử dụng cho mục đích dàn dựng. Những không gian này có thể được giới hạn trong phiên bản Linux chạy PyTorch Lightning. Ngoài ra, chúng có thể có các đầu vào có nguồn từ các đối tượng tĩnh hoặc phát trực tuyến nằm trong hoặc ngoài phiên bản. Các vị trí có nguồn như vậy có thể bao gồm nhiều URL, khối lượng Linode cục bộ, Linode (hoặc các thùng S3 khác) hoặc các nguồn bên ngoài. Điều này cho phép các phiên bản được nối chuỗi trên nhiều phiên bản GPU nếu muốn.

Điều này giới thiệu một giai đoạn bổ sung trong quy trình giữa các trường hợp nghiên cứu nguồn dữ liệu tensor lớn hoặc khối lượng lớn.

Các bước thiết lập và dàn dựng

Có một số bước xử lý trước cần thực hiện để tối ưu hóa phiên và phiên bản Lightning:

  1. Chuẩn hóa đầu vào: Thu thập và phân tích các tập dữ liệu đào tạoBộ dữ liệu đào tạo ban đầu và bất kỳ bộ dữ liệu nào cần thiết cho các kỷ nguyên và đầu vào cho quá trình đào tạo tiếp theo phải sẵn sàng và được phân tích để tìm ra các bất thường. Dữ liệu xấu làm mất hiệu lực của phiên và dẫn đến các kết quả không mong muốn và khó diễn giải, còn được gọi là hiệu ứng “vào rác, ra rác”. Các bước tương tự được thực hiện trong các giai đoạn xác thực khi đào tạo các mô hình mạng nơ-ron.
  2. Tạo, sắp xếp và liên kết các thùng dữ liệuViệc tải ban đầu các tập dữ liệu được thực hiện từ bên trong đối tượng lưu trữ Linode. Khi giai đoạn thiết lập và phân tích cú pháp hoàn tất, các tập dữ liệu được đẩy qua mô hình. Đầu ra của chúng được kiểm tra để phù hợp, điều chỉnh được thực hiện và máy học bắt đầu thông qua các chu kỳ mô hình hóa lặp lại.
  3. Kế hoạch cho phân tích trong tương laiĐiều quan trọng là phải lưu các nguồn và đầu vào cho từng giai đoạn của quy trình mô hình hóa. Dữ liệu này có thể được sử dụng để phân tích pháp y và/hoặc xử lý tiếp theo. Các tùy chọn lưu trữ là cục bộ, được lưu trong bộ nhớ đệm trong PyTorch hoặc các đối tượng lưu trữ gần đó (được mô tả thêm bên dưới).
  4. Tạo mẫu hình ảnhLinode giúp bạn dễ dàng tạo mẫu hình ảnh từ đầu hoặc sử dụng phiên bản được cấu hình sẵn để chạy trên gói GPU Linode.

Các phiên bản dành cho các mô hình tận dụng PyTorch Lightning được tối ưu hóa khi được xây dựng trước và gỡ lỗi trước khi mô hình hóa trên các phiên bản ít tốn kém hơn. Mô hình dàn dựng này thường dựa trên hình ảnh hiện có sử dụng PyTorch và Lightning. Hình ảnh có thể được chuyển sang phiên bản GPU Linode khi chạy.

Về mặt thủ tục, một hình ảnh Linux đã chọn được tạo sau các bản cập nhật mới nhất. Các phiên bản PyTorch và Lightning mới nhất được thêm vào cùng với các mã mong muốn khác. Hình ảnh này cũng có thể được dựng sẵn và dàn dựng trực tuyến dưới dạng Linode chuẩn để sử dụng lại. Theo tùy chọn, nó có thể được tải lên dưới dạng hình ảnh Linode được cấu hình sẵn phù hợp với quá trình xử lý mạng nơ-ron. Vì mã quản lý GPU đã bị loại bỏ nên hình ảnh có thể được sử dụng lại trong quy trình xử lý mã hoặc mô hình nghiên cứu. Có thể tạo, cập nhật, nâng cấp và trang bị phiên bản Python và PyTorch mới nhất cho một phiên bản Linode ít tốn kém hơn. Có thể chuyển sang phiên bản GPU sau khi các quy trình được dàn dựng và sẵn sàng. Các khóa SSH của hình ảnh được gieo hạt trước tùy chọn, cũng như các mô-đun và thư viện khác cần thiết cho mục đích nghiên cứu, thử nghiệm, dùng thử hoặc sản xuất.

Bạn có thể tải lên hình ảnh của riêng bạn đã được cấu hình trước và được gieo hạt trước với các tập dữ liệu cấu hình và/hoặc dữ liệu dùng thử. Các tập phiên bản tiếp tục mô hình hóa từ các nguồn khác cũng có thể được bao gồm. Giới hạn duy nhất khi tải lên hình ảnh là kích thước của hình ảnh không được vượt quá năm gigabyte khi nén bằng tar.gz. Có một khoản phí lưu trữ cho các hình ảnh được lưu trữ trên Linode và các khối dữ liệu tùy chọn được gắn kết tại thời điểm chạy khi cần thiết.

Nhiều phiên bản, được gieo hạt và liên kết theo cách này, phải có tên phiên bản duy nhất cho mục đích tải trước. Một backplane 40GB được cung cấp cho các phiên bản GPU Linode, cho phép các phiên bản được liên kết với nhau để đào tạo, xác thực, đào tạo lại và quản lý kỷ nguyên ở tốc độ cao.

Tùy chọn cấu hình lưu trữ

Một số cấu hình lưu trữ phù hợp với nhu cầu nghiên cứu mô hình, bao gồm:

  • Lưu trữ tại chỗ : Lưu trữ được phân bổ gốc và xác định trước trong phiên bản. Điều này được bao gồm trong chi phí của phiên bản.
  • Các khối lượng Linode được gắn kết : Có thể tùy chọn thêm tối đa tám khối lượng đĩa logic từ 10 GB đến 80 TB vào bất kỳ Linode nào. Các khối lượng được gắn kết và tháo rời theo cách thủ công hoặc theo chương trình. Các khối lượng có thể được thêm vào, xóa và/hoặc sao lưu trong chu kỳ nghiên cứu. Chi phí lưu trữ khối lượng là tùy chọn.
  • Linode Object Storage : Tương tự như lưu trữ CORS S3, Linode Object Storage mô phỏng lưu trữ AWS hoặc DreamHost S3, do đó các đối tượng S3 có thể được di chuyển sang Linode và hoạt động tương tự. Các thùng S3 chuẩn có thể được nhập, lưu trữ hoặc xóa khi cần trong chu kỳ nghiên cứu. Chi phí lưu trữ đối tượng là tùy chọn.
  • Gọi mã URL bên ngoài : Các nguồn dữ liệu mạng bên ngoài phải chịu phí luồng dữ liệu liên quan đến GPU Linode hoặc chi phí phiên bản khác.

PyTorch Lightning có thể lấy dữ liệu đầu vào từ các nguồn hoặc luồng tệp mô hình đào tạo tĩnh. Các mô hình tập dữ liệu tĩnh biểu diễn các tệp, đối tượng hoặc luồng dữ liệu (ví dụ: nguồn cấp dữ liệu IoT). Các luồng có thể là dữ liệu đầu vào từ dữ liệu định kỳ, không phải tệp như video, IoT và nguồn âm thanh. Hiệu suất thời gian truy xuất tối ưu cho các tập dữ liệu tĩnh đạt được bằng cách tải trước chúng vào bộ lưu trữ đối tượng Linode hoặc ổ đĩa logic.

Tối ưu hóa thời gian của phiên bản

Tiết kiệm chi phí được thể hiện bằng Tối ưu hóa thời gian phiên bản yêu cầu dàn dựng phiên bản. Dàn dựng dẫn đến việc bảo tồn thời gian phiên bản GPU, phân bổ lưu trữ hiệu quả và ít giai đoạn pháp y, thử nghiệm và/hoặc xác thực cần thiết trong quá trình phát triển mạng nơ-ron.

Các kỹ thuật mô hình hóa nghiên cứu tương tác được tối ưu hóa với PyTorch Lightning vì nó tự động điều chỉnh theo nền tảng GPU đã chọn. Mô hình, hình ảnh và bộ dữ liệu được sử dụng sau đó được lưu trữ, sử dụng lại và phân tích pháp y thông qua quy trình sản xuất. Việc di chuyển mã ra khỏi các phiên bản GPU đắt tiền hơn được thực hiện bằng cách lưu hình ảnh rồi gắn lại chúng trên các phiên bản phần cứng ít tốn kém hơn.

Việc sử dụng hình ảnh dựa trên PyTorch Lightning được tải trước được khuyến nghị mạnh mẽ. Hình ảnh được tải trước được phát triển trên Linode đơn giản, ít tốn kém hơn như một phần của quá trình dàn dựng và tối ưu hóa. Khi được phát triển thêm, hình ảnh có thể được khởi tạo trên một hoặc nhiều Linode dựa trên GPU để chạy khối lượng công việc nặng của bộ phần mềm thông qua đào tạo, thử nghiệm và xác thực. Sau khi xác thực được đáp ứng, các mô hình sản xuất được chuyển đến một nền tảng thích hợp thông qua hình ảnh.

Việc dàn dựng yêu cầu các nguồn dữ liệu phải được sắp xếp ban đầu, lưu trữ của chúng được phân bổ, tải xuống hoặc khởi tạo, hình ảnh được triển khai và quá trình đào tạo mạng nơ-ron bắt đầu. Sau khi mạng nơ-ron và mô hình của nó được xác thực, hồ sơ pháp y có sẵn để lưu trữ cho mục đích sử dụng, đào tạo hoặc gỡ lỗi trong tương lai. Việc duy trì nhật ký hoặc sử dụng git-source control giúp theo dõi thành công và thất bại của việc triển khai mã, hoạt động pháp y và nỗ lực gỡ lỗi.

Một quy trình sản xuất như vậy cũng cho phép các nhóm làm việc trên các chương trình mô hình hóa liên minh sử dụng cùng một nguồn lực. Điều này tạo ra cơ hội tuyệt vời để có được cùng một kết quả thông qua cùng một quy trình và nguồn dữ liệu. Các nhà nghiên cứu khi quay lại các bước của họ có khả năng đạt được sự đảm bảo chất lượng tốt hơn thông qua mô hình hóa nhanh với kết quả có thể lặp lại.

Phần kết luận

PyTorch Lightning là một mô-đun PyTorch cung cấp khả năng bảo tồn tài nguyên trong nghiên cứu mô hình mạng nơ-ron. Là một mô-đun, Lightning cho phép chuyển mã sang các nền tảng khác nhau. Mỗi nền tảng này có thể được tối ưu hóa cho các trường hợp sử dụng cụ thể và được điều chỉnh cho từng chu kỳ phát triển mô hình mạng nơ-ron.

Tối ưu hóa quy trình có thể cắt giảm chi phí và cung cấp kết quả lặp lại nhanh hơn so với Python đơn lẻ hoặc Python với PyTorch. Các kỹ thuật bao gồm tiền hình ảnh, xếp hàng nguồn dữ liệu, mô hình hóa lưu trữ dữ liệu và chọn trường hợp chính xác cho trạng thái mô hình hóa và yêu cầu nghiên cứu.

Hình ảnh được tối ưu hóa cho Python Lightning ban đầu được phát triển trên phần cứng giá rẻ trước khi được triển khai, tối ưu hóa và tái sử dụng. Những hình ảnh này trở thành một phần của hệ thống phát triển để các nhà nghiên cứu xác thực nhiều mô hình phức tạp tự động điều chỉnh theo nền tảng.

Thông tin thêm

Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.

Nguồn : https://www.linode.com/docs/guides/getting-started-with-pytorch-lightning/