Trí tuệ nhân tạo
Hiểu về Các Thông Số và Yêu Cầu Bộ Nhớ của Mô Hình Ngôn Ngữ Lớn: Một Cuộc Khám Phá Sâu

By
Aayush Mittal Mittal
Mô Hình Ngôn Ngữ Lớn (LLM) đã chứng kiến những tiến bộ đáng kể trong những năm gần đây. Các mô hình như GPT-4, Google’s Gemini và Claude 3 đang thiết lập các tiêu chuẩn mới về khả năng và ứng dụng. Những mô hình này không chỉ nâng cao khả năng tạo văn bản và dịch thuật mà còn mở ra những khả năng mới trong xử lý đa phương tiện, kết hợp 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.
Chẳng hạn, GPT-4 của OpenAI đã thể hiện sự cải thiện đáng kể trong việc hiểu và tạo văn bản giống con người, trong khi mô hình Gemini của Google excels 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 mượt mà và phù hợp hơn với ngữ cảnh. Tương tự, mô hình Claude 3 của Anthropic được biết đến với khả năng đa ngôn ngữ và hiệu suất nâng cao trong các nhiệm vụ AI.
Khi sự phát triển của LLM tiếp tục tăng tốc, việc hiểu rõ các phức tạp của những mô hình này, đặc biệt là các thông số và yêu cầu bộ nhớ, trở nên quan trọng. Hướng dẫn này nhằm mục đích làm rõ những khía cạnh này, cung cấp một giải thích chi tiết và dễ hiểu.
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à các mạng nơ-ron được đào tạo trên các tập dữ liệu lớn để hiểu và tạo ngôn ngữ con người. Chúng dựa trên các kiến trúc như Transformer, sử dụng các cơ chế như tự chú ý để xử lý và tạo văn bản.
Tầm Quan Trọng Của Thông Số Trong LLM
Thông số là các thành phần cốt lõi của những mô hình này. Chúng bao gồm trọng số và thiên vị, mà mô hình điều chỉnh trong quá trình đào tạo để giảm thiểu lỗi trong dự đoán. Số lượng thông số thường tương quan với khả nă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ớ.
Hiểu Về Kiến Trúc Transformer
Tổng Quan
Kiến trúc Transformer, được giới thiệu trong bài báo “Attention Is All You Need” 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ộ gồm nhiều lớp giống nhau.
Thành Phần Bộ Mã Hóa và Bộ Giải Mã
- Bộ Mã Hóa: Xử lý chuỗi nhập và tạo ra một biểu diễn nhận thức ngữ cảnh.
- Bộ Giải Mã: Tạo ra chuỗi xuất ra sử dụng biểu diễn của bộ mã hóa và các token đã được tạo ra trước đó.
Các Thành Phần Chính
- Chú Ý Đa Đầu: Cho phép mô hình tập trung vào các phần khác nhau của chuỗi nhập cùng một lúc.
- Mạng Nơ-Ron Tuyến Tính: Thêm phi tuyến tính và phức tạp vào mô hình.
- Bình Thường Hóa Lớp: Ổn định và tăng tốc quá trình đào tạo bằng cách bình thường hóa các đầu ra trung gian.
Tính Toán Số Lượng Thông Số
Tính Toán Thông Số Trong LLM Dựa Trên Transformer
Hãy chia nhỏ việc tính toán thông số cho từng thành phần của một LLM dựa trên Transformer. Chúng tôi sẽ sử dụng ký hiệu từ bài báo gốc, nơi d_model đại diện cho chiều của 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ú Ý Đa Đầu:
- Đối với
hđầu, vớid_k = d_v = d_model / h: - Thông số = 4 *
d_model^2 (cho Q, K, V và đầu ra)
- Đối với
- Mạng Nơ-Ron Tuyến Tính:
- Thông số = 2 *
d_model*d_ff+d_model+d_ff - Trong đó
d_ffthường là 4 *d_model
- Thông số = 2 *
- Bình Thường Hóa Lớp:
- Thông số = 2 *
d_model(cho thang và thiên vị)
- Thông số = 2 *
Tổng thông số cho một lớp Transformer:
Thông số_lớp=Thông số_chú_ý+Thông số_ffn+ 2 *Thông số_bình_thường_hóa
Đối với mô hình có N lớp:
- Tổng Thông số =
N*Thông số_lớp+Thông số_nhúng+Thông số_đầu_ra
Ví Dụ Tính Toán
Hãy xem xét một mô hình với các thông số sau:
d_model= 768h(số đầu chú ý) = 12N(số lớp) = 12vocab_size= 50.000
- Lớp Nhúng:
- 50.000 * 768 = 38.400.000
- Chú Ý Đa Đầu:
- 4 * 768^2 = 2.359.296
- Mạng Nơ-Ron Tuyến Tính:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4.719.616
- Bình Thường Hóa Lớp:
- 2 * 768 = 1.536
Tổng thông số cho 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 thông 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 thông số.
Loại Bộ Nhớ
Khi làm việc với LLM, chúng ta cần xem xét hai loại bộ nhớ chính:
- Bộ Nhớ Mô Hình: Bộ nhớ cần thiết để lưu trữ thông số mô hình.
- Bộ Nhớ Làm Việc: Bộ nhớ cần thiết trong quá trình suy luận hoặc đào tạo để lưu trữ các hoạt động trung gian, gradient 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 thông số. Mỗi thông 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 đào tạo chính xác hỗn hợp với số dấu phẩy động 16 bit.
Bộ Nhớ Mô Hình (byte) = Số lượng thông số * Byte mỗi thông số
Đối với mô hình ví dụ của chúng tôi với 123 triệu thông số:
- Bộ Nhớ Mô Hình (32-bit) = 123.383.808 * 4 byte = 493.535.232 byte ≈ 494 MB
- Bộ Nhớ Mô Hình (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 bộ nhớ làm việc có thể thay đổi đáng kể dựa trên nhiệm vụ cụ thể, kích thước lô và chiều dài chuỗi. Một ước tính粗略 cho bộ nhớ làm việc trong quá trình suy luận là:
Bộ Nhớ Làm Việc ≈ 2 * Bộ Nhớ Mô Hình
Này tính đến việc lưu trữ cả thông số mô hình và hoạt động trung gian. Trong quá trình đào tạo, yêu cầu bộ nhớ có thể cao hơn do cần lưu trữ gradient và trạng thái tối ưu hóa:
Bộ Nhớ Đào Tạo ≈ 4 * Bộ Nhớ Mô Hình
Đối với mô hình ví dụ của chúng tôi:
- Bộ Nhớ Làm Việc ≈ 2 * 494 MB = 988 MB ≈ 1 GB
- Bộ Nhớ Đào Tạo ≈ 4 * 494 MB = 1.976 MB ≈ 2 GB
Sử Dụng Bộ Nhớ Steady-State và Peak
Khi đào tạo mô hình ngôn ngữ lớn dựa trên kiến trúc Transformer, việc hiểu yêu cầu bộ nhớ là rất quan trọng để phân bổ tài nguyên hiệu quả. Hãy chia nhỏ yêu cầu bộ nhớ thành hai loại chính: sử dụng bộ nhớ steady-state và peak.
Sử Dụng Bộ Nhớ Steady-State
Sử dụng bộ nhớ steady-state bao gồm các thành phần sau:
- Trọng Số Mô Hình: Các bản sao FP32 của thông số mô hình, yêu cầu 4N byte, nơi N là số lượng thông số.
- Trạng Thái Tối Ưu Hóa: Đối với trình tối ưu hóa Adam, điều này yêu cầu 8N byte (2 trạng thái mỗi thông số).
- Gradient: Các bản sao FP32 của gradient, yêu cầu 4N byte.
- Dữ Liệu Đầu Vào: Giả sử dữ liệu đầu vào là int64, điều này yêu cầu 8BD byte, nơi B là kích thước lô và D là chiều của dữ liệu.
Tổng sử dụng bộ nhớ steady-state có thể được ước tính bằng:
- M_steady = 16N + 8BD byte
Sử Dụng Bộ Nhớ Peak
Sử dụng bộ nhớ peak xảy ra trong quá trình backward khi các hoạt động được lưu trữ để tính toán gradient. Các yếu tố chính đóng góp vào sử dụng bộ nhớ peak là:
- Bình Thường Hóa Lớp: Yêu cầu 4E byte mỗi lớp bình thường hóa, nơi E = BSH (B: kích thước lô, S: chiều 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: chiều dài chuỗi)
- Đầu ra chú ý: 2E byte
- Khối Mạng Nơ-Ron Tuyến Tính:
- Lớp tuyến tính đầu tiên: 2E byte
- Hoạt động GELU: 8E byte
- Lớp tuyến tính thứ hai: 2E byte
- Loss Chéo Entropy:
- Logit: 6BSV byte (V: kích thước từ vựng)
Tổng bộ nhớ hoạt động có thể được ước tính là:
- M_act = L * (14E + 4BSS) + 6BSV byte
Trong đó L là số lớp Transformer.
Tổng Sử Dụng Bộ Nhớ Peak
Sử dụng bộ nhớ peak trong quá trình đào tạo có thể được ước tính bằng cách kết hợp sử dụng bộ nhớ steady-state và bộ nhớ hoạt động:
- M_peak = M_steady + M_act + 4BSV byte
Thuật ngữ bổ sung 4BSV tính đến việc phân bổ thêm tại bắt đầu của quá trình backward.
Bằng cách hiểu các thành phần này, chúng ta có thể tối ưu hóa 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 mô hình ngôn ngữ lớn.
Định Luật Tăng Tốc và Xem Xét Hiệu Suất
Định Luật Tăng Tốc 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 định luật tăng tốc nhất định khi số lượng thông số tăng lên. Kaplan et al. (2020) quan sát thấy rằng hiệu suất mô hình được cải thiện như một hàm số mũ của số lượng thông 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 thông số có thể được ước tính bằng:
Hiệu Suất ∝ N^α
Trong đó N là số lượng thông số và α là một hệ số tăng tốc thường khoảng 0,07 cho các nhiệm vụ mô hình hóa ngôn ngữ.
Điều này ngụ ý rằng để đạt được sự cải thiện 10% về hiệu suất, chúng ta cần tăng số lượng thông số lên một yếu tố của 10^(1/α) ≈ 3,7.
Kỹ Thuật Hiệu Suất
Khi LLM tiếp tục phát triển, các nhà nghiên cứu và thực hành đã phát triển các kỹ thuật khác nhau để cải thiện hiệu suất:
a) Đào Tạo 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ố hoạt động để giảm sử dụng bộ nhớ và yêu cầu tính toán.
b) Song Song Mô Hình: 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 những gì có thể phù hợp trên một thiết bị.
c) Lưu Trữ Gradient: Trao đổi tính toán cho bộ nhớ bằng cách tính toán lại một số hoạt động trong quá trình backward thay vì lưu trữ chúng.
d) Thu Gọn và Quantization: Loại bỏ các trọng số ít quan trọng hoặc giảm độ chính xác của chúng sau khi đào tạo để tạo ra các mô hình nhỏ hơn và hiệu quả hơn.
e) Chưng Cất: Đào tạo 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 bảo tồn nhiều hiệu suất với ít thông số hơn.
Ví Dụ Thực Tiễn 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ỷ thông 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 thông số với các giá trị giả định:
d_model = 12288d_ff = 4 * 12288 = 49152- Số lớp = 96
Đối với một lớp giải mã:
Tổng Thông số = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1,1 tỷ
Tổng cho 96 lớp:
1,1 tỷ * 96 = 105,6 tỷ
Các thông số còn lại đến từ các thành phần khác.
Kết Luận
Hiểu về thông số và yêu cầu bộ nhớ của mô hình ngôn ngữ lớn là rất quan trọng để thiết kế, đào tạo và triển khai những công cụ mạnh mẽ này một cách hiệu quả. Bằng cách chia nhỏ các thành phần của kiến trúc Transformer và xem xét các ví dụ thực tế như GPT, chúng ta có được cái nhìn sâu sắc hơn về sự phức tạp và quy mô của những mô hình này.
Để tìm hiểu thêm về những tiến bộ mới nhất trong 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 Hoàn Chỉnh Về Gemma 2: Mô Hình Ngôn Ngữ Lớn Mới Của Google để có cái nhìn sâu sắc về hiệu suất nâng cao và các tính năng sáng tạo của nó.
- Tìm Hiểu Về Việc Xây Dựng Đại Diện LLM Cho RAG Từ Đầu và Ngoài: Một Hướng Dẫn Toàn Diện thảo luận về các thách thức và giải pháp trong việc tạo ra các mô hình ngôn ngữ lớn.
- Khám Phá Sự Phức Tạp Của Thiết Lập Đào Tạo, Tinh Chỉnh và Suy Luận Của LLM Với GPU NVIDIA và CUDA để tối ưu hóa hệ thống AI.
Tôi đã dành 5 năm qua để đắm mình trong thế giới hấp dẫn của Máy học và Học sâu. Đam mê và chuyên môn của tôi đã dẫn tôi đến việc đóng góp vào hơn 50 dự án kỹ thuật phần mềm đa dạng, với sự tập trung đặc biệt vào AI/ML. Sự tò mò liên tục của tôi cũng đã thu hút tôi đến với Xử lý Ngôn ngữ Tự nhiên, một lĩnh vực tôi渴望 khám phá thêm.
You may like


Nếu một Bot có thể tán tỉnh với trẻ em, thì nó còn được phép làm gì khác với dữ liệu của bạn?


Làm thế nào để lén lút đưa các bài báo khoa học giả mạo qua các nhà đánh giá AI


Các mô hình AI ưa thích viết của con người hơn viết được tạo bởi AI


Cuộc Cách Mạng MoE: Làm Thế Nào Routing Và Chuyên Hóa Nâng Cao Đang Biến Đổi LLMs


Kết Thúc Thời Kỳ Tăng Cường: Tại Sao Các Đột Phá Thuật Toán Quan Trọng Hơn Kích Cỡ Mô Hình


Tại Sao Trí Tuệ Nhân Tạo Không Thể Nhận Ra Nó Không Biết Câu Trả Lời?

