Tiết kiệm và chính xác: Đào tạo mô hình GPT NeoX và Pythia với AWS Trainium với chi phí hợp lý | Dịch vụ web của Amazon

Tiết kiệm và chính xác: Đào tạo mô hình GPT NeoX và Pythia với AWS Trainium với chi phí hợp lý | Dịch vụ web của Amazon

Các mô hình ngôn ngữ lớn (hoặc LLM) đã trở thành chủ đề của các cuộc trò chuyện hàng ngày. Việc áp dụng nhanh chóng của họ được thể hiện rõ qua lượng thời gian cần thiết để tiếp cận 100 triệu người dùng, con số này đã tăng từ “4.5 năm nhờ facebook” xuống mức thấp nhất mọi thời đại chỉ là “2 tháng nhờ ChatGPT”. Một máy biến áp được huấn luyện trước tổng quát (GPT) sử dụng các cập nhật tự hồi quy nhân quả để đưa ra dự đoán. Nhiều tác vụ khác nhau như nhận dạng giọng nói, tạo văn bản và trả lời câu hỏi được chứng minh là có hiệu suất tuyệt vời nhờ các kiến ​​trúc mô hình này. Một số mẫu gần đây như NeoX, Chim ưng, Loài đà mã ở nam mỹ sử dụng kiến ​​trúc GPT làm xương sống. Việc đào tạo LLM đòi hỏi lượng thời gian tính toán khổng lồ, tiêu tốn hàng triệu đô la. Trong bài viết này chúng tôi sẽ tóm tắt quy trình đào tạo GPT NeoX on Đào tạo AWS, một công cụ tăng tốc học máy (ML) được xây dựng có mục đích được tối ưu hóa cho đào tạo học sâu. Chúng tôi sẽ phác thảo cách chúng tôi đào tạo các mô hình như vậy một cách hiệu quả về mặt chi phí (3.2 triệu token/$) bằng AWS Trainium mà không làm giảm bất kỳ chất lượng mô hình nào.

Tổng quan về giải pháp

Mô hình GPT NeoX và Pythia

GPT NeoXPythia là các mô hình ngôn ngữ nhân quả nguồn mở của Eleuther-AI với khoảng 20 tỷ tham số trong NeoX và 6.9 tỷ tham số trong Pythia. Cả hai đều là mô hình giải mã có thiết kế kiến ​​trúc tương tự như Chat GPT3. Tuy nhiên, chúng cũng có một số bổ sung, cũng được áp dụng rộng rãi trong các mẫu gần đây như Llama. Đặc biệt, chúng có tính năng nhúng vị trí quay (ROPE) với khả năng xoay một phần theo các kích thước đầu. Các mô hình ban đầu (NeoX và Pythia 6.9B) được đào tạo về các nền tảng có sẵn công khai Tập dữ liệu cọc với tính năng chống trùng lặp và sử dụng chương trình phụ trợ Megatron và Deepspeed.

Chúng tôi chứng minh quá trình đào tạo trước và tinh chỉnh các mô hình này trên các phiên bản Trn1 dựa trên AWS Trainium bằng cách sử dụng nơ-ron NeMo thư viện. Để thiết lập bằng chứng khái niệm và tái tạo nhanh chóng, chúng tôi sẽ sử dụng tập hợp con tập dữ liệu Wikipedia nhỏ hơn được mã hóa bằng mã thông báo GPT2 Byte-pair (BPE).

Hương

Tải xuống tập dữ liệu Wikipedia được mã hóa trước như được hiển thị:

export DATA_DIR=~/examples_datasets/gpt2 mkdir -p ${DATA_DIR} && cd ${DATA_DIR} wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-vocab.json
wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-merges.txt
aws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/my-gpt2_text_document.bin . --no-sign-request
aws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/my-gpt2_text_document.idx . --no-sign-request
aws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/license.txt . --no-sign-request

Cả NeoX 20B và Pythia 6.9B đều sử dụng ROPE với khả năng xoay một phần, chẳng hạn như xoay 25% kích thước đầu và giữ cho phần còn lại không xoay. Để triển khai hiệu quả việc xoay một phần trên bộ tăng tốc AWS Trainium, thay vì ghép nối các kích thước quay và không xoay, chúng tôi nối thêm tần số bằng XNUMX cho các kích thước không xoay và sau đó xoay bộ kích thước đầu hoàn chỉnh. Thủ thuật đơn giản này đã giúp chúng tôi cải thiện thông lượng (các chuỗi được xử lý mỗi giây) trên AWS Trainium.

Các bước đào tạo

Để tiến hành chương trình đào tạo, chúng tôi sử dụng Đám mây điện toán đàn hồi Amazon đa nút được quản lý SLURM (Amazon EC2) Cụm Trn1, với mỗi nút chứa một phiên bản trn1.32xl. Mỗi trn1.32xl có 16 máy gia tốc với hai công nhân trên mỗi máy gia tốc. Sau khi tải xuống bản mới nhất nơ-ron NeMo gói, sử dụng được cung cấp neoxtrăn các tập lệnh đào tạo trước và tinh chỉnh với các siêu tham số được tối ưu hóa và thực hiện các thao tác sau đối với quá trình đào tạo bốn nút.

  1. Biên dịch: Biên dịch trước mô hình với ba lần lặp huấn luyện để tạo và lưu biểu đồ:
    sbatch --nodes 4 compile.slurm ./neoX_20B_slurm.sh

  2. Chạy: Thực hiện đào tạo bằng cách tải các biểu đồ được lưu trong bộ nhớ đệm từ các bước đầu tiên
    sbatch --nodes 4 run.slurm ./neoX_20B_slurm.sh

  3. Theo dõi kết quả
    tensorboard --logdir=nemo_experiments/megatron_neox

Cần thực hiện các bước tương tự để chạy mô hình Pythia 6.9B bằng cách thay thế neox_20B_slurm.sh by pythia_6.9B_slurm.sh.

Thí nghiệm huấn luyện trước và tinh chỉnh

Chúng tôi chứng minh quá trình đào tạo trước các mô hình GPT-NeoX và Pythia trên AWS Trainium bằng cách sử dụng nơ-ron NeMo thư viện cho 10k lần lặp và cũng hiển thị tinh chỉnh các mô hình này trong 1k bước. Để đào tạo trước, chúng tôi sử dụng mã thông báo GPT2 BPE bên trong NeMo và làm theo tương tự cấu hình như được sử dụng trong mô hình ban đầu. Tinh chỉnh trên AWS Trainium yêu cầu thay đổi một số tham số (chẳng hạn như hệ số phân chia kích thước từ vựng), được cung cấp trong các tập lệnh tinh chỉnh để phù hợp với sự khác biệt của Megatron so với NeMo và các thay đổi giữa GPU so với AWS Trainium. Thông lượng đào tạo phân tán nhiều nút với số lượng nút khác nhau được hiển thị trong Bảng-1.

Mô hình Tensor song song Đường ống song song Số lượng phiên bản Chi phí ($/giờ) Độ dài trình tự Kích thước lô toàn cầu Thông lượng (seq/giây) Tỷ lệ chi phí-thông lượng (mã thông báo/$)
Pythia 6.9B 8 1 1 7.59 2048 256 10.4 10,102,387
8 1 4 30.36 2048 256 35.8 8,693,881
NeoX 20B 8 4 4 30.36 2048 16384 13.60 3,302,704
8 4 8 60.72 2048 16384 26.80 3,254,134
8 4 16 121.44 2048 16384 54.30 3,296,632
8 4 32 242.88 2048 16384 107.50 3,263,241
8 4 64 485.76 2048 16384 212.00 3,217,708

Bảng 1. So sánh thông lượng trung bình của mô hình GPT NeoX và Pythia để đào tạo lên tới 500 bước với số lượng nút thay đổi. Các giá trn1.32xl được dựa trên mức dự trữ có hiệu lực theo giờ trong 3 năm.

Tiếp theo, chúng tôi cũng đánh giá quỹ đạo mất mát của quá trình đào tạo mô hình trên AWS Trainium và so sánh nó với lần chạy tương ứng trên cụm P4d (lõi GPU Nvidia A100). Cùng với tổn thất đào tạo, chúng tôi cũng so sánh chỉ báo hữu ích như chỉ tiêu độ dốc, là chỉ tiêu 2 của độ dốc mô hình được tính toán ở mỗi lần lặp đào tạo để theo dõi tiến trình đào tạo. Kết quả huấn luyện được thể hiện trong Hình 1, 2 và tinh chỉnh NeoX 20B trong Hình 3.

Mức giảm trung bình trong đào tạo trên tất cả công nhân (trái) và chỉ tiêu độ dốc (phải) ở mỗi bước đào tạo.

Hình 1. Mức giảm trung bình trong đào tạo trên tất cả công nhân (trái) và chỉ tiêu độ dốc (phải) ở mỗi bước đào tạo. NeoX 20B được đào tạo trên 4 nút với tập dữ liệu wiki nhỏ trên GPU và Trainium có cùng siêu tham số đào tạo (kích thước lô toàn cầu = 256). GPU đang sử dụng BF16 và độ chính xác hỗn hợp mặc định trong khi AWS Trainium đang sử dụng BF16 đầy đủ với tính năng làm tròn ngẫu nhiên. Quỹ đạo định mức tổn thất và độ dốc phù hợp với GPU và AWS Trainium.

Tổn thất đào tạo trung bình trên tất cả công nhân (trái) và chỉ tiêu độ dốc (phải) khi đào tạo từng bước (Pythia).

Hình 2. Mức giảm trung bình trong đào tạo trên tất cả công nhân (trái) và chỉ tiêu độ dốc (phải) ở mỗi bước đào tạo. Tương tự như GPT NeoX trong Hình 1, Pythia 6.9B được đào tạo trên 4 nút với tập dữ liệu wiki nhỏ trên GPU và Trainium với cùng các siêu tham số đào tạo (kích thước lô toàn cầu=256). Quỹ đạo định mức mất mát và độ dốc phù hợp với GPU và Trainium.

Tinh chỉnh mô hình GPT NeoX 20B trên GPU và AWS Trainium với mức suy giảm đào tạo trung bình trên tất cả nhân viên (trái) và định mức độ dốc (phải).

Hình 3. Tinh chỉnh mô hình GPT NeoX 20B trên GPU và AWS Trainium với mức suy giảm đào tạo trung bình trên tất cả nhân viên (trái) và định mức độ dốc (phải). Một tập dữ liệu wiki nhỏ được sử dụng để trình diễn tinh chỉnh. Quỹ đạo định mức tổn thất và độ dốc phù hợp với GPU và AWS Trainium.

Trong bài đăng này, chúng tôi đã giới thiệu về chương trình đào tạo LLM hiệu quả về mặt chi phí trên phần cứng học sâu AWS. Chúng tôi đã đào tạo các mô hình GPT NeoX 20B và Pythia 6.9B trên AWS Trn1 với thư viện Neuron NeMo. Thông lượng bình thường hóa chi phí cho 20 tỷ mô hình với AWS Trainium là khoảng 3.2 triệu token/$ chi tiêu. Cùng với việc đào tạo tiết kiệm chi phí trên AWS Trainium, chúng tôi có được độ chính xác tương tự của mô hình, điều này thể hiện rõ từ việc mất bước đào tạo và quỹ đạo định mức độ dốc. Chúng tôi cũng tinh chỉnh các điểm kiểm tra có sẵn cho mô hình NeoX 20B trên AWS Trainium. Để biết thêm thông tin về chương trình đào tạo phân tán với NeMo Megatron trên AWS Trainium, hãy xem Tài liệu tham khảo AWS Neuron cho NeMo Megatron. Bạn có thể tìm thấy một nguồn tài nguyên tốt để bắt đầu tinh chỉnh mô hình Llama tại đây, Tinh chỉnh Llama2. Để bắt đầu với AWS Trainium được quản lý trên Amazon SageMaker, Xem Huấn luyện Mô hình ML của bạn với AWS Trainium và Amazon SageMaker.


Về các tác giả

Tiết kiệm và chính xác: Đào tạo mô hình GPT NeoX và Pythia với AWS Trainium với chi phí hợp lý | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Bò tót Gupav hiện là Nhà khoa học ứng dụng tại phòng thí nghiệm AI của Amazon Web Services (AWS). Tiến sĩ Gupta đã hoàn thành bằng Tiến sĩ tại USC Viterbi. Mối quan tâm nghiên cứu của ông trải rộng trên lĩnh vực mô hình hóa dữ liệu tuần tự, học phương trình vi phân từng phần, lý thuyết thông tin cho học máy, mô hình động lực phân số và mạng phức tạp. Anh hiện đang nghiên cứu các vấn đề toán học và ứng dụng về hành vi đào tạo LLM, mô hình tầm nhìn với PDE, mô hình đa phương thức lý thuyết thông tin. Tiến sĩ Gupta có các ấn phẩm trên các tạp chí/hội nghị hàng đầu như Neurips, ICLR, ICML, Nature, IEEE Control Society, ACM cyber-physical Society.

Tiết kiệm và chính xác: Đào tạo mô hình GPT NeoX và Pythia với AWS Trainium với chi phí hợp lý | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Ben Snyder là một nhà khoa học ứng dụng với AWS Deep Learning. Mối quan tâm nghiên cứu của ông bao gồm các mô hình nền tảng, học tăng cường và tối ưu hóa không đồng bộ. Ngoài công việc, anh thích đạp xe và cắm trại ở vùng quê.

Tiết kiệm và chính xác: Đào tạo mô hình GPT NeoX và Pythia với AWS Trainium với chi phí hợp lý | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Amith (R) Mamidala là kỹ sư ứng dụng học máy cao cấp tại AWS Annapurna Labs. Tiến sĩ Mamidala đã hoàn thành bằng Tiến sĩ tại Đại học Bang Ohio về điện toán và truyền thông hiệu năng cao. Trong nhiệm kỳ nghiên cứu của mình tại IBM, Tiến sĩ Mamidala đã đóng góp cho dòng máy tính BlueGene thường dẫn đầu bảng xếp hạng Top500 các siêu máy tính mạnh nhất và tiết kiệm điện năng nhất. Dự án đã được trao Huân chương Công nghệ và Sáng tạo Quốc gia năm 2009. Sau một thời gian ngắn làm kỹ sư AI tại một quỹ phòng hộ tài chính, Tiến sĩ Mamidala gia nhập phòng thí nghiệm Annapurna tập trung vào đào tạo mô hình Ngôn ngữ Lớn.

Tiết kiệm và chính xác: Đào tạo mô hình GPT NeoX và Pythia với AWS Trainium với chi phí hợp lý | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Jun (Luke) Huân là nhà khoa học chính tại Phòng thí nghiệm AI của AWS. Tiến sĩ Huân làm việc về AI và Khoa học dữ liệu. Ông đã xuất bản hơn 180 bài báo được bình duyệt trong các hội nghị và tạp chí hàng đầu. Anh đã nhận được Giải thưởng Phát triển nghề nghiệp sớm của Khoa NSF vào năm 2009. Trước khi gia nhập AWS, anh đã làm việc tại bộ phận nghiên cứu của Baidu với tư cách là một nhà khoa học xuất sắc và là người đứng đầu Phòng thí nghiệm Dữ liệu lớn của Baidu. Anh thành lập StyleAI Inc., một công ty khởi nghiệp về AI và giữ chức vụ Giám đốc điều hành kiêm Nhà khoa học trưởng trong năm 2019-2021. Trước khi gia nhập ngành, ông là Giáo sư Charles E. và Mary Jane Spahr tại Khoa EECS tại Đại học Kansas.

Tiết kiệm và chính xác: Đào tạo mô hình GPT NeoX và Pythia với AWS Trainium với chi phí hợp lý | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Shruti Koparkar là Giám đốc tiếp thị sản phẩm cấp cao tại AWS. Cô giúp khách hàng khám phá, đánh giá và áp dụng cơ sở hạ tầng điện toán tăng tốc Amazon EC2 cho nhu cầu học máy của họ.

Dấu thời gian:

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