Cách Latent Space đã sử dụng thư viện song song mô hình Amazon SageMaker để thúc đẩy giới hạn của các máy biến áp quy mô lớn

Nút nguồn: 1204406

Blog này được đồng tác giả bởi Sarah Jane Hong CSO, Darryl Barnhart CTO và Ian Thompson CEO của Latent Space và Prem Ranga của AWS.

Không gian tiềm ẩn là một đại diện ẩn của các ý tưởng trừu tượng mà các mô hình học máy (ML) học được. Ví dụ: “chó”, “hoa” hoặc “cửa” là các khái niệm hoặc vị trí trong không gian tiềm ẩn. Tại Không gian tiềm ẩn, chúng tôi đang làm việc trên một công cụ cho phép bạn thao tác và khám phá không gian này bằng cả lời nhắc bằng ngôn ngữ và hình ảnh. Nhóm Không gian tiềm ẩn đến từ hai lĩnh vực lâu nay ít có sự trùng lặp: đồ họa và xử lý ngôn ngữ tự nhiên (NLP). Theo truyền thống, các phương thức của hình ảnh và văn bản được xử lý riêng biệt, mỗi phương thức đều có lịch sử riêng về kỹ thuật tính năng phức tạp, đắt tiền và mỏng manh. Các nhiệm vụ NLP như hiểu tài liệu hoặc trả lời câu hỏi thường có rất ít điểm chung với các nhiệm vụ tầm nhìn như hiểu cảnh hoặc kết xuất, và thông thường chúng tôi sử dụng các cách tiếp cận và mô hình rất khác nhau cho mỗi nhiệm vụ. Nhưng điều này đang thay đổi nhanh chóng.

Sự hợp nhất các phương thức này trong một không gian tiềm ẩn được chia sẻ duy nhất sẽ mở ra một thế hệ ứng dụng thương mại và sáng tạo mới, từ chơi game đến hiểu tài liệu. Nhưng việc mở khóa các ứng dụng mới này trong một mô hình duy nhất sẽ mở ra những thách thức mở rộng mới, như được nêu bật trong “Bài học cay đắng” của Richard Sutton, và công trình thú vị trong vài năm qua về luật mở rộng. Để biến điều này thành khả thi, Latent Space đang thực hiện nghiên cứu tiên tiến để kết hợp các phương thức này trong một mô hình duy nhất, nhưng cũng để mở rộng quy mô và làm như vậy một cách hiệu quả. Đây là lúc mô hình song song xuất hiện.

Amazon SageMakerPhương pháp phân vùng mô hình tự động độc đáo và cách tiếp cận hiệu quả giúp chúng tôi áp dụng mô hình song song với ít nỗ lực kỹ thuật và chúng tôi mở rộng quy mô đào tạo các mô hình vượt quá 1 tỷ tham số (chúng tôi sử dụng p4d.24xlarge A100 phiên bản), đó là một yêu cầu quan trọng đối với chúng tôi. Hơn nữa, chúng tôi quan sát thấy rằng khi đào tạo với thiết lập đào tạo 16 nút, tám GPU với thư viện song song mô hình SageMaker, chúng tôi đã ghi nhận mức cải thiện 38% về hiệu quả so với các lần chạy đào tạo trước đó của chúng tôi.

Những thách thức với việc đào tạo máy biến áp quy mô lớn

Tại Không gian tiềm ẩn, chúng tôi đang kết hợp ngôn ngữ và tầm nhìn trong các mô hình máy biến áp với hàng tỷ thông số để hỗ trợ các trường hợp sử dụng “ngoài phân phối” từ trí tưởng tượng của người dùng hoặc điều đó sẽ xảy ra trong thế giới thực nhưng không có trong dữ liệu đào tạo của chúng tôi. Chúng tôi đang xử lý những thách thức vốn có trong việc mở rộng quy mô đến hàng tỷ tham số và hơn thế nữa theo hai cách khác nhau:

Các kỹ thuật truy xuất thông tin từ lâu đã trở thành một thành phần chính của các công cụ tìm kiếm và các nhiệm vụ QA. Gần đây, tiến bộ thú vị đã được thực hiện khi kết hợp các kỹ thuật IR cổ điển với các máy biến áp hiện đại, đặc biệt cho các nhiệm vụ trả lời câu hỏi trong đó một mô hình được đào tạo cùng với một bộ truy xuất thần kinh học cách truy xuất các tài liệu liên quan để giúp trả lời các câu hỏi. Để biết tổng quan, hãy xem công việc gần đây của FAIR trong Thế hệ tăng cường truy xuất: Hợp lý hóa việc tạo ra các mô hình xử lý ngôn ngữ tự nhiên thông minhBộ giải mã kết hợp, Google Brain's THẬTvà Nvidia's chó tha mồi thần kinh để trả lời câu hỏi.

Mặc dù các kỹ thuật tăng cường truy xuất giúp tiết kiệm chi phí và hiệu quả, nhưng chúng tôi vẫn không thể điều chỉnh mô hình trên một GPU duy nhất cho mô hình lớn nhất của mình. Điều này có nghĩa là chúng ta cần sử dụng song song mô hình để đào tạo nó. Tuy nhiên, do bản chất của kiến ​​trúc truy xuất của chúng tôi, việc thiết kế phân tách mô hình của chúng tôi là một thách thức vì sự phụ thuộc lẫn nhau giữa các ngữ cảnh được truy xuất trên các đầu vào đào tạo. Hơn nữa, ngay cả khi chúng tôi xác định cách chúng tôi phân chia mô hình của mình, giới thiệu song song mô hình là một nhiệm vụ kỹ thuật quan trọng mà chúng tôi phải thực hiện thủ công trong suốt vòng đời nghiên cứu và phát triển của mình.

Thư viện song song mô hình SageMaker

Song song mô hình là quá trình chia nhỏ mô hình giữa nhiều thiết bị hoặc nút (chẳng hạn như các phiên bản được trang bị GPU) và tạo một đường dẫn hiệu quả để đào tạo mô hình trên các thiết bị này nhằm tối đa hóa việc sử dụng GPU. Các thư viện mô hình song song trong SageMaker làm cho mô hình song song dễ tiếp cận hơn bằng cách cung cấp tính năng tách mô hình tự động, còn được gọi là phân vùng mô hình tự động và lập lịch chạy đường ống phức tạp. Các thuật toán tách mô hình có thể tối ưu hóa cho tốc độ hoặc mức tiêu thụ bộ nhớ. Thư viện sử dụng thuật toán phân vùng để cân bằng bộ nhớ, giảm thiểu giao tiếp giữa các thiết bị và tối ưu hóa hiệu suất.

Phân vùng mô hình tự động

Đối với trường hợp sử dụng PyTorch của chúng tôi, thư viện song song mô hình chạy nội bộ một bước theo dõi (trong bước đào tạo đầu tiên) để xây dựng đồ thị mô hình và xác định tensor và hình dạng tham số. Sau đó, nó xây dựng một cây, bao gồm các nn.Module các đối tượng trong mô hình, cũng như dữ liệu bổ sung được thu thập từ việc theo dõi, chẳng hạn như lượng nn.Parametersvà thời gian chạy cho mỗi nn.Module.

Sau đó, thư viện duyệt cây này từ gốc và chạy một thuật toán phân vùng cân bằng giữa tải tính toán và sử dụng bộ nhớ, đồng thời giảm thiểu giao tiếp giữa các cá thể. Nếu nhiều nn.Modules chia sẻ cùng một nn.Parameter, các module này được đặt trên cùng một thiết bị để tránh duy trì nhiều phiên bản của cùng một tham số. Sau khi quyết định phân vùng được thực hiện, các mô-đun và trọng số được chỉ định sẽ được tải vào thiết bị của chúng.

Lập lịch chạy đường ống

Một tính năng cốt lõi khác của thư viện song song mô hình phân tán SageMaker là chạy pipelined, xác định thứ tự thực hiện tính toán và dữ liệu được xử lý trên các thiết bị trong quá trình đào tạo mô hình. Pipelining dựa trên việc tách một mini-batch thành các microbatch, được đưa vào đường dẫn đào tạo từng cái một và tuân theo một lịch trình chạy được xác định bởi thời gian chạy thư viện.

Hệ thống microbatch đảm bảo rằng tất cả các GPU đều được sử dụng đầy đủ, đó là thứ mà chúng tôi sẽ phải tự xây dựng, nhưng với thư viện mô hình song song, điều này diễn ra gọn gàng đằng sau hậu trường. Cuối cùng, chúng ta có thể sử dụng Amazon FSx, điều này rất quan trọng để đảm bảo tốc độ đọc của chúng tôi nhanh chóng với số lượng tệp được đọc trong quá trình đào tạo mô hình đa phương thức có truy xuất.

Kiến trúc đào tạo

Sơ đồ sau đây mô tả cách chúng tôi thiết lập kiến ​​trúc đào tạo của mình. Mục tiêu chính của chúng tôi là cải thiện tốc độ đào tạo và giảm chi phí. Các máy biến áp hình ảnh và ngôn ngữ mà chúng tôi đang đào tạo rất phức tạp, với một số lượng lớn đáng kể các lớp và trọng lượng bên trong, chạy tới hàng tỷ tham số, tất cả đều khiến chúng không thể nằm gọn trong bộ nhớ của một nút duy nhất. Mỗi nút mang một tập hợp con của mô hình, qua đó các luồng dữ liệu và các phép biến đổi được chia sẻ và biên dịch. Chúng tôi thiết lập 16 p4d.24xlarge mỗi phiên bản có tám GPU sử dụng biểu diễn kiến ​​trúc sau:

Khi chúng tôi mở rộng quy mô mô hình của mình, xu hướng chung là lưu trữ mọi thứ trong các trọng số của mạng. Tuy nhiên, vì mục đích thực tế, chúng tôi muốn tăng cường các mô hình của mình để học cách tìm kiếm các ngữ cảnh có liên quan để giúp thực hiện nhiệm vụ kết xuất. Điều này cho phép chúng tôi giảm chi phí phục vụ mà không ảnh hưởng đến chất lượng hình ảnh. Chúng tôi sử dụng mô hình NLP dựa trên máy biến áp lớn và như đã đề cập trước đây, chúng tôi đã quan sát thấy hiệu quả đào tạo tăng 38% với thư viện song song mô hình SageMaker như được hiển thị như sau:

  • Chúng ta cần một quy ước cho mọi phép tính trong trường hợp song song mức tensor. Điều này thực hiện O (log_2 n) bước song song. Đó là n máy thực hiện O (n) bước, với tổng số O (n log_2 n) hoạt động.
  • Đối với song song đường ống, chúng tôi yêu cầu các bước song song O (1) để truyền dữ liệu xuống đường ống
  • Với 16 máy có tám GPU, chúng ta có chi phí O (1) cho đường ống song song và O (log_2 (8)) = O (3) chi phí cho mô hình song song theo chiều sâu.
  • Trong trường hợp này, chúng tôi thấy rằng chi phí mạng được giảm xuống 1/3 bằng cách chuyển sang đường ống song song mà chúng tôi sử dụng với mô hình SageMaker song song và chi phí đào tạo tổng thể giảm xuống còn 1/2 + 1/2 * 1 / log_2 (16 ) = 0.625 chi phí ban đầu dẫn đến cải thiện hiệu quả tương ứng.

Nói chung, khi nhu cầu đảm bảo đào tạo phân tán (các vấn đề với kích thước mô hình mở rộng hoặc dữ liệu đào tạo), chúng tôi có thể tuân theo một loạt các phương pháp hay nhất để xác định cách tiếp cận nào hoạt động tốt nhất.

Các phương pháp hay nhất để đào tạo phân tán

Dựa trên kinh nghiệm của chúng tôi, chúng tôi khuyên bạn nên bắt đầu với cách tiếp cận song song dữ liệu phân tán. Song song dữ liệu phân tán chẳng hạn như Thư viện dữ liệu song song phân tán SageMaker giải quyết hầu hết các vấn đề về mạng với các bản sao mô hình, vì vậy bạn nên lắp các mô hình vào số lượng nút nhỏ nhất, sau đó sao chép để chia tỷ lệ kích thước hàng loạt khi cần thiết.

Nếu bạn hết bộ nhớ trong quá trình đào tạo, như chúng tôi đã làm trong trường hợp này, bạn có thể muốn chuyển sang cách tiếp cận song song mô hình. Tuy nhiên, hãy xem xét các lựa chọn thay thế này trước khi thử đào tạo song song mô hình:

  • Trên phần cứng được trang bị NVIDIA Tensor Core, hãy sử dụng đào tạo chính xác hỗn hợp để tăng tốc độ và giảm tiêu thụ bộ nhớ.
  • Giảm kích thước lô (hoặc giảm độ phân giải hình ảnh hoặc độ dài chuỗi NLP, nếu có thể).

Ngoài ra, chúng tôi thích các thiết kế mô hình không có chuẩn hóa hàng loạt như được mô tả trong Nhận dạng hình ảnh quy mô lớn hiệu suất cao mà không cần chuẩn hóa. Nếu không thể tránh được, hãy đảm bảo quá trình chuẩn hóa hàng loạt được đồng bộ hóa trên các thiết bị. Khi bạn sử dụng đào tạo phân tán, lô của bạn được chia thành các GPU, do đó, thống kê lô chính xác yêu cầu đồng bộ hóa trên tất cả các thiết bị. Nếu không có điều này, quá trình chuẩn hóa sẽ gia tăng lỗi và do đó làm giảm khả năng hội tụ.

Bắt đầu với đào tạo song song mô hình khi bạn có các ràng buộc sau:

  • Mô hình của bạn không vừa trên một thiết bị
  • Do kích thước mô hình của bạn, bạn đang gặp phải những hạn chế trong việc chọn kích thước lô lớn hơn, chẳng hạn như nếu trọng lượng mô hình của bạn chiếm gần hết bộ nhớ GPU và bạn buộc phải chọn kích thước lô nhỏ hơn, tối ưu

Khi tối ưu hóa hiệu suất, hãy làm như sau:

  • Sử dụng pipelining cho giao tiếp giữa các nút để giảm thiểu độ trễ và tăng thông lượng
  • Giữ đường ống càng ngắn càng tốt để giảm thiểu bong bóng. Số lượng các microbatch nên được điều chỉnh để cân bằng giữa hiệu quả tính toán với kích thước bong bóng và ít nhất là chiều dài đường ống. Nếu cần, bạn có thể tạo các microbatch ở cấp mã thông báo như được mô tả trong TeraPipe: Song song đường ống cấp mã thông báo để đào tạo các mô hình ngôn ngữ quy mô lớn

Khi tối ưu hóa chi phí, hãy sử dụng Phiên bản Spot do SageMaker quản lý để đào tạo. Điều này có thể tối ưu hóa chi phí đào tạo các mô hình lên đến 90% so với các phiên bản Theo yêu cầu. SageMaker thay mặt bạn quản lý các gián đoạn Spot.

Các yếu tố khác cần xem xét:

  • Trong một nút khi có một kết nối nhanh, nó có nhiều sắc thái hơn. Nếu có dung lượng mạng nội bộ dồi dào, việc cấu trúc lại dữ liệu để tính toán tối ưu hơn có thể cho thấy một lợi ích.
  • Nếu các kích hoạt lớn hơn nhiều so với các lực căng trọng lượng, một trình tối ưu hóa phân đoạn cũng có thể hữu ích. Vui lòng tham khảo trước Số không để biết thêm chi tiết.

Bảng sau cung cấp một số tình huống mở rộng quy mô đào tạo phổ biến và cách bạn có thể định cấu hình chúng trên AWS.

Kịch bản Khi nào nó áp dụng? Dung dịch
Chia tỷ lệ từ một GPU sang nhiều GPU Khi lượng dữ liệu đào tạo hoặc kích thước của mô hình quá lớn Thay đổi sang phiên bản đa GPU, chẳng hạn như p3.16xlarge, có tám GPU, với dữ liệu và xử lý được chia thành tám GPU và tạo ra tốc độ gần như tuyến tính trong thời gian cần thiết để đào tạo mô hình của bạn.
Chia tỷ lệ từ một trường hợp duy nhất thành nhiều trường hợp Khi nhu cầu mở rộng quy mô vượt ra ngoài thay đổi kích thước phiên bản Chia tỷ lệ số lượng phiên bản với chức năng ước tính của SageMaker Python SDK bằng cách đặt instance_type của bạn thành p3.16xlarge và instance_count thành 2. Thay vì tám GPU trên một p3.16xlarge duy nhất, bạn có 16 GPU trên hai phiên bản giống nhau. Cân nhắc sử dụng Thư viện dữ liệu song song phân tán SageMaker.
Lựa chọn phương pháp tiếp cận song song mô hình để đào tạo Khi gặp lỗi hết bộ nhớ trong quá trình đào tạo Chuyển sang cách tiếp cận song song mô hình bằng cách sử dụng Thư viện song song mô hình phân tán SageMaker.
Hiệu suất mạng cho giao tiếp giữa các nút Đối với đào tạo phân tán với nhiều trường hợp (ví dụ: giao tiếp giữa các nút trong cụm khi thực hiện hoạt động AllReduce) Các phiên bản của bạn cần phải ở cùng Khu vực và cùng Khu vực khả dụng. Khi bạn sử dụng SageMaker Python SDK, điều này sẽ được xử lý cho bạn. Dữ liệu đào tạo của bạn cũng phải nằm trong cùng Vùng khả dụng. Cân nhắc sử dụng Thư viện dữ liệu song song phân tán SageMaker.
GPU, mạng và bộ nhớ được tối ưu hóa Đối với nhu cầu đào tạo phân tán quy mô lớn Loại phiên bản p4d.24xlarge được thiết kế để lưu trữ cục bộ nhanh chóng và một bảng nối mạng nhanh với tối đa 400 gigabit và chúng tôi thực sự khuyên bạn nên lựa chọn nó như một tùy chọn hiệu quả nhất cho đào tạo phân tán.

Kết luận

Với thư viện song song mô hình trong SageMaker, chúng tôi nhận được rất nhiều lợi ích, chẳng hạn như phân vùng mô hình tự động và phân vùng hiệu quả. Trong bài đăng này, chúng tôi đã chia sẻ những thách thức với trường hợp sử dụng ML, những cân nhắc của chúng tôi về các phương pháp đào tạo khác nhau và cách chúng tôi sử dụng thư viện song song mô hình Amazon SageMaker để tăng tốc quá trình đào tạo của mình. Hơn hết, hiện có thể chỉ mất vài giờ để áp dụng các phương pháp hay nhất cho mô hình song song và cải tiến hiệu suất được mô tả ở đây. Nếu bài đăng này giúp bạn hoặc truyền cảm hứng cho bạn để giải quyết một vấn đề, chúng tôi rất muốn nghe về nó! Hãy chia sẻ ý kiến ​​và phản hồi của bạn.

dự án

Để biết thêm thông tin, vui lòng xem sau:


Về các tác giả

Prem Ranga là một Kiến trúc sư Giải pháp Doanh nghiệp có trụ sở tại Atlanta, GA. Anh ấy là thành viên của Cộng đồng lĩnh vực kỹ thuật học máy và thích làm việc với khách hàng trong hành trình ML và AI của họ. Prem đam mê chế tạo người máy, là một nhà nghiên cứu xe tự hành, và cũng đã xây dựng Beer Pours do Alexa điều khiển ở Houston và các địa điểm khác.

Sarah Jane Hồng là người đồng sáng lập và Giám đốc Khoa học tại Latent Space. Nền tảng của cô nằm ở giao điểm của tương tác giữa con người với máy tính và học máy. Trước đây, cô đã lãnh đạo nghiên cứu NLP tại Sonar (được Marchex mua lại), công ty phục vụ các doanh nghiệp trong không gian AI đàm thoại. Cô ấy cũng là một nhà phát triển AR / VR đáng kính, đã nhận được giải thưởng và học bổng từ Oculus, Mozilla Mixed Reality và Microsoft Hololens.

Darryl Barnhart là người đồng sáng lập và Giám đốc Công nghệ tại Latent Space. Anh ấy là một nhà phát triển dày dạn kinh nghiệm về tăng tốc GPU, đồ họa máy tính, dữ liệu quy mô lớn và máy học. Những niềm đam mê khác bao gồm toán học, phát triển trò chơi và nghiên cứu thông tin.

Ian Thompson là người sáng lập và Giám đốc điều hành tại Latent Space. Ian là một kỹ sư và nhà nghiên cứu được truyền cảm hứng từ “khả năng gần kề” - những công nghệ sắp có tác động lớn đến cuộc sống của chúng ta. Hiện đang tập trung vào việc đơn giản hóa và mở rộng việc học đại diện đa phương thức để giúp xây dựng AI an toàn và sáng tạo. Trước đây, ông đã giúp xây dựng các công ty về đồ họa / thực tế ảo (AltspaceVR, được Microsoft mua lại) và giáo dục / NLP (HSE).

Nguồn: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- máy biến áp quy mô /

Dấu thời gian:

Thêm từ Blog Học máy AWS