Trí tuệ nhân tạo
Tìm hiểu các tham số và yêu cầu về bộ nhớ của mô hình ngôn ngữ lớn: Tìm hiểu sâu
Được phát hành
6 ngày trướcon
Mục lục
Mô hình ngôn ngữ lớn (LLM) đã chứng kiến những tiến bộ vượt bậc trong những năm gần đây. Các mẫu như GPT-4, Gemini của Google và Claude 3 đang đặt ra các tiêu chuẩn mới về khả năng và ứng dụng. Các mô hình này không chỉ tăng cường khả năng tạo và dịch văn bản mà còn tạo ra bước đột phá mới trong xử lý đa phương thức, kết hợp đầu vào văn bản, hình ảnh, âm thanh và video để cung cấp các giải pháp AI toàn diện hơn.
Ví dụ: GPT-4 của OpenAI đã cho thấy những cải tiến đáng kể trong việc hiểu và tạo văn bản giống con người, trong khi các mô hình Gemini của Google vượt trội trong việc xử lý các loại dữ liệu khác nhau, bao gồm văn bản, hình ảnh và âm thanh, cho phép tương tác liền mạch hơn và phù hợp với ngữ cảnh hơn. Tương tự, các mẫu Claude 3 của Anthropic được chú ý nhờ khả năng đa ngôn ngữ và hiệu suất được nâng cao trong các tác vụ AI.
Khi sự phát triển của LLM tiếp tục tăng tốc, việc hiểu được sự phức tạp của các mô hình này, đặc biệt là các tham số và yêu cầu bộ nhớ của chúng, trở nên rất quan trọng. Hướng dẫn này nhằm mục đích làm sáng tỏ những khía cạnh này, đưa ra lời giải thích chi tiết và dễ hiểu.
Khái niệm cơ bản về mô hình ngôn ngữ lớn
Mô hình ngôn ngữ lớn là gì?
Mô hình ngôn ngữ lớn là mạng lưới thần kinh được đào tạo trên bộ dữ liệu lớn để hiểu và tạo ra ngôn ngữ của con người. Họ dựa vào các kiến trúc như Transformers, sử dụng các cơ chế như tự chú ý để xử lý và tạo ra văn bản.
Tầm quan trọng của các tham số trong LLM
Các tham số là thành phần cốt lõi của các mô hình này. Chúng bao gồm trọng số và độ lệch mà mô hình sẽ điều chỉnh trong quá trình đào tạo để giảm thiểu sai sót trong dự đoán. Số lượng tham số thường tương quan với dung lượng và hiệu suất của mô hình nhưng cũng ảnh hưởng đến yêu cầu tính toán và bộ nhớ của nó.
Tìm hiểu kiến trúc máy biến áp
Giới thiệu chung
Kiến trúc Transformer, được giới thiệu trong bài báo “Chú ý là tất cả những gì bạn cần” của Vaswani et al. (2017), đã trở thành nền tảng cho nhiều LLM. Nó bao gồm một bộ mã hóa và một bộ giải mã, mỗi bộ được tạo thành từ nhiều lớp giống hệt nhau.
Các thành phần bộ mã hóa và giải mã
- Mã hoá: Xử lý chuỗi đầu vào và tạo biểu diễn nhận biết ngữ cảnh.
- decoder: Tạo chuỗi đầu ra bằng cách sử dụng biểu diễn của bộ mã hóa và mã thông báo được tạo trước đó.
Khối xây dựng chính
- Chú ý nhiều đầu: Cho phép mô hình tập trung đồng thời vào các phần khác nhau của chuỗi đầu vào.
- Mạng thần kinh chuyển tiếp nguồn cấp dữ liệu: Thêm tính phi tuyến tính và độ phức tạp cho mô hình.
- Chuẩn hóa lớp: Ổn định và tăng tốc đào tạo bằng cách bình thường hóa các đầu ra trung gian.
Tính số tham số
Tính toán các thông số trong LLM dựa trên máy biến áp
Hãy chia nhỏ cách tính tham số cho từng thành phần của LLM dựa trên Transformer. Chúng tôi sẽ sử dụng ký hiệu từ bài báo gốc, trong đó d_model
đại diện cho kích thước của các trạng thái ẩn của mô hình.
- lớp nhúng:
- Thông số =
vocab_size
*d_model
- Thông số =
- Chú ý nhiều đầu:
- Trong
h
đầu, vớid_k = d_v = d_model / h
: - Thông số = 4 *
d_model
^2 (đối với các phép chiếu Q, K, V và đầu ra)
- Trong
- Mạng chuyển tiếp nguồn cấp dữ liệu:
- Thông số = 2 *
d_model
*d_ff
+d_model
+d_ff
- Ở đâu
d_ff
thường là 4 *d_model
- Thông số = 2 *
- Chuẩn hóa lớp:
- Thông số = 2 *
d_model
(đối với quy mô và độ lệch)
- Thông số = 2 *
Tổng tham số cho một lớp Transformer:
Parameters_layer
=Parameters_attention
+Parameters_ffn
+ 2 *Parameters_layernorm
Đối với một mô hình với N
các lớp:
- Tổng tham số =
N
*Parameters_layer
+Parameters_embedding
+Parameters_output
Tính toán ví dụ
Hãy xem xét một mô hình với các thông số kỹ thuật sau:
d_model
= 768h
(số lượng đầu chú ý) = 12N
(số lớp) = 12vocab_size
= 50,000
- lớp nhúng:
- 50,000 * 768 = 38,400,000
- Chú ý nhiều đầu:
- 4 * 768^2 = 2,359,296
- Mạng chuyển tiếp nguồn cấp dữ liệu:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
- Chuẩn hóa lớp:
- 2 * 768 = 1,536
Tổng thông số trên mỗi lớp:
- 2,359,296 + 4,719,616 + (2 * 1,536) = 7,081,984
Tổng thông số cho 12 lớp:
- 12 * 7,081,984 = 84,983,808
Tổng tham số mô hình:
- + = 84,983,808 38,400,000 123,383,808
Mô hình này sẽ có khoảng 123 triệu tham số.
Các loại sử dụng bộ nhớ
Khi làm việc với LLM, chúng ta cần xem xét hai loại sử dụng bộ nhớ chính:
- Bộ nhớ mô hình: Bộ nhớ cần thiết để lưu trữ các tham số của mô hình.
- Bộ nhớ làm việc: Bộ nhớ cần thiết trong quá trình suy luận hoặc huấn luyện để lưu trữ các kích hoạt trung gian, độ dốc và trạng thái tối ưu hóa.
Tính toán bộ nhớ mô hình
Bộ nhớ mô hình liên quan trực tiếp đến số lượng tham số. Mỗi tham số thường được lưu trữ dưới dạng số dấu phẩy động 32 bit, mặc dù một số mô hình sử dụng phương pháp huấn luyện có độ chính xác hỗn hợp với số float 16 bit.
Bộ nhớ mô hình (byte) = Số lượng tham số * Byte trên mỗi tham số
Đối với mô hình ví dụ của chúng tôi với 123 triệu tham số:
- Bộ nhớ mẫu (32-bit) = 123,383,808 * 4 byte = 493,535,232 byte ≈ 494 MB
- Bộ nhớ mẫu (16-bit) = 123,383,808 * 2 byte = 246,767,616 byte ≈ 247 MB
Ước tính bộ nhớ làm việc
Yêu cầu về bộ nhớ làm việc có thể thay đổi đáng kể dựa trên tác vụ cụ thể, kích thước lô và độ dài chuỗi. Ước tính sơ bộ về bộ nhớ làm việc trong quá trình suy luận là:
Bộ nhớ làm việc ≈ 2 * Bộ nhớ mẫu
Tài khoản này lưu trữ cả tham số mô hình và kích hoạt trung gian. Trong quá trình đào tạo, yêu cầu về bộ nhớ có thể còn cao hơn do cần lưu trữ gradient và trạng thái tối ưu hóa:
Bộ nhớ huấn luyện ≈ 4 * Bộ nhớ mẫu
Đối với mô hình ví dụ của chúng tôi:
- Bộ nhớ làm việc suy luận ≈ 2 * 494 MB = 988 MB ≈ 1 GB
- Bộ nhớ huấn luyện ≈ 4 * 494 MB = 1,976 MB ≈ 2 GB
Mức sử dụng bộ nhớ ở trạng thái ổn định và mức sử dụng bộ nhớ cao nhất
Khi đào tạo các mô hình ngôn ngữ lớn dựa trên kiến trúc Transformer, việc hiểu cách sử dụng bộ nhớ là rất quan trọng để phân bổ tài nguyên hiệu quả. Hãy chia yêu cầu về bộ nhớ thành hai loại chính: mức sử dụng bộ nhớ ở trạng thái ổn định và mức sử dụng bộ nhớ cao nhất.
Sử dụng bộ nhớ ở trạng thái ổn định
Việc sử dụng bộ nhớ ở trạng thái ổn định bao gồm các thành phần sau:
- trọng lượng mô hình: Bản sao FP32 của các tham số mô hình, yêu cầu 4N byte, trong đó N là số lượng tham số.
- Trạng thái tối ưu hóa: Đối với trình tối ưu hóa Adam, việc này yêu cầu 8N byte (2 trạng thái cho mỗi tham số).
- Độ dốc: Bản sao FP32 của gradient, yêu cầu 4N byte.
- Dữ liệu đầu vào: Giả sử đầu vào int64, điều này yêu cầu 8BD byte, trong đó B là kích thước lô và D là kích thước đầu vào.
Tổng mức sử dụng bộ nhớ ở trạng thái ổn định có thể được tính gần đúng bằng:
- M_steady = 16N + 8BD byte
Sử dụng bộ nhớ tối đa
Mức sử dụng bộ nhớ cao nhất xảy ra trong quá trình truyền ngược khi các kích hoạt được lưu trữ để tính toán độ dốc. Những yếu tố chính góp phần tạo nên trí nhớ đỉnh cao là:
- Chuẩn hóa lớp: Yêu cầu định mức 4E byte cho mỗi lớp, trong đó E = BSH (B: kích thước lô, S: độ dài chuỗi, H: kích thước ẩn).
- Khối chú ý:
- Tính toán QKV: 2E byte
- Ma trận chú ý: 4BSS byte (S: độ dài chuỗi)
- Đầu ra chú ý: 2E byte
- Khối chuyển tiếp nguồn cấp dữ liệu:
- Lớp tuyến tính đầu tiên: 2E byte
- Kích hoạt GELU: 8E byte
- Lớp tuyến tính thứ hai: 2E byte
- Mất Entropy chéo:
- Nhật ký: 6BSV byte (V: kích thước từ vựng)
Tổng bộ nhớ kích hoạt có thể được ước tính là:
- M_act = L * (14E + 4BSS) + 6BSV byte
Trong đó L là số lớp máy biến áp.
Tổng mức sử dụng bộ nhớ tối đa
Mức sử dụng bộ nhớ cao nhất trong quá trình đào tạo có thể được tính gần đúng bằng cách kết hợp bộ nhớ trạng thái ổn định và bộ nhớ kích hoạt:
- M_peak = M_steady + M_act + 4BSV byte
Thuật ngữ 4BSV bổ sung chiếm một phân bổ bổ sung khi bắt đầu chuyển ngược.
Bằng cách hiểu các thành phần này, chúng ta có thể tối ưu hóa việc sử dụng bộ nhớ trong quá trình đào tạo và suy luận, đảm bảo phân bổ tài nguyên hiệu quả và cải thiện hiệu suất của các mô hình ngôn ngữ lớn.
Luật mở rộng và cân nhắc hiệu quả
Luật mở rộng quy mô cho LLM
Nghiên cứu đã chỉ ra rằng hiệu suất của LLM có xu hướng tuân theo các quy luật tỷ lệ nhất định khi số lượng tham số tăng lên. Kaplan và cộng sự. (2020) đã quan sát thấy rằng hiệu suất của mô hình được cải thiện nhờ quy luật lũy thừa của số lượng tham số, ngân sách tính toán và kích thước tập dữ liệu.
Mối quan hệ giữa hiệu suất mô hình và số lượng tham số có thể được tính gần đúng bằng:
Hiệu suất ∝ N^α
Trong đó N là số lượng tham số và α là số mũ chia tỷ lệ thường khoảng 0.07 cho các tác vụ mô hình hóa ngôn ngữ.
Điều này ngụ ý rằng để đạt được mức cải thiện 10% về hiệu suất, chúng ta cần tăng số lượng tham số theo hệ số 10^(1/α) ≈ 3.7.
Kỹ thuật hiệu quả
Khi LLM tiếp tục phát triển, các nhà nghiên cứu và học viên đã phát triển nhiều kỹ thuật khác nhau để nâng cao hiệu quả:
a) Đào tạo về độ chính xác hỗn hợp: Sử dụng số dấu phẩy động 16-bit hoặc thậm chí 8-bit cho một số thao tác nhất định để giảm mức sử dụng bộ nhớ và yêu cầu tính toán.
b) Mô hình song song: Phân phối mô hình trên nhiều GPU hoặc TPU để xử lý các mô hình lớn hơn mức có thể vừa trên một thiết bị.
c) Điểm kiểm tra độ dốc: Trao đổi tính toán để lấy bộ nhớ bằng cách tính toán lại các kích hoạt nhất định trong quá trình truyền ngược thay vì lưu trữ chúng.
d) Cắt tỉa và lượng tử hóa: Loại bỏ các trọng số ít quan trọng hơn hoặc giảm độ chính xác sau quá trình huấn luyện để tạo ra các mô hình nhỏ hơn, hiệu quả hơn.
e) Chưng cất: Huấn luyện các mô hình nhỏ hơn để bắt chước hành vi của các mô hình lớn hơn, có khả năng duy trì phần lớn hiệu suất với ít tham số hơn.
Ví dụ thực tế và tính toán
GPT-3, một trong những mô hình ngôn ngữ lớn nhất, có 175 tỷ tham số. Nó sử dụng phần giải mã của kiến trúc Transformer. Để hiểu quy mô của nó, hãy chia nhỏ số lượng tham số bằng các giá trị giả định:
d_model = 12288
d_ff = 4 * 12288 = 49152
- Số lớp = 96
Đối với một lớp giải mã:
Tổng tham số = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 tỷ
Tổng cộng cho 96 lớp:
1.1 tỷ * 96 = 105.6 tỷ
Các tham số còn lại đến từ việc nhúng và các thành phần khác.
Kết luận
Hiểu các tham số và yêu cầu bộ nhớ của các mô hình ngôn ngữ lớn là rất quan trọng để thiết kế, đào tạo và triển khai hiệu quả các công cụ mạnh mẽ này. Bằng cách chia nhỏ các thành phần của kiến trúc Transformer và kiểm tra các ví dụ thực tế như GPT, chúng tôi hiểu rõ hơn về mức độ phức tạp và quy mô của các mô hình này.
Để hiểu rõ hơn những tiến bộ mới nhất trong các mô hình ngôn ngữ lớn và ứng dụng của chúng, hãy xem các hướng dẫn toàn diện sau:
- Khám phá Hướng dẫn đầy đủ về Gemma 2: Mô hình ngôn ngữ lớn mở mới của Google để biết thông tin chi tiết về hiệu suất nâng cao và các tính năng cải tiến của nó.
- Tìm hiểu về Xây dựng Đại lý LLM cho RAG từ đầu và xa hơn: Hướng dẫn toàn diện trong đó thảo luận về những thách thức và giải pháp trong thế hệ tăng cường truy xuất.
- Khám phá sự phức tạp của Thiết lập đào tạo, tinh chỉnh và suy luận LLM với GPU NVIDIA và CUDA để tối ưu hóa hệ thống AI.
Tôi đã dành 50 năm qua để đắm mình trong thế giới hấp dẫn của Học máy và Học sâu. Niềm đam mê và chuyên môn của tôi đã giúp tôi đóng góp cho hơn XNUMX dự án kỹ thuật phần mềm đa dạng, đặc biệt tập trung vào AI/ML. Sự tò mò không ngừng của tôi cũng đã lôi kéo tôi đến với Xử lý ngôn ngữ tự nhiên, một lĩnh vực mà tôi háo hức khám phá thêm.
Bạn có thể thích
MARKLLM: Bộ công cụ mã nguồn mở dành cho hình mờ LLM
Triển khai các mô hình ngôn ngữ lớn trên Kubernetes: Hướng dẫn toàn diện
Tìm hiểu về bộ mã hóa tự động thưa thớt, GPT-4 & Claude 3: Khám phá kỹ thuật chuyên sâu
Qwen2 – Mô hình ngôn ngữ đa ngôn ngữ mới nhất của Alibaba thách thức SOTA như Llama 3
LLaVA-UHD: LMM nhận biết mọi tỷ lệ khung hình và hình ảnh có độ phân giải cao
Tăng cường các mô hình ngôn ngữ lớn với dự đoán nhiều mã thông báo
Tin Mới Nhất
- Llama 3.1: Mô hình AI nguồn mở tiên tiến nhất của Meta – Mọi thứ bạn cần biết
- Cách mạng hóa trải nghiệm thiết bị của bạn: AI của Apple đang định nghĩa lại công nghệ như thế nào
- Chìa khóa cho các giải pháp AI thành công? Dữ liệu hành vi
- Vai trò của GAN trong việc cải thiện an ninh mạng
- 10 ứng dụng tạo kiểu tóc AI tốt nhất (tháng 2024 năm XNUMX)