Bài viết này được tổng hợp từ chuyên mục SemiAnalysis của Dylan Patel và Gerald Wong. Cách đây không lâu, Dylan Patel đã tiết lộ tin tức về bức thư nội bộ của Google: Chúng tôi không có Moat, và OpenAI cũng vậy.
GPT-4 là kết quả của sự kết hợp sâu sắc giữa khoa học và đổi mới kỹ thuật, ở giữa có vô số mánh khóe, đối với thế giới bên ngoài, nếu bạn có thể hiểu được cấu trúc của GPT-4, thì chẳng khác nào nắm được "công thức giả kim" của mô hình mạnh nhất. Nội dung này cung cấp kiến trúc GPT-4, cơ sở hạ tầng đào tạo và suy luận, số lượng tham số, tập dữ liệu đào tạo, số mã thông báo, chi phí và mô hình MoE cũng như các thông số và thông tin chi tiết khác rất chi tiết.
Dylan và Gerald tin rằng lý do OpenAI không tiết lộ kiến trúc của GPT-4 không phải vì cái gọi là cân nhắc về An toàn AI, mà vì kiến trúc này rất dễ bị sao chép; George Hotz, được mệnh danh là "hacker thiên tài" , cũng bày tỏ Ý kiến tương tự, tuy nhiên, George lập luận rằng GPT-4 bao gồm MoE gồm 8 mô hình chuyên gia, mỗi mô hình có khoảng 1100 tham số.
Hai tác giả dự đoán rằng các công ty như Google, Meta, Anthropic, Inflection, Character.ai, Tencent, ByteDance, Baidu, v.v. sẽ có các khả năng mô hình tương tự hoặc thậm chí mạnh hơn GPT-4 trong thời gian ngắn. Mặc dù kiến trúc của GPT-4 “dễ bị sao chép”, nhưng theo quan điểm của họ, OpenAI có con hào bền vững nhất—số lượng người dùng cuối lớn nhất, tài năng kỹ thuật hàng đầu và lợi thế của người tiên phong trong các thay đổi giữa các thế hệ trong mô hình.
Nhắc nhở thân thiện: Dữ liệu trong bài viết đến từ bộ sưu tập và nghiên cứu đa bên của tác giả ban đầu và chưa được OpenAI xác nhận. Nghiên cứu của Dylan Patel thường được coi là có độ tin cậy cao và có thể được sử dụng làm tài liệu tham khảo tốt cho GPT-4 tài liệu nghiên cứu chuyên sâu. Ngoài ra, chúng tôi cho rằng các quan điểm dễ sao chép trong bài viết có thể bị nghi ngờ là "đảng giật tít", bởi ngoài OpenAI và Google, các nhà khoa học giỏi về đào tạo và lý luận khung MoE phức tạp hiện đang rất khan hiếm, và GPT-4 hiện tại chỉ là thế hệ đầu tiên của MoE, nó không phải là câu trả lời cuối cùng mà OpenAI đưa ra và rất nhiều kinh nghiệm trong quá trình này không có sẵn cho các nhóm khác và những kinh nghiệm này chắc chắn sẽ trở thành một lợi thế độc nhất của OpenAI.
Sau đây là mục lục của bài viết này, và nên đọc nó kết hợp với những điểm chính.
👇
01 Tổng quan
02 Cấu trúc mô hình
03 Bộ dữ liệu
04 Chiến lược song song
05 Chi phí đào tạo
06 tháng
07 Lý luận
08 Cơ sở hạ tầng và chi phí lập luận
09 Cơ chế chú ý đa truy vấn
10 đợt liên tiếp
11 Giải mã suy đoán
12 tầm nhìn đa phương thức
01.Tổng quan
Khả năng kỹ thuật của OpenAI và những gì họ đã tạo ra thật đáng kinh ngạc, nhưng điều đó không có nghĩa là các giải pháp là không thể vượt qua. Giải pháp của họ rất tinh tế, và nó cũng liên quan đến việc xem xét và cân bằng một loạt các yếu tố phức tạp, và việc mở rộng quy mô mô hình chỉ là một phần trong đó. **Rào bền vững nhất của OpenAI đến từ ba khía cạnh: thứ nhất, họ có nhiều người dùng trong thế giới thực nhất, thứ hai, tài năng kỹ thuật hàng đầu và cuối cùng, họ có khả năng tiếp tục duy trì lợi thế hàng đầu trong phát triển mô hình trong tương lai. **
Nó không chỉ có giá trị để hiểu tại sao GPT-4 chọn một kiến trúc nhất định, mà gần đây hơn, chúng tôi cũng sẽ phác thảo chi phí đào tạo và suy luận của GPT-4 trên A100 và cách sử dụng H100 trong kiến trúc mô hình thế hệ tiếp theo được mở rộng.
Từ GPT-3 đến GPT-4, OpenAI muốn tăng kích thước của mô hình lên gấp 100. Cốt lõi của quá trình này đương nhiên là vấn đề chi phí**. Máy biến áp dày đặc là kiến trúc mô hình thường được sử dụng như OpenAI GPT-3, Google PaLM, Meta LLaMA, TII Falcon, MosaicML MPT, v.v. Hiện tại, có ít nhất 50 công ty sử dụng kiến trúc này để đào tạo LLM, đây là một ví dụ điển hình về kiến trúc nhưng khả năng mở rộng của nó rất hạn chế.
AI Brick Wall đã thảo luận về chi phí đào tạo của mô hình trong bài viết này, trước khi GPT-4 được phát hành. Từ góc độ chi phí đào tạo, mô hình dày đặc (máy biến áp dày đặc) sắp phải đối mặt với "Bức tường gạch AI" của riêng mình.
Tường gạch AI: Phần cứng ở giai đoạn này đã đạt đến giới hạn về Máy biến áp dày đặc, vì vậy việc liên tục mở rộng quy mô của mô hình thành mô hình có một nghìn tỷ hoặc mười nghìn tỷ tham số là không thực tế và tốn kém. Trước thế hệ phần cứng mới, cần có nhiều chiến lược và kỹ thuật khác nhau để giảm chi phí đào tạo, nâng cao hiệu quả đào tạo mô hình và mở rộng mô hình lên số tham số cao hơn. Tác giả tin rằng loạt công nghệ này sẽ được hiện thực hóa vào khoảng năm 2023 và các công ty có khả năng tham gia bao gồm OpenAI, Google, DeepMind, Microsoft và Nvidia. Nhiều chiến lược trong số này đã được trình bày tại hội nghị NeurIPS và có thể có tác động lớn đến các ứng dụng AI.
Nhưng trong 6 tháng qua, chúng tôi nhận ra rằng chi phí đào tạo có thể không thành vấn đề. Dù việc bỏ ra hàng triệu, thậm chí hàng trăm triệu USD để đào tạo người mẫu nghe có vẻ điên rồ nhưng thực ra lại là chuyện nhỏ đối với các ông lớn công nghệ. Một mô hình lớn là một dự án đầu tư vốn (mục hàng Capex) và mô hình càng lớn thì kết quả càng tốt Yếu tố hạn chế duy nhất là liệu con người có đủ khả năng và thời gian để cung cấp phản hồi và sửa đổi cấu trúc mô hình trong khi mở rộng mô hình hay không tỉ lệ.
Meta đầu tư hơn 16 tỷ đô la vào "Metaverse" mỗi năm, Google chi khoảng 10 tỷ đô la cho các nỗ lực dự án mới, Amazon chi hơn 50 tỷ đô la cho Alexa và tiền điện tử là "những thứ không có giá trị". Hơn 100 tỷ đô la bị lãng phí. Xã hội nói chung sẽ chi hơn 100 tỷ đô la để tạo ra các siêu máy tính có khả năng đào tạo các mô hình quy mô lớn có thể được sản xuất theo nhiều cách khác nhau. Nhiều quốc gia và công ty sẽ lặp lại nỗ lực đào tạo** trên các mô hình lớn, vốn là "cuộc chạy đua vũ trang trong không gian"** mới. So với "lãng phí tài nguyên" trước đây, giá trị thực sẽ được hiện thực hóa trong thời gian ngắn do sự xuất hiện của các trợ lý con người và các tác nhân tự trị.
Nhưng trong vài năm tới, Google, Meta và OpenAI, Microsoft và các công ty khác sẽ chi hơn 100 tỷ đô la Mỹ để xây dựng một siêu máy tính để đào tạo mô hình.
Vấn đề quan trọng hơn của việc mở rộng quy mô của mô hình, "Bức tường gạch AI" thực sự, nằm ở liên kết suy luận. Mục tiêu ở đây là tách rời sức mạnh tính toán đào tạo khỏi sức mạnh tính toán suy luận, vì vậy, đối với bất kỳ mô hình nào sẽ được triển khai, việc đào tạo ngoài mức tối ưu Chinchilla của DeepMind là điều hợp lý. (Chọn lưu ý: Tăng lượng dữ liệu huấn luyện để làm cho mô hình học quá mức là một chiến lược để tăng khả năng của các mô hình nhỏ và giảm chi phí suy luận.) Đây là lý do tại sao kiến trúc mô hình thưa thớt (sparse model architecture) được sử dụng. Lý do theo kiến trúc này không Không phải tất cả các tham số cần phải hoạt động.
Chinchilla tối ưu: Từ bài báo của Deepmind về Mô hình ngôn ngữ lớn tối ưu cho điện toán đào tạo, nó cho biết nên sử dụng kích thước mô hình và kích thước dữ liệu nào để đạt được tổn thất thấp nhất khi có tổng số FLOPS cố định.
Hiện tại, Chinchilla-optimal là chiến lược tối ưu về mặt đào tạo và đào tạo với nhiều mã thông báo hơn để vượt qua tác dụng của Chinchilla-optimal là chiến lược tối ưu về mặt suy luận. Và vì chi phí lý tính chiếm “cái đầu to” nên hầu hết các công ty sẽ chọn chiến lược vượt quá Chinchilla-tối ưu.
Bản chất của vấn đề trong liên kết suy luận là chi phí triển khai mô hình cho người dùng và Đại lý quá cao. Chi phí suy luận cao hơn nhiều lần so với chi phí đào tạo và giải quyết vấn đề này là mục tiêu của OpenAI về kiến trúc mô hình và cơ sở hạ tầng.
Khi nói đến suy luận với các mô hình lớn, đặc biệt là các mô hình dày đặc, kích thước mô hình có thể trở thành một vấn đề đa chiều. Trên thiết bị AI- Con dao hai lưỡi Bài viết này đã thảo luận về tình huống trong môi trường điện toán biên. Nói một cách đơn giản, các thiết bị đầu cuối không bao giờ có thể có thông lượng và băng thông bộ nhớ cần thiết để triển khai các mô hình ngôn ngữ lớn.Ngay cả khi băng thông đủ, hiệu quả của các thiết bị biên trong việc sử dụng tài nguyên máy tính phần cứng là rất thấp. Các trung tâm dữ liệu phải đối mặt với các vấn đề tương tự.
Việc sử dụng tài nguyên máy tính là rất quan trọng đối với các trung tâm dữ liệu và đám mây. (Lưu ý: Hiện tại, giới hạn trên của việc sử dụng GPU/TPU trong ngành là khoảng 50%.) Một trong những lý do quan trọng khiến phần mềm của NVIDIA được khen ngợi rộng rãi là trong quá trình liên tục tung ra thế hệ GPU mới, NVIDIA đang cũng liên tục cập nhật Một thế hệ phần mềm giúp tăng cường sử dụng FLOPS bằng cách cho phép di chuyển dữ liệu thông minh hơn quanh các chip, giữa các chip và giữa các bộ nhớ.
FLOPS: Floating Point Operations Per Second, là đơn vị dùng để đo tốc độ hoạt động của máy tính. FLOPS càng cao, máy tính có thể xử lý sự cố càng tốt. Khả năng tính toán của GPU chủ yếu đến từ FLOPS mà nó có thể cung cấp, FLOPS do GPU cung cấp càng cao thì khả năng tính toán của nó càng mạnh.
Ở giai đoạn này, các trường hợp sử dụng suy luận LLM chủ yếu là "trợ lý trực tiếp", có nghĩa là nó phải đạt được thông lượng đủ cao để thực sự hữu ích cho người dùng. Lấy con người làm ví dụ, tốc độ đọc trung bình của con người là khoảng 250 từ mỗi phút, và một số người có thể đạt khoảng 1.000 từ mỗi phút, tương ứng với mô hình, nó có nghĩa là xuất ra ít nhất 8,33 mã thông báo mỗi giây, tốt nhất là 33,33 mã thông báo mỗi giây mã thông báo, nó có thể đáp ứng tất cả các nhu cầu của con người.
Tuy nhiên, do giới hạn của băng thông bộ nhớ, ngay cả trên máy chủ GPU NVIDA H100 mới nhất, mô hình dày đặc (dense model) với hàng nghìn tỷ tham số cũng không thể đạt được thông lượng này về mặt toán học. Mỗi khi mã thông báo được tạo, nó cần được tải từ bộ nhớ vào chip và sau đó mã thông báo này được gửi lại để tạo mã thông báo tiếp theo. Ngoài ra, bộ nhớ đệm KV (KV Cache) để thực hiện cơ chế chú ý cũng cần thêm băng thông.
KV Cache (KV Cache): Trong quá trình lấy mẫu, kiểu máy Biến áp sẽ thực hiện thao tác tự chú ý (Self-Attention), thao tác này cần trích xuất một giá trị khóa cho từng mục trong chuỗi hiện tại (cho dù đó là /context hoặc mã thông báo được tạo) (Khóa-Giá trị, KV). Các vectơ này được lưu trữ trong một ma trận, thường được gọi là bộ đệm KV hoặc bộ đệm quá khứ.
Chức năng của bộ đệm KV là tránh tính toán lại vectơ khóa-giá trị mỗi khi mã thông báo được lấy mẫu. Sử dụng các giá trị K và V được tính toán trước có thể tiết kiệm rất nhiều thời gian tính toán, mặc dù nó sẽ chiếm một số không gian lưu trữ. Bộ đệm KV đóng một vai trò rất quan trọng trong mô hình Máy biến áp và có thể giúp cải thiện đáng kể hiệu quả và hiệu suất của mô hình.
Sơ đồ này giả định rằng việc không hợp nhất từng thao tác là không hiệu quả và cơ chế chú ý đó yêu cầu băng thông bộ nhớ và chi phí phần cứng tương đương khi đọc tham số. Trên thực tế, ngay cả với các thư viện "được tối ưu hóa" như NVIDIA FasterTransformer, tổng chi phí sẽ cao hơn.
Hình trên cho thấy băng thông bộ nhớ cần thiết để phục vụ LLM một người dùng với thông lượng đủ cao. Từ bức ảnh này có thể thấy rằng:
• Ngay cả băng thông gấp 8 lần H100 cũng không thể phục vụ mô hình dày đặc với quy mô 1 nghìn tỷ tham số với tốc độ 33,33 mã thông báo mỗi giây;
• Hơn nữa, việc sử dụng FLOPS của 8x H100 vẫn dưới 5% ở mức 20 mã thông báo mỗi giây, dẫn đến chi phí suy luận rất cao.
Trên thực tế, đối với hệ thống H100 song song 8 chiều tensor ngày nay, ràng buộc suy luận là khoảng 300 tỷ tham số feed-forward.
Tuy nhiên, OpenAI đang đạt được tốc độ đọc của con người với A100 và các mẫu có >1 nghìn tỷ tham số, được phổ biến rộng rãi ở mức giá thấp 0,06 USD trên 1000 mã thông báo và điều này có thể thực hiện được chính xác là do kiến trúc thưa thớt của nó.
Tiếp theo, chúng ta sẽ thảo luận về kiến trúc mô hình GPT-4, cơ sở hạ tầng cho đào tạo và suy luận, số lượng tham số, thành phần của tập dữ liệu đào tạo, số lượng mã thông báo, số lớp, chiến lược song song, bộ mã hóa hình ảnh đa phương thức, v.v... đằng sau một loạt các thiết kế kỹ thuật khác nhau.. Các cân nhắc, kỹ thuật triển khai và cách OpenAI giải quyết các tắc nghẽn trong suy luận mô hình lớn.
02. Cấu trúc mô hình
Quy mô của GPT-4 gấp hơn 10 lần so với GPT-3, chúng tôi ước tính rằng nó có khoảng 1,8 nghìn tỷ tham số và các tham số này được phân bổ trên 120 lớp biến áp. Để so sánh, các tham số của GPT-3 khoảng 1750 tỷ. (Lưu ý: GPT-3 chỉ có 12 lớp biến áp và số lớp bằng 1/10 so với GPT-4.)
Để kiểm soát chi phí, OpenAI đã chọn sử dụng mô hình MoE. OpenAI sử dụng 16 chuyên gia loại MLP.2 trong mô hình, mỗi chuyên gia có khoảng 111 tỷ tham số. Hai trong số các mô hình chuyên gia này được gọi trong mỗi lần chuyển tiếp.
• Mixture-of-Experts (MoE): Mô hình MoE là kiến trúc deep learning, thường bao gồm nhiều chuyên gia (Expert), mỗi chuyên gia chịu trách nhiệm xử lý các khía cạnh khác nhau của dữ liệu đầu vào, và có bộ tham số riêng (có cũng có một số tham số, chẳng hạn như nhúng, có thể được chia sẻ bởi tất cả các chuyên gia, tức là các tham số được chia sẻ). Trong quá trình suy luận của mô hình, theo các đặc điểm khác nhau của dữ liệu đầu vào, mô hình sẽ định tuyến đầu vào cho các chuyên gia khác nhau, mỗi chuyên gia xử lý đầu vào được gán tương ứng theo bộ tham số của nó và hoàn thành đầu ra. Đầu ra cuối cùng là tích hợp đầu ra của mỗi chuyên gia. .
• MLP: Multi-Layer Perceptron (Multi-Layer Perceptron) MLP là mạng nơ-ron nhân tạo bao gồm nhiều lớp ẩn, trong mô hình MoE thường có nhiều chuyên gia MLP độc lập.
Có nhiều tài liệu thảo luận về cách định tuyến (gán) từng token đang chờ xử lý cho một mô hình chuyên gia, nhưng có ý kiến cho rằng bộ thuật toán mà OpenAI sử dụng khá đơn giản, ít nhất là GPT-4 như thế này.
Ngoài ra, khoảng 55 tỷ tham số được chia sẻ được sử dụng trong cơ chế chú ý.
Mỗi suy luận chuyển tiếp (tạo mã thông báo) chỉ sử dụng khoảng 280 tỷ tham số và 560 TFLOP, so với khoảng 1,8 nghìn tỷ tham số và 3700 TFLOP cần thiết cho mỗi suy luận chuyển tiếp nếu mô hình dày đặc được sử dụng thuần túy.
03. Bộ dữ liệu
GPT-4 đã được đào tạo trên khoảng 13 nghìn tỷ mã thông báo, điều này hợp lý khi xét rằng CommonCrawl RefinedWeb chứa khoảng 5 nghìn tỷ mã thông báo chất lượng cao. Để tham khảo, các mô hình PaLM của Deepmind và Chinchilla của Google đã được đào tạo với khoảng 1,4 nghìn tỷ mã thông báo và khoảng 0,78 nghìn tỷ mã thông báo, tương ứng và PaLM2 được cho là được đào tạo trên khoảng 5 nghìn tỷ mã thông báo.
CommonCrawl Refinedweb:
CommonCrawl là một dự án phi lợi nhuận nhằm xây dựng và duy trì bộ dữ liệu Internet mở và có thể truy cập, sử dụng công nghệ trình thu thập dữ liệu web để thường xuyên quét các trang web trên Internet và sắp xếp các trang web cũng như siêu dữ liệu liên quan và kho lưu trữ. CommonCrawl RefinedWeb là một thư viện gồm các văn bản chất lượng cao mà CommonCrawl đã sàng lọc từ dữ liệu thô được thu thập sau khi xem xét thuật toán và con người.
Bộ dữ liệu được OpenAI sử dụng để đào tạo GPT-4 không phải là 13 nghìn tỷ mã thông báo duy nhất. Ngược lại, do thiếu mã thông báo chất lượng cao, bộ dữ liệu này chứa nhiều kỷ nguyên. Có 2 kỷ nguyên cho dữ liệu dựa trên văn bản và 4 kỷ nguyên cho dữ liệu dựa trên mã. (Lưu ý: Điều này đề cập đến một số văn bản và mã chất lượng cao đã được mô hình học nhiều lần.) Điều này còn lâu mới đạt được mức tối ưu của Chinchilla (mô hình cần được đào tạo với số lượng mã thông báo gấp đôi), điều này cũng cho thấy rằng mạng dễ lấy mã thông báo là không đủ. Mã thông báo văn bản chất lượng cao thực sự tồn tại trên mạng phải gấp 1000 lần hiện có và mã thông báo âm thanh và video thậm chí còn nhiều hơn, nhưng việc thu thập các mã thông báo này không thể đạt được chỉ bằng cách quét web. Thật không may, chúng tôi không tìm thấy nhiều thông tin về dữ liệu RLHF của OpenAI.
Một epoch là quá trình sử dụng tất cả các mẫu trong toàn bộ tập huấn luyện (training set) để huấn luyện mô hình một lần. Cụ thể, một epoch bao gồm nhiều bước huấn luyện (training Step), mỗi bước huấn luyện là nhập một lô mẫu nhỏ vào mô hình để huấn luyện, đồng thời cập nhật các tham số của mô hình để giảm thiểu hàm mất mát (loss function).
Nếu epoch quá nhỏ, mô hình có thể không tận dụng được hết thông tin trong tập huấn luyện, dẫn đến tình trạng thiếu trang, nghĩa là mô hình không thể khớp tốt với dữ liệu huấn luyện, dẫn đến hiệu suất kém trên tập kiểm tra . Ngược lại, nếu một kỷ nguyên quá lớn, mô hình có thể bị quá khớp, học quá nhiều nhiễu và các đặc trưng cục bộ trong tập huấn luyện, trong khi bỏ qua các đặc trưng chung.
Trong giai đoạn tiền đào tạo, độ dài ngữ cảnh (phần tiếp theo) là 8k. Phiên bản ngữ cảnh 32k của GPT-4 được triển khai dựa trên tinh chỉnh 8k sau khi đào tạo trước.
Kích thước lô đã tăng dần trên cụm trong vài ngày, nhưng cuối cùng, OpenAI đã sử dụng kích thước lô lên tới 60 triệu. Tất nhiên, vì không phải mọi tham số đều nhìn thấy tất cả các tham số nên đây chỉ là kích thước lô 7,5 triệu cho mỗi chuyên gia.
Batch size đề cập đến số lượng mẫu huấn luyện cho mỗi lần lặp (iteration) hoặc chuyển tiếp (forward pass). Trong quá trình đào tạo mô hình, dữ liệu được chia thành các lô để đào tạo và Kích thước lô cho biết số lượng mẫu trong mỗi lô. Ưu điểm của đào tạo hàng loạt là nó có thể tránh được các hạn chế về bộ nhớ và tiết kiệm tài nguyên máy tính để tính toán lặp lại các kết quả trung gian.
Kích thước của Batch Size có ảnh hưởng lớn đến hiệu quả đào tạo và tốc độ của mô hình. Batch Size càng lớn thì tính toán cập nhật tham số mỗi lần càng lớn, nhưng quá trình huấn luyện sẽ ổn định hơn, vì các mẫu trong mỗi Batch có thể lấy trung bình độ nhiễu và độ không đảm bảo. Mặt khác, nếu Kích thước lô quá nhỏ, quá trình đào tạo có thể trở nên không ổn định và cần nhiều bước đào tạo hơn để hội tụ đến giải pháp tối ưu. Ngoài ra, kích thước của Batch Size cũng sẽ bị giới hạn bởi tài nguyên phần cứng. Do đó, trong các ứng dụng thực tế, điều rất quan trọng là chọn Kích thước lô phù hợp.
04. Chiến lược song song
Xử lý song song trên tất cả các GPU A100 là rất quan trọng.
OpenAI sử dụng quy mô 8 chiều (8-way) tensor parallelism (Tensor Parallelism), sở dĩ là 8 chiều (8-way) vì đây là giới hạn của NVLink. Ngoài ra, chúng tôi cũng nghe nói rằng OpenAI đang sử dụng chiến lược song song hóa đường ống 15 chiều (15-way). Về mặt lý thuyết, 15 chiều là quá nhiều nếu xét đến thời gian giao tiếp dữ liệu và tính toán, nhưng cũng hợp lý nếu chúng bị giới hạn bởi dung lượng bộ nhớ.
Có một số mô hình song song phân tán cổ điển trong đào tạo mô hình lớn, đó là Song song đường ống, Song song dữ liệu và Song song tenor. FastSpeed, khung đào tạo phân tán mã nguồn mở của Microsoft, kết hợp ba mô hình song song này.
Nếu bạn chỉ sử dụng song song đường ống và song song tensor, các tham số trên mỗi GPU cần khoảng 30 GB theo FP16 và sau khi tính đến bộ đệm KV và chi phí KV, nếu hầu hết các GPU được OpenAI sử dụng là A100 40 GB, thì kiến trúc này từ Nó là cũng hợp lý về mặt lý thuyết. OpenAI có thể sử dụng ZeRo giai đoạn 1, FSDP cấp khối hoặc song song dữ liệu được chia sẻ kết hợp.
• Chi phí KV (KV trên không): đề cập đến gánh nặng do chi phí bổ sung gây ra trong hệ thống lưu trữ KV. Các chi phí chung này có thể bao gồm siêu dữ liệu để lưu trữ và quản lý các cặp khóa-giá trị, cấu trúc chỉ mục, sao chép và đồng bộ hóa dữ liệu, giao tiếp mạng, v.v. Việc tăng chi phí KV có thể dẫn đến suy giảm hiệu suất, tăng yêu cầu lưu trữ và tăng độ phức tạp của hệ thống.
• Giai đoạn 1 của ZeRo: Zero (Trình tối ưu hóa dự phòng bằng không) có nghĩa là mỗi thẻ lưu trữ trạng thái tối ưu hóa hoàn chỉnh. Nếu mỗi thẻ chỉ lưu trữ một phần của trạng thái trình tối ưu hóa, thì trạng thái trình tối ưu hóa của tất cả các thẻ cùng nhau tạo thành một trạng thái hoàn chỉnh, nghĩa là Pos (Trạng thái trình tối ưu hóa phân vùng), được gọi là Giai đoạn 1.
• FSDP cấp khối: đề cập đến công nghệ Lượng tử hóa động chính xác đầy đủ (Full Precision Dynamic Quantization) dựa trên khối. Độ chính xác của mô hình cao hơn có thể được bảo toàn trong quá trình đào tạo và suy luận, làm cho chi phí suy luận mô hình thấp hơn.
Lý do tại sao FSDP mô hình đầy đủ không được sử dụng có thể là chi phí truyền thông cao. Mặc dù OpenAI có mạng tốc độ cao giữa hầu hết các nút, nhưng có thể không phải tất cả các nút, chúng tôi nghĩ rằng có ít nhất một số cụm có băng thông kết nối thấp hơn nhiều so với các cụm khác.
Không rõ làm thế nào OpenAI tránh được bong bóng khổng lồ với tính song song đường ống cao như vậy. Rất có thể họ chỉ chịu chi phí.
Bong bóng: Thời gian trễ hoặc chờ trong mỗi lô do mức độ song song của đường ống cao. Điều đó có nghĩa là trong quá trình tính toán song song cao, do tốc độ tính toán khác nhau của các bộ phận khác nhau, một số bộ phận có thể phải đợi các bộ phận khác hoàn thành phép tính, dẫn đến độ trễ hoặc thời gian nhàn rỗi. Trong trường hợp này, "bong bóng" đề cập đến các khoảng thời gian không hoạt động hoặc chờ đợi này. Câu này có nghĩa là họ có thể chấp nhận rằng có một số thời gian nhàn rỗi hoặc chậm trễ trong quá trình tính toán.
05. Chi phí đào tạo
OpenAI đã sử dụng khoảng 2,15e25 FLOPS trong quá trình đào tạo GPT-4, trên khoảng 25.000 GPU A100 trong 90 đến 100 ngày đào tạo, trong đó mức sử dụng năng lượng tính toán tối đa là khoảng 32% đến 36%. **
Mức sử dụng cực kỳ thấp này một phần là do số lượng lớn các lỗi yêu cầu khởi động lại các trạm kiểm soát, với các bong bóng được đề cập ở trên chiếm rất nhiều chi phí.
Một lý do khác là việc giảm tất cả trên rất nhiều GPU là rất tốn kém. Đặc biệt nếu chúng tôi nghi ngờ rằng cụm thực sự được tạo thành từ nhiều cụm nhỏ hơn với kết nối mạng tương đối yếu, chẳng hạn như kết nối không chặn 800G/1.6T giữa các phần khác nhau của cụm, nhưng một số chỉ có thể kết nối ở tốc độ 200G/400G.
all-reduce là một hoạt động giao tiếp trong điện toán song song, được sử dụng để thực hiện giảm dữ liệu toàn cầu trong điện toán phân tán. Trong deep learning phân tán, all-reduce là một hoạt động giao tiếp phổ biến để chia sẻ và tổng hợp thông tin độ dốc giữa nhiều nút điện toán, để cập nhật các tham số mô hình trong quá trình đào tạo.
Nếu chi phí của họ trên Đám mây là khoảng 1 đô la mỗi giờ cho mỗi A100, thì con số đó lên tới ~63 triệu đô la chỉ riêng cho buổi đào tạo này**. Điều này không bao gồm tất cả các lần thử, lần thử không thành công và các chi phí khác cho việc thu thập dữ liệu, RLHF, nhân viên, v.v. Khi các yếu tố này được tính đến, chi phí thực tế cao hơn nhiều. Ngoài ra, bạn cũng cần cân nhắc rằng bạn cần có một đội ngũ để hoàn thiện cấu hình chip, thiết bị mạng và trung tâm dữ liệu, chịu vốn đầu tư (Capex) và cho bạn thuê.
Hiện tại, quá trình đào tạo trước có thể được thực hiện trong khoảng 55 ngày với khoảng 8.192 H100 với tổng chi phí là 21,5 triệu USD, mỗi GPU H100 có giá 2 USD/giờ.
Chúng tôi hy vọng chín công ty sẽ có thêm GPU H100 vào cuối năm nay. Có thể những chiếc H100 này sẽ không được sử dụng để đào tạo người mẫu, nhưng những công ty này chắc chắn sẽ nắm lấy những người mẫu lớn và trở thành những người chơi quan trọng. Meta dự kiến sẽ có hơn 100.000 H100 vào cuối năm nay, một phần đáng kể trong số đó sẽ được triển khai trong các trung tâm dữ liệu của riêng họ để suy luận, mặc dù cụm đơn lớn nhất của họ sẽ có hơn 25.000 GPU H100. (Lưu ý: Tài nguyên điện toán của Meta sẽ làm cho khả năng của LLaMA phát triển thành một biến quan trọng để triển khai nguồn mở và riêng tư.) Nhiều công ty sẽ đào tạo một mô hình có khả năng tương tự như GPT-4 trước cuối năm nay.
06.MoE
MoE là một cách hiệu quả để giảm số lượng tham số trong quá trình suy luận, đồng thời nó cũng tăng số lượng tham số, giúp mã hóa nhiều thông tin hơn trên mỗi mã thông báo đào tạo. Vì rất khó để có đủ mã thông báo chất lượng cao nên cần phải chọn kiến trúc MoE. Bởi vì nếu OpenAI thực sự muốn triển khai Chinchilla-Optimal, họ phải đào tạo gấp đôi số lượng mã thông báo hiện tại.
Điều đó đang được nói, OpenAI thực hiện một số sự đánh đổi. Ví dụ: xử lý MoE trong quá trình suy luận là rất khó vì không phải mọi phần của mô hình đều được sử dụng khi tạo mọi mã thông báo. Điều này có nghĩa là một số bộ phận có thể không hoạt động trong khi các bộ phận khác đang được sử dụng. Điều này có thể ảnh hưởng nghiêm trọng đến việc sử dụng khi phục vụ người dùng.
Các nhà nghiên cứu đã chứng minh rằng sử dụng 64 đến 128 chuyên gia mang lại kết quả thua lỗ tốt hơn so với sử dụng 16 chuyên gia, nhưng đây chỉ là nghiên cứu. Có một số lý do để giảm số lượng các chuyên gia. Một trong những lý do OpenAI chọn 16 chuyên gia là việc có nhiều chuyên gia hơn sẽ khiến việc khái quát hóa và đạt được sự hội tụ trở nên khó khăn hơn. Với một đợt đào tạo lớn như vậy, OpenAI chọn cách thận trọng hơn về số lượng chuyên gia.
Ngoài ra, việc sử dụng ít chuyên gia hơn cũng hữu ích cho các kiến trúc suy luận. Có nhiều sự đánh đổi phức tạp khác nhau khi chuyển sang kiến trúc suy luận MoE. Hãy bắt đầu với sự đánh đổi suy luận LLM cơ bản, sau đó khám phá các vấn đề mà OpenAI gặp phải và các lựa chọn mà họ đã đưa ra.
07. Lập luận
Trong phần này, trước tiên chúng tôi muốn chỉ ra rằng mọi công ty LLM mà chúng tôi liên hệ đều nghĩ rằng thư viện suy luận FasterTransformer của NVIDIA khá tệ và TensorRT thậm chí còn tệ hơn. Không có khả năng sử dụng các mẫu của Nvidia và sửa đổi chúng, nghĩa là tạo giải pháp của riêng bạn từ đầu, NVIDIA cần giải quyết vấn đề này càng sớm càng tốt để thích ứng với nhu cầu suy luận LLM, nếu không nó sẽ trở thành một công cụ mở trên thực tế. để thêm hỗ trợ phần cứng của bên thứ ba. Ngày càng có nhiều mô hình lớn hơn xuất hiện và nếu NVIDA không thể cung cấp lợi thế về phần mềm trong suy luận và nhân vẫn cần được viết tay, thì MI300 của AMD và các phần cứng khác sẽ có thị trường lớn hơn nhiều.
Có 3 yếu tố chính trong liên kết suy luận của LLM, chủ yếu liên quan đến số lượng chip được sử dụng.
1. Độ trễ
Mô hình phải phản hồi trong một độ trễ hợp lý. Mọi người không muốn đợi vài giây trước khi bắt đầu nhận đầu ra trong ứng dụng trò chuyện. Thời gian xử lý mã thông báo đầu vào và đầu ra có thể dao động.
2. Thông lượng
Mô hình phải xuất ra một số lượng mã thông báo nhất định mỗi giây. Mức sử dụng của con người là khoảng 30 mã thông báo mỗi giây và thông lượng có thể thấp hơn hoặc cao hơn đối với nhiều trường hợp sử dụng khác.
3. Sử dụng
Phần cứng chạy mô hình phải đạt được hiệu suất sử dụng cao, nếu không chi phí sẽ rất cao. Mặc dù có thể đạt được mức sử dụng cao hơn bằng cách nhóm nhiều yêu cầu người dùng hơn với độ trễ cao hơn và thông lượng thấp hơn, nhưng điều này làm tăng độ khó.
Suy luận LLM chủ yếu là để cân bằng hai yếu tố chính, băng thông bộ nhớ và tính toán.
Nói một cách đơn giản, mỗi tham số phải được đọc với hai FLOP được liên kết với nó. Do đó, tỷ lệ của hầu hết các chip (ví dụ: H100 SXM chỉ có băng thông bộ nhớ 3TB/giây, nhưng có 2.000 TFLOP/giây FP8) hoàn toàn không cân bằng khi suy luận với kích thước lô 1. Nếu chỉ có một người dùng được phục vụ, tức là với kích thước lô là 1, thì băng thông bộ nhớ cần thiết để truyền từng tham số cho mỗi lần tạo mã thông báo sẽ chi phối thời gian suy luận và thời gian tính toán gần như không đáng kể.
Để có thể chia tỷ lệ các mô hình lớn cho nhiều người dùng, kích thước lô phải lớn hơn 1 và nhiều người dùng chia sẻ chi phí đọc tham số. Ví dụ: với kích thước lô là 256 hoặc 512, mỗi byte bộ nhớ đọc vào tương ứng với 512 FLOP/s hoặc 1024 FLOP/s. Tỷ lệ này gần với tỷ lệ băng thông bộ nhớ trên FLOPS của H100. Giúp đạt hiệu suất sử dụng cao hơn, nhưng có nhược điểm là độ trễ cao hơn.
Nhiều người cho rằng dung lượng bộ nhớ là nút cổ chai chính đối với suy luận LLM, vì kích thước của kiểu máy có thể phù hợp với nhiều chip, nhưng quan điểm này có thể có vấn đề. Mặc dù suy luận về các mô hình lớn yêu cầu nhiều chip và dung lượng bộ nhớ cao hơn dẫn đến ít chip thích ứng hơn, nhưng thực tế tốt hơn là sử dụng nhiều chip hơn mức cần thiết để giảm độ trễ, tăng thông lượng và có thể sử dụng kích thước lô lớn hơn để liên tục tăng mức sử dụng.
Google cũng đã đề cập đến cách xử lý ba vấn đề trên trong bài suy luận PaLM. Cần lưu ý rằng **đây là mô hình dày đặc như PaLM, không phải mô hình thưa thớt như GPT4. **
Nếu một ứng dụng yêu cầu độ trễ thấp nhất có thể, chúng tôi cần nhiều chip hơn và chia mô hình theo nhiều cách nhất có thể để tiết kiệm. Kích thước lô nhỏ hơn cho phép độ trễ thấp hơn, nhưng kích thước lô nhỏ hơn cũng dẫn đến [việc sử dụng] MFU kém hơn, dẫn đến tổng chi phí trên mỗi mã thông báo (tính bằng giây chip hoặc đô la) cao hơn .
Nếu một ứng dụng yêu cầu suy luận ngoại tuyến và độ trễ không phải là vấn đề, thì mục tiêu chính là tối đa hóa thông lượng trên mỗi chip (tức là giảm thiểu tổng chi phí cho mỗi mã thông báo). Việc tăng kích thước lô là hiệu quả nhất, vì kích thước lô lớn hơn thường dẫn đến [việc sử dụng] MFU tốt hơn, nhưng một số chiến lược phân vùng nhất định không hiệu quả đối với kích thước lô nhỏ sẽ tăng lên khi kích thước lô tăng lên và trở nên hiệu quả.
**Nhiều chip hơn và kích thước lô lớn hơn sẽ rẻ hơn vì chúng tăng mức sử dụng, nhưng điều này cũng tạo ra biến số thứ ba, Thời gian kết nối mạng. ** Phương pháp triển khai mô hình trên nhiều chip có thể giải quyết hiệu quả sự chậm trễ, nhưng phải trả giá bằng việc sử dụng.
Cả phần tải trọng của thời gian lưu trữ và thời gian tính toán không chú ý đều tỷ lệ thuận với kích thước mô hình và tỷ lệ nghịch với số lượng chip. Đối với một bố cục phân vùng nhất định, thời gian cần thiết để giao tiếp giữa chip với chip giảm chậm hơn (hoặc hoàn toàn không) với số lượng chip được sử dụng, do đó, khi số lượng chip tăng lên, nút cổ chai ngày càng trở nên quan trọng hơn.
Chúng tôi nhận thấy rằng các yêu cầu về bộ nhớ của bộ nhớ đệm KV bùng nổ khi số lượng và kích thước lô tăng lên.
Nếu một ứng dụng cần tạo văn bản có ngữ cảnh chú ý dài (longchú ý bối cảnh), nó sẽ làm tăng thời gian suy luận lên rất nhiều. Đối với mô hình có hơn 500B chú ý nhiều đầu, bộ đệm chú ý KV có thể trở nên rất lớn: đối với mô hình có kích thước lô là 512 và độ dài ngữ cảnh là 2048, tổng dung lượng bộ đệm KV là 3TB, tức là gấp 3 lần kích thước tham số mô hình. Bộ nhớ trên chip (bộ nhớ trên chip) cần tải bộ đệm KV từ bộ nhớ ngoài chip (bộ nhớ ngoài chip), được tải mỗi khi mã thông báo được tạo. Trong giai đoạn này, lõi điện toán của chip về cơ bản là nhàn rỗi.
Độ dài chuỗi dài đặc biệt gây rắc rối cho băng thông bộ nhớ và dung lượng bộ nhớ. Lý do tại sao tăng áp GPT-3.5 của OpenAI với 16k bối cảnh và GPT-4 với 32k bối cảnh đắt tiền là vì chúng không thể xử lý các lô lớn hơn do hạn chế về bộ nhớ.
Lô nhỏ hơn dẫn đến việc sử dụng phần cứng thấp hơn. Ngoài ra, bộ đệm ẩn KV phình to khi độ dài chuỗi tăng lên. Bộ đệm KV không thể được chia sẻ giữa những người dùng, do đó, cần có các lần đọc bộ nhớ riêng biệt, làm giảm thêm băng thông bộ nhớ. Xem bên dưới để biết thêm thông tin về MQA.
08. Cơ sở hạ tầng và chi phí suy luận
Hạ tầng
Kiến trúc của MoE khiến cho việc suy luận của GPT-4 phải đối mặt với những thách thức về độ trễ, thông lượng và mức sử dụng. Do quá trình chuyển tiếp của mỗi mã thông báo có thể được định tuyến đến các mô hình chuyên gia khác nhau nên rất khó đạt được độ trễ thấp, thông lượng cao và mức sử dụng cao trong trường hợp này, đặc biệt là ở quy mô lô cao.
Kiến trúc GPT-4 của OpenAI chứa 16 mô hình chuyên gia và mỗi kênh chuyển tiếp có 2 bộ định tuyến. Điều này có nghĩa là với kích thước lô là 8, thông số đọc của mỗi chuyên gia chỉ có thể chiếm "1" kích thước lô. Nghiêm trọng hơn, điều này cũng dẫn đến quy mô lô là 8 đối với một chuyên gia, trong khi quy mô lô của các chuyên gia khác có thể chỉ là 4, 1 hoặc 0.
Ngoài ra, thuật toán định tuyến định tuyến chuyển tiếp theo các hướng khác nhau mỗi khi mã thông báo được tạo, dẫn đến sự thay đổi đáng kể về độ trễ giữa mã thông báo với mã thông báo và kích thước lô chuyên gia. Nghĩa là, khi xử lý các mã thông báo khác nhau, các chuyên gia khác nhau có thể được chỉ định cho các nhiệm vụ khác nhau và cả tải tính toán cũng như kích thước lô có thể thay đổi tương ứng.
Hạ tầng suy luận là một trong những cân nhắc chính để OpenAI chọn một số ít chuyên gia trong thiết kế MoE. Nếu họ sử dụng nhiều chuyên gia hơn, băng thông bộ nhớ sẽ trở thành nút cổ chai lớn hơn cho suy luận. OpenAI thường đạt kích thước lô trên 4k trên các cụm suy luận của riêng mình, điều đó có nghĩa là ngay cả khi cân bằng tải tối ưu giữa các chuyên gia, mỗi chuyên gia chỉ có thể đạt kích thước lô khoảng 500. Điều này đòi hỏi sử dụng rất lớn để đạt được.
Chúng tôi hiểu rằng OpenAI chạy suy luận trên một cụm gồm 128 GPU và có nhiều cụm như vậy ở các trung tâm dữ liệu và khu vực địa lý khác nhau. Suy luận được thực hiện song song với tenxơ 8 chiều và đường ống 16 chiều. Sử dụng 8 GPU trên mỗi nút, mỗi GPU chỉ có khoảng 130B tham số, tức là dưới 30GB trên mỗi GPU theo FP16 và dưới 15GB theo FP8/int8. Điều này cho phép chạy suy luận trên A100 40GB miễn là kích thước bộ đệm KV cho tất cả các đợt không tăng quá nhiều.
FP16, FP8 và int8 là các biểu diễn độ chính xác (độ chính xác) bằng số khác nhau, thường được sử dụng trong quy trình tính toán trong học sâu để giảm mức sử dụng bộ nhớ và tài nguyên máy tính, từ đó cải thiện hiệu quả của việc đào tạo mô hình và lập luận.
FP16, FP8 và int8 tương ứng đề cập đến các số dấu phẩy động 16 bit, số dấu phẩy động 8 bit và số nguyên 8 bit. Độ chính xác của chúng thấp hơn so với các số dấu phẩy động có độ chính xác đơn 32 bit (FP32 ), nhưng chúng có thể làm giảm đáng kể bộ nhớ và tài nguyên máy tính. Sử dụng để tăng tốc đào tạo mô hình và suy luận trong học sâu. Ví dụ: sử dụng FP16 có thể giảm hơn một nửa thời gian tính toán mà không làm giảm quá nhiều độ chính xác, trong khi sử dụng int8 có thể giảm thời gian tính toán xuống khoảng 4 lần mà không làm giảm quá nhiều độ chính xác.
Cần lưu ý rằng việc sử dụng các tính toán có độ chính xác thấp có thể có tác động nhất định đến độ chính xác của mô hình, do đó cần phải đánh đổi giữa độ chính xác và hiệu quả và chọn phương pháp biểu diễn độ chính xác phù hợp nhất theo yêu cầu nhiệm vụ cụ thể.
Để tránh giao tiếp mạng quá bất thường và đồng thời tránh chi phí tính toán lại bộ đệm KV giữa mỗi lần tạo mã thông báo, các lớp khác nhau chứa các chuyên gia khác nhau không được phân chia trên các nút khác nhau để chia sẻ bộ đệm KV.
**Khó khăn lớn nhất đối với tất cả các tiện ích mở rộng mô hình MoE trong tương lai và định tuyến có điều kiện. Đó là cách xử lý giới hạn 120 lớp định tuyến xung quanh bộ đệm KV. **
Trong mô hình MoE, số lượng lớp định tuyến trên mỗi nhánh không thể vượt quá 120 lớp, nếu không, bộ đệm KV không thể được xử lý hiệu quả. Điều này là do trong quá trình suy luận của mô hình, mỗi nhánh cần tính toán bộ đệm KV, dẫn đến tăng chi phí tính toán.
Một giải pháp đơn giản cho vấn đề này là đặt một tuyến mở rộng trong 15 nút khác nhau dựa trên giới hạn lớp là 120. Bằng cách này, tải tính toán có thể được phân bổ đồng đều trên các nút khác nhau, do đó cải thiện hiệu quả và hiệu suất của mô hình. Tuy nhiên, vì nút đầu tiên cần thực hiện tải và nhúng dữ liệu nên điều quan trọng là làm thế nào để đặt ít lớp hơn trên nút đầu của cụm suy luận.
Ngoài ra, trong quá trình mã hóa và giải mã dữ liệu đầu vào, có thể có một số nhiễu về giải mã suy luận, chúng tôi sẽ thảo luận thêm sau. Một vấn đề quan trọng hơn là xác định xem có nên tin vào tiếng ồn đó hay không. Điều này cũng có thể giải thích tại sao nên bao gồm ít lớp hơn trên nút đầu.
** chi phí hợp lý **
So với mẫu Davinchi có thông số 175B, GPT-4 có thông số feed-forward gấp 1,6 lần nhưng giá thành lại gấp 3 lần Davinchi. Điều này chủ yếu là do GPT-4 yêu cầu cụm lớn hơn và đạt được mức sử dụng thấp hơn.
Chúng tôi đoán rằng việc sử dụng 128 chiếc A100 để suy luận với độ dài ngữ cảnh GPT-4 8k (phần tiếp theo) sẽ tốn khoảng 0,0049 USD cho mỗi 1k mã thông báo. Trong khi sử dụng 128 H100 để suy luận về ngữ cảnh GPT-4 8k, chi phí cho mỗi 1k mã thông báo là khoảng 0,0021 USD. (Lưu ý: Giá hiện tại của GPT-4-8k là 0,03/1k mã thông báo đầu vào, 0,06/1k mã thông báo đầu ra. Hiện tại, việc sử dụng chip suy luận của OpenAI sẽ không xa hoa như tác giả suy đoán. Tính toán này có thể được sử dụng như một mức giá thấp hơn bị ràng buộc với việc giảm giá trong tương lai .) Điều quan trọng cần lưu ý là **các chi phí này được tính ở mức sử dụng cao và quy mô lô. **
Cũng có thể giả định của chúng tôi là sai, do việc sử dụng các cụm OpenAI đôi khi có thể rất thấp.
Chúng tôi đưa ra giả thuyết rằng OpenAI sẽ tắt cụm trong thời kỳ suy thoái và sử dụng lại các nút đó cho các tác vụ khác, chẳng hạn như tiếp tục đào tạo điểm kiểm tra các mô hình thử nghiệm nhỏ hoặc thử nghiệm nhiều kỹ thuật mới. Làm như vậy sẽ giúp giữ cho chi phí suy luận ở mức thấp, nếu không, mức sử dụng của OpenAI có thể còn thấp hơn, nghĩa là gấp hơn 2 lần chi phí ước tính.
Tiếp tục đào tạo điểm kiểm tra của một mô hình thử nghiệm nhỏ, điển hình là khi đào tạo một mô hình học sâu, hãy bắt đầu lại đào tạo một mô hình nhỏ hơn (ví dụ: một tập hợp con chỉ sử dụng một tập hợp con của ) để nhanh chóng kiểm tra các cấu trúc hoặc thuật toán mô hình mới trong một khoảng thời gian ngắn . Cách tiếp cận này có thể giúp các nhà nghiên cứu lặp lại nhanh chóng thiết kế mô hình và tìm ra cấu trúc và tham số mô hình tối ưu.
09. Cơ chế chú ý đa truy vấn
Việc sử dụng Chú ý nhiều truy vấn khá phổ biến, nhưng chúng tôi muốn nhấn mạnh rằng OpenAI cũng làm như vậy. Nói chung, chỉ cần 1 đầu chú ý và dung lượng bộ nhớ có thể giảm đáng kể cho KV caching. Mặc dù vậy, GPT-4 với 32k ngữ cảnh chắc chắn không thể chạy trên A100 40GB và kích thước lô tối đa là 8k đã bị giới hạn. Nếu không có MQA, kích thước lô tối đa là 8k sẽ bị hạn chế rất nhiều và lợi ích kinh tế sẽ giảm đi rất nhiều.
• Chú ý đa truy vấn (MQA): Giải mã biến áp nhanh: Một đầu ghi là tất cả những gì bạn cần Bài viết này đã đề xuất khái niệm về MQA vào năm 2019 và sau đó đã trở thành một cơ chế chú ý được sử dụng thường xuyên trong cơ chế chú ý xử lý ngôn ngữ tự nhiên.
Trong cơ chế chú ý truyền thống, một truy vấn (query) được so khớp với một tập hợp các cặp khóa-giá trị để thu được đại diện có trọng số cho mỗi khóa. Trong khi chú ý đa truy vấn, có nhiều truy vấn và mỗi truy vấn được đối sánh với các cặp khóa-giá trị để có được biểu diễn có trọng số khác nhau cho mỗi khóa. Quá trình này có thể được coi là mã hóa đầu vào dưới nhiều "chế độ xem" khác nhau, dẫn đến sự thể hiện toàn diện và chính xác hơn.
• Đầu chú ý (Head): Trong mô hình học sâu thường chứa nhiều lớp (layer) và một đầu (head), dùng để ánh xạ đầu ra của mô hình tới không gian đầu ra mong muốn. Lớp head thường được thêm vào mô hình để đáp ứng các tác vụ cụ thể, chẳng hạn trong các tác vụ xử lý ngôn ngữ tự nhiên, lớp head thường được sử dụng để chuyển đầu ra của mô hình thành văn bản để phân loại văn bản và các tác vụ khác. Trong mô hình học sâu, lớp đầu tiên thường được theo sau bởi lớp cuối cùng, lớp này được sử dụng để chuyển đổi đầu ra của lớp cuối cùng thành dạng đầu ra mong muốn.
10. Xử lý hàng loạt liên tục
Để cho phép một số mức độ trễ tối đa và tối ưu hóa chi phí suy luận, OpenAI sử dụng cả kích thước lô thay đổi và kỹ thuật tạo lô liên tục. Cách tiếp cận này có thể cải thiện việc sử dụng tài nguyên máy tính mà không làm giảm hiệu suất của mô hình, đồng thời đạt được độ trễ thấp hơn và thông lượng cao hơn trong quá trình suy luận của mô hình. Nếu bạn không hiểu khái niệm xử lý hàng loạt liên tục, bài viết chính thức của AnyScale Cách xử lý hàng loạt liên tục cho phép thông lượng gấp 23 lần trong suy luận LLM đồng thời giảm độ trễ p50 rất đáng đọc. (Lưu ý Pickup: Khung điện toán phân tán Ray do Anyscale phát triển được OpenAI sử dụng trong đường ống cơ sở hạ tầng của mô hình. Pickup đã công bố nghiên cứu về công ty này trước đây.)
Tạo mẻ liên tục: Một kỹ thuật được sử dụng trong quá trình đào tạo học sâu để cải thiện hiệu quả đào tạo và sử dụng tài nguyên thông qua phần cứng. Phương pháp xử lý hàng loạt truyền thống là tải một lượng dữ liệu đào tạo nhất định vào bộ nhớ cùng một lúc, sau đó đào tạo trên những dữ liệu này.Phương pháp này có thể cải thiện hiệu quả đào tạo, nhưng nó cũng có thể lãng phí dung lượng bộ nhớ.
Xử lý hàng loạt liên tục là chia dữ liệu huấn luyện thành nhiều lô nhỏ, mỗi lần chỉ tải một lô nhỏ để huấn luyện, sau khi huấn luyện hoàn thành, lô nhỏ tiếp theo sẽ được tải, v.v., cho đến khi hoàn thành toàn bộ quá trình huấn luyện quá trình huấn luyện tập dữ liệu. Sử dụng các kỹ thuật xử lý theo đợt liên tục có thể cải thiện hiệu quả đào tạo đồng thời giảm mức sử dụng bộ nhớ, đồng thời cũng có thể cải thiện tính ổn định và khái quát hóa của mô hình.
Nguồn: Anyscale
11. Giải mã đầu cơ
Có tin đồn rằng OpenAI sử dụng công nghệ Giải mã suy đoán trong nhiệm vụ suy luận của mô hình GPT-4. Mặc dù chúng tôi không thể chắc chắn về tính chính xác của thông báo này, nhưng sự thay đổi chung về độ trễ và phương sai từ mã thông báo này sang mã thông báo khác đối với cả tác vụ truy xuất đơn giản và tác vụ phức tạp hơn dường như cho thấy rằng kỹ thuật này có thể thực hiện được. Tuy nhiên, vì có quá nhiều biến nên chúng tôi không thể xác nhận liệu kỹ thuật này có thực sự được sử dụng hay không.
Để tránh tranh chấp về nội dung, một số nội dung trong Tăng tốc ảnh hưởng LLM với Giải mã suy đoán theo giai đoạn được trích dẫn ở đây và nội dung chính được in đậm.
Việc sử dụng LLM thường được chia thành hai giai đoạn:
1. Giai đoạn điền trước
Trong giai đoạn này, một gợi ý () đầu tiên được đưa ra làm đầu vào và chạy qua mô hình để tạo bộ đệm KV và nhật ký đầu ra đầu tiên. Trong số đó, logits là đầu ra vectơ phân phối xác suất của LLM ở mỗi bước thời gian, được sử dụng để biểu thị khả năng của từng mã thông báo. Giai đoạn chuẩn bị trước này thường nhanh do tính toán song song.
2. Giai đoạn giải mã
Trong giai đoạn này, một mã thông báo được chọn từ các bản ghi đầu ra và được đưa trở lại mô hình để tạo các bản ghi cho mã thông báo tiếp theo. Điều này được lặp lại cho đến khi số lượng mã thông báo mong muốn được tạo. Vì mỗi lần giải mã phải được tính toán tuần tự để tạo mã thông báo, cường độ số học của giai đoạn thứ hai này (tức là FLOP được tính toán/byte băng thông bộ nhớ) là rất thấp khi chạy theo lô nhỏ. thường là phần đắt nhất của thế hệ tự hồi quy.
Đây là lý do tại sao việc nhập mã thông báo rẻ hơn nhiều so với mã thông báo đầu ra trong lệnh gọi API của OpenAI.
Ý tưởng cốt lõi của giải mã đầu cơ là sử dụng một mô hình dự thảo nhỏ hơn, nhanh hơn để giải mã trước một số mã thông báo và đưa chúng vào mô hình tiên tri dưới dạng một đợt. Nếu dự đoán của mô hình dự thảo là chính xác (nghĩa là đồng ý với dự đoán của mô hình tiên tri), một lô có thể được sử dụng để giải mã một số mã thông báo, tiết kiệm rất nhiều băng thông bộ nhớ và thời gian cho mỗi mã thông báo.
Mô hình Oracle đề cập đến mô hình LLM lớn hơn, chậm hơn được sử dụng trong phương pháp giải mã suy đoán để xác thực các dự đoán của mô hình dự thảo. Mô hình Oracle sẽ tính toán phân phối xác suất của mã thông báo tiếp theo dựa trên kết quả dự đoán của mô hình dự thảo và mã thông báo được tạo trước đó, sau đó trả lại phân phối xác suất này cho mô hình dự thảo dưới dạng đầu ra.
Bằng cách sử dụng mô hình Oracle để xác minh kết quả dự đoán của mô hình dự thảo, có thể tránh được các lỗi và sai lệch trong quá trình giải mã tiếp theo của mô hình dự thảo, từ đó cải thiện độ chính xác và ổn định của mô hình. Đồng thời, mô hình Oracle cũng có thể giúp mô hình dự thảo học và hiểu tốt hơn thông tin ngữ cảnh trong mô hình ngôn ngữ, từ đó cải thiện khả năng tạo và hiệu quả của mô hình.
Tuy nhiên, nếu mô hình lớn hơn từ chối mã thông báo được dự đoán bởi mô hình dự thảo, thì phần còn lại của lô sẽ bị loại bỏ và thuật toán trở lại giải mã từng mã thông báo tiêu chuẩn. Giải mã đầu cơ cũng có thể được kết hợp với sơ đồ lấy mẫu từ chối để lấy mẫu mã thông báo từ phân phối ban đầu. Lưu ý rằng phương pháp này chỉ hoạt động trong cài đặt lô nhỏ trong đó băng thông là nút cổ chai.
Nói tóm lại, giải mã suy đoán đánh đổi tính toán để lấy băng thông và có hai lý do chính giải thích tại sao nó là một mục tiêu tối ưu hóa hiệu suất hấp dẫn. Đầu tiên, giải mã suy đoán hoàn toàn không làm giảm chất lượng mô hình, bởi vì nó chỉ cải thiện tốc độ suy luận và thông lượng của mô hình bằng cách sửa đổi quy trình tính toán của giai đoạn giải mã. Thứ hai, lợi ích mà nó mang lại nói chung là độc lập với các phương pháp khác, bởi vì ưu điểm của nó nằm ở việc chuyển đổi các phép tính tuần tự thành thực thi song song, trong khi các phương pháp khác chủ yếu bắt đầu với cấu trúc mô hình, tham số, đào tạo, v.v. để tối ưu hóa.
Các phương pháp suy luận hiện tại dự đoán một chuỗi duy nhất cho mỗi đợt. Tuy nhiên** phương pháp này không mở rộng quy mô tốt trong trường hợp lô lớn hoặc mô hình dự thảo có độ chính xác thấp. **Theo trực giác, đối với các chuỗi mã thông báo dài liên tục, xác suất của hai mô hình dự đoán thỏa thuận giảm theo cấp số nhân, điều đó có nghĩa là khi sức mạnh của thuật toán mở rộng, lợi nhuận của giải mã suy đoán sẽ giảm nhanh chóng.
Chúng tôi nghĩ rằng nếu OpenAI đang sử dụng giải mã suy đoán, thì có khả năng họ chỉ sử dụng nó cho các chuỗi ngắn có độ dài khoảng 4 mã thông báo. Ngoài ra, một số người cho rằng hiệu suất của mô hình GPT-4 giảm là do OpenAI đã thêm các chuỗi có xác suất thấp từ mô hình giải mã suy đoán vào đào tạo trước mô hình, điều này có thể không đúng.
Ngoài ra - Một số người cho rằng mô hình Bard cũng sử dụng giải mã suy đoán vì Google đợi chuỗi đầy đủ được tạo trước khi gửi cho người dùng, nhưng chúng tôi không tin dự đoán này là đúng.
12. Trực quan đa phương thức
Vision Multi-Modal có lẽ là phần kém hấp dẫn nhất của GPT-4, ít nhất là so với các nghiên cứu khác. Cho đến nay, chưa ai khám phá việc thương mại hóa nghiên cứu LLM đa phương thức.
Tầm nhìn Đa phương thức: Nó đề cập đến việc xử lý và phân tích chung thông tin từ các phương thức khác nhau (chẳng hạn như hình ảnh, văn bản, giọng nói, v.v.). Thông thường, thông tin của các phương thức khác nhau này có liên quan về mặt ngữ nghĩa, do đó, việc kết hợp chúng có thể cung cấp thông tin phong phú hơn và kết quả suy luận chính xác hơn.
Khả năng đa phương thức trực quan của GPT-4 đạt được thông qua bộ mã hóa hình ảnh độc lập với bộ mã hóa văn bản và có cơ chế chú ý chéo (Cross-Attention) với bộ mã hóa văn bản. Người ta nói rằng kiến trúc của nó tương tự như mô hình Flamingo. Bộ mã hóa hình ảnh đã được tinh chỉnh trên mô hình GPT-4 có 1,8 nghìn tỷ tham số, tuy nhiên, nó chỉ được đào tạo trước với ~2 nghìn tỷ mã thông báo dữ liệu văn bản bổ sung, không phải dữ liệu hình ảnh.
Chú ý chéo: Đây là một cơ chế để thiết lập mối liên hệ giữa nhiều dữ liệu chuỗi, được sử dụng rộng rãi trong xử lý ngôn ngữ tự nhiên và thị giác máy tính. Trong các tác vụ từ trình tự này sang trình tự khác, chẳng hạn như dịch máy và tóm tắt văn bản, cơ chế chú ý chéo được sử dụng để tính toán mối tương quan giữa trình tự nguồn và trình tự đích để thông tin trong trình tự nguồn được sử dụng khi tạo trình tự đích.
Trong các nhiệm vụ thị giác máy tính, cơ chế chú ý chéo được sử dụng để liên kết hình ảnh và văn bản để sử dụng trong các nhiệm vụ như tạo mô tả hình ảnh và trả lời câu hỏi trực quan.
OpenAI có kế hoạch đào tạo mô hình tầm nhìn từ đầu, nhưng công nghệ này vẫn chưa hoàn thiện, vì vậy họ hy vọng sẽ giảm thiểu rủi ro bằng cách đào tạo từ văn bản.
**Có tin đồn rằng OpenAI's GPT-5 sẽ đào tạo các mô hình tầm nhìn từ đầu và có khả năng tự động tạo hình ảnh và xử lý âm thanh. **
Mục tiêu chính của công nghệ đa phương thức trực quan là cho phép các tác nhân tự động đọc các trang web và sao chép nội dung hình ảnh và video của chúng. Dữ liệu được OpenAI sử dụng để đào tạo mô hình này bao gồm dữ liệu chung (bao gồm LaTeX/văn bản được kết xuất), ảnh chụp màn hình trang web và khung mẫu video Youtube, v.v. và sử dụng công nghệ Whisper để phiên âm.
Một điều thú vị về vấn đề tối ưu hóa quá mức LLM là chi phí IO của mô hình trực quan khác với chi phí IO của mô hình văn bản thuần túy. Chi phí IO của mô hình văn bản rất rẻ, nhưng trong mô hình tầm nhìn, chi phí tải dữ liệu IO gấp khoảng 150 lần so với mô hình văn bản. Kích thước của mỗi mã thông báo là 600 byte, trong khi mô hình văn bản chỉ có 4 byte. Hiện tại, có rất nhiều công việc đang diễn ra trong nghiên cứu nén ảnh. (Xianxiang Lưu ý: Thông tin văn bản dễ nén hơn và mã thông báo hình ảnh/video là một hướng đáng chú ý trong lĩnh vực đa phương thức.)
Chi phí IO: Chi phí IO đề cập đến thời gian, tài nguyên và chi phí năng lượng cần thiết để hoàn thành thao tác nhập/xuất trong hệ thống máy tính. Những chi phí này bao gồm các khía cạnh như truyền dữ liệu, lưu trữ và xử lý. Trong lĩnh vực học máy và học sâu, chi phí IO thường đề cập đến chi phí đọc và ghi dữ liệu từ phương tiện lưu trữ (chẳng hạn như đĩa cứng, bộ nhớ, mạng, v.v.). Trong quá trình đào tạo và suy luận mô hình, chi phí IO có thể trở thành nút cổ chai, ảnh hưởng đến hiệu suất và hiệu quả của hệ thống. Do đó, để nâng cao hiệu suất và hiệu quả của hệ thống máy tính, chi phí IO cần được xem xét và tối ưu hóa.
Điều này rất quan trọng đối với các nhà cung cấp tối ưu hóa phần cứng của họ sau 2-3 năm để đảm bảo khả năng hình ảnh và âm thanh mạnh mẽ của từng kiểu máy. Họ có thể thấy rằng kiến trúc của họ không phù hợp. Nói chung, các kiến trúc LLM trong tương lai chắc chắn sẽ phát triển vượt ra ngoài các mô hình MoE và/hoặc dày đặc dựa trên văn bản đã giảm mà chúng ta thấy ngày nay.
Thẩm quyền giải quyết
Xem bản gốc
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Hướng dẫn "giả kim thuật" GPT-4: MoE, lượng tham số, chi phí đào tạo và bí quyết suy luận
Bản gốc: Nhặt Voi
Nguồn: Kỳ lân nước ngoài
Tác giả: Dylan Patel, Gerald Wong
Biên tập: Haina, Wenli, Cage
Biên tập: Tư Kỳ
Bài viết này được tổng hợp từ chuyên mục SemiAnalysis của Dylan Patel và Gerald Wong. Cách đây không lâu, Dylan Patel đã tiết lộ tin tức về bức thư nội bộ của Google: Chúng tôi không có Moat, và OpenAI cũng vậy.
GPT-4 là kết quả của sự kết hợp sâu sắc giữa khoa học và đổi mới kỹ thuật, ở giữa có vô số mánh khóe, đối với thế giới bên ngoài, nếu bạn có thể hiểu được cấu trúc của GPT-4, thì chẳng khác nào nắm được "công thức giả kim" của mô hình mạnh nhất. Nội dung này cung cấp kiến trúc GPT-4, cơ sở hạ tầng đào tạo và suy luận, số lượng tham số, tập dữ liệu đào tạo, số mã thông báo, chi phí và mô hình MoE cũng như các thông số và thông tin chi tiết khác rất chi tiết.
Dylan và Gerald tin rằng lý do OpenAI không tiết lộ kiến trúc của GPT-4 không phải vì cái gọi là cân nhắc về An toàn AI, mà vì kiến trúc này rất dễ bị sao chép; George Hotz, được mệnh danh là "hacker thiên tài" , cũng bày tỏ Ý kiến tương tự, tuy nhiên, George lập luận rằng GPT-4 bao gồm MoE gồm 8 mô hình chuyên gia, mỗi mô hình có khoảng 1100 tham số.
Hai tác giả dự đoán rằng các công ty như Google, Meta, Anthropic, Inflection, Character.ai, Tencent, ByteDance, Baidu, v.v. sẽ có các khả năng mô hình tương tự hoặc thậm chí mạnh hơn GPT-4 trong thời gian ngắn. Mặc dù kiến trúc của GPT-4 “dễ bị sao chép”, nhưng theo quan điểm của họ, OpenAI có con hào bền vững nhất—số lượng người dùng cuối lớn nhất, tài năng kỹ thuật hàng đầu và lợi thế của người tiên phong trong các thay đổi giữa các thế hệ trong mô hình.
Nhắc nhở thân thiện: Dữ liệu trong bài viết đến từ bộ sưu tập và nghiên cứu đa bên của tác giả ban đầu và chưa được OpenAI xác nhận. Nghiên cứu của Dylan Patel thường được coi là có độ tin cậy cao và có thể được sử dụng làm tài liệu tham khảo tốt cho GPT-4 tài liệu nghiên cứu chuyên sâu. Ngoài ra, chúng tôi cho rằng các quan điểm dễ sao chép trong bài viết có thể bị nghi ngờ là "đảng giật tít", bởi ngoài OpenAI và Google, các nhà khoa học giỏi về đào tạo và lý luận khung MoE phức tạp hiện đang rất khan hiếm, và GPT-4 hiện tại chỉ là thế hệ đầu tiên của MoE, nó không phải là câu trả lời cuối cùng mà OpenAI đưa ra và rất nhiều kinh nghiệm trong quá trình này không có sẵn cho các nhóm khác và những kinh nghiệm này chắc chắn sẽ trở thành một lợi thế độc nhất của OpenAI.
Sau đây là mục lục của bài viết này, và nên đọc nó kết hợp với những điểm chính.
👇
01 Tổng quan
02 Cấu trúc mô hình
03 Bộ dữ liệu
04 Chiến lược song song
05 Chi phí đào tạo
06 tháng
07 Lý luận
08 Cơ sở hạ tầng và chi phí lập luận
09 Cơ chế chú ý đa truy vấn
10 đợt liên tiếp
11 Giải mã suy đoán
12 tầm nhìn đa phương thức
01.Tổng quan
Khả năng kỹ thuật của OpenAI và những gì họ đã tạo ra thật đáng kinh ngạc, nhưng điều đó không có nghĩa là các giải pháp là không thể vượt qua. Giải pháp của họ rất tinh tế, và nó cũng liên quan đến việc xem xét và cân bằng một loạt các yếu tố phức tạp, và việc mở rộng quy mô mô hình chỉ là một phần trong đó. **Rào bền vững nhất của OpenAI đến từ ba khía cạnh: thứ nhất, họ có nhiều người dùng trong thế giới thực nhất, thứ hai, tài năng kỹ thuật hàng đầu và cuối cùng, họ có khả năng tiếp tục duy trì lợi thế hàng đầu trong phát triển mô hình trong tương lai. **
Nó không chỉ có giá trị để hiểu tại sao GPT-4 chọn một kiến trúc nhất định, mà gần đây hơn, chúng tôi cũng sẽ phác thảo chi phí đào tạo và suy luận của GPT-4 trên A100 và cách sử dụng H100 trong kiến trúc mô hình thế hệ tiếp theo được mở rộng.
Từ GPT-3 đến GPT-4, OpenAI muốn tăng kích thước của mô hình lên gấp 100. Cốt lõi của quá trình này đương nhiên là vấn đề chi phí**. Máy biến áp dày đặc là kiến trúc mô hình thường được sử dụng như OpenAI GPT-3, Google PaLM, Meta LLaMA, TII Falcon, MosaicML MPT, v.v. Hiện tại, có ít nhất 50 công ty sử dụng kiến trúc này để đào tạo LLM, đây là một ví dụ điển hình về kiến trúc nhưng khả năng mở rộng của nó rất hạn chế.
AI Brick Wall đã thảo luận về chi phí đào tạo của mô hình trong bài viết này, trước khi GPT-4 được phát hành. Từ góc độ chi phí đào tạo, mô hình dày đặc (máy biến áp dày đặc) sắp phải đối mặt với "Bức tường gạch AI" của riêng mình.
Nhưng trong 6 tháng qua, chúng tôi nhận ra rằng chi phí đào tạo có thể không thành vấn đề. Dù việc bỏ ra hàng triệu, thậm chí hàng trăm triệu USD để đào tạo người mẫu nghe có vẻ điên rồ nhưng thực ra lại là chuyện nhỏ đối với các ông lớn công nghệ. Một mô hình lớn là một dự án đầu tư vốn (mục hàng Capex) và mô hình càng lớn thì kết quả càng tốt Yếu tố hạn chế duy nhất là liệu con người có đủ khả năng và thời gian để cung cấp phản hồi và sửa đổi cấu trúc mô hình trong khi mở rộng mô hình hay không tỉ lệ.
Meta đầu tư hơn 16 tỷ đô la vào "Metaverse" mỗi năm, Google chi khoảng 10 tỷ đô la cho các nỗ lực dự án mới, Amazon chi hơn 50 tỷ đô la cho Alexa và tiền điện tử là "những thứ không có giá trị". Hơn 100 tỷ đô la bị lãng phí. Xã hội nói chung sẽ chi hơn 100 tỷ đô la để tạo ra các siêu máy tính có khả năng đào tạo các mô hình quy mô lớn có thể được sản xuất theo nhiều cách khác nhau. Nhiều quốc gia và công ty sẽ lặp lại nỗ lực đào tạo** trên các mô hình lớn, vốn là "cuộc chạy đua vũ trang trong không gian"** mới. So với "lãng phí tài nguyên" trước đây, giá trị thực sẽ được hiện thực hóa trong thời gian ngắn do sự xuất hiện của các trợ lý con người và các tác nhân tự trị.
Nhưng trong vài năm tới, Google, Meta và OpenAI, Microsoft và các công ty khác sẽ chi hơn 100 tỷ đô la Mỹ để xây dựng một siêu máy tính để đào tạo mô hình.
Vấn đề quan trọng hơn của việc mở rộng quy mô của mô hình, "Bức tường gạch AI" thực sự, nằm ở liên kết suy luận. Mục tiêu ở đây là tách rời sức mạnh tính toán đào tạo khỏi sức mạnh tính toán suy luận, vì vậy, đối với bất kỳ mô hình nào sẽ được triển khai, việc đào tạo ngoài mức tối ưu Chinchilla của DeepMind là điều hợp lý. (Chọn lưu ý: Tăng lượng dữ liệu huấn luyện để làm cho mô hình học quá mức là một chiến lược để tăng khả năng của các mô hình nhỏ và giảm chi phí suy luận.) Đây là lý do tại sao kiến trúc mô hình thưa thớt (sparse model architecture) được sử dụng. Lý do theo kiến trúc này không Không phải tất cả các tham số cần phải hoạt động.
Bản chất của vấn đề trong liên kết suy luận là chi phí triển khai mô hình cho người dùng và Đại lý quá cao. Chi phí suy luận cao hơn nhiều lần so với chi phí đào tạo và giải quyết vấn đề này là mục tiêu của OpenAI về kiến trúc mô hình và cơ sở hạ tầng.
Khi nói đến suy luận với các mô hình lớn, đặc biệt là các mô hình dày đặc, kích thước mô hình có thể trở thành một vấn đề đa chiều. Trên thiết bị AI- Con dao hai lưỡi Bài viết này đã thảo luận về tình huống trong môi trường điện toán biên. Nói một cách đơn giản, các thiết bị đầu cuối không bao giờ có thể có thông lượng và băng thông bộ nhớ cần thiết để triển khai các mô hình ngôn ngữ lớn.Ngay cả khi băng thông đủ, hiệu quả của các thiết bị biên trong việc sử dụng tài nguyên máy tính phần cứng là rất thấp. Các trung tâm dữ liệu phải đối mặt với các vấn đề tương tự.
Việc sử dụng tài nguyên máy tính là rất quan trọng đối với các trung tâm dữ liệu và đám mây. (Lưu ý: Hiện tại, giới hạn trên của việc sử dụng GPU/TPU trong ngành là khoảng 50%.) Một trong những lý do quan trọng khiến phần mềm của NVIDIA được khen ngợi rộng rãi là trong quá trình liên tục tung ra thế hệ GPU mới, NVIDIA đang cũng liên tục cập nhật Một thế hệ phần mềm giúp tăng cường sử dụng FLOPS bằng cách cho phép di chuyển dữ liệu thông minh hơn quanh các chip, giữa các chip và giữa các bộ nhớ.
Ở giai đoạn này, các trường hợp sử dụng suy luận LLM chủ yếu là "trợ lý trực tiếp", có nghĩa là nó phải đạt được thông lượng đủ cao để thực sự hữu ích cho người dùng. Lấy con người làm ví dụ, tốc độ đọc trung bình của con người là khoảng 250 từ mỗi phút, và một số người có thể đạt khoảng 1.000 từ mỗi phút, tương ứng với mô hình, nó có nghĩa là xuất ra ít nhất 8,33 mã thông báo mỗi giây, tốt nhất là 33,33 mã thông báo mỗi giây mã thông báo, nó có thể đáp ứng tất cả các nhu cầu của con người.
Tuy nhiên, do giới hạn của băng thông bộ nhớ, ngay cả trên máy chủ GPU NVIDA H100 mới nhất, mô hình dày đặc (dense model) với hàng nghìn tỷ tham số cũng không thể đạt được thông lượng này về mặt toán học. Mỗi khi mã thông báo được tạo, nó cần được tải từ bộ nhớ vào chip và sau đó mã thông báo này được gửi lại để tạo mã thông báo tiếp theo. Ngoài ra, bộ nhớ đệm KV (KV Cache) để thực hiện cơ chế chú ý cũng cần thêm băng thông.
Hình trên cho thấy băng thông bộ nhớ cần thiết để phục vụ LLM một người dùng với thông lượng đủ cao. Từ bức ảnh này có thể thấy rằng:
• Ngay cả băng thông gấp 8 lần H100 cũng không thể phục vụ mô hình dày đặc với quy mô 1 nghìn tỷ tham số với tốc độ 33,33 mã thông báo mỗi giây;
• Hơn nữa, việc sử dụng FLOPS của 8x H100 vẫn dưới 5% ở mức 20 mã thông báo mỗi giây, dẫn đến chi phí suy luận rất cao.
Trên thực tế, đối với hệ thống H100 song song 8 chiều tensor ngày nay, ràng buộc suy luận là khoảng 300 tỷ tham số feed-forward.
Tuy nhiên, OpenAI đang đạt được tốc độ đọc của con người với A100 và các mẫu có >1 nghìn tỷ tham số, được phổ biến rộng rãi ở mức giá thấp 0,06 USD trên 1000 mã thông báo và điều này có thể thực hiện được chính xác là do kiến trúc thưa thớt của nó.
Tiếp theo, chúng ta sẽ thảo luận về kiến trúc mô hình GPT-4, cơ sở hạ tầng cho đào tạo và suy luận, số lượng tham số, thành phần của tập dữ liệu đào tạo, số lượng mã thông báo, số lớp, chiến lược song song, bộ mã hóa hình ảnh đa phương thức, v.v... đằng sau một loạt các thiết kế kỹ thuật khác nhau.. Các cân nhắc, kỹ thuật triển khai và cách OpenAI giải quyết các tắc nghẽn trong suy luận mô hình lớn.
02. Cấu trúc mô hình
Quy mô của GPT-4 gấp hơn 10 lần so với GPT-3, chúng tôi ước tính rằng nó có khoảng 1,8 nghìn tỷ tham số và các tham số này được phân bổ trên 120 lớp biến áp. Để so sánh, các tham số của GPT-3 khoảng 1750 tỷ. (Lưu ý: GPT-3 chỉ có 12 lớp biến áp và số lớp bằng 1/10 so với GPT-4.)
Để kiểm soát chi phí, OpenAI đã chọn sử dụng mô hình MoE. OpenAI sử dụng 16 chuyên gia loại MLP.2 trong mô hình, mỗi chuyên gia có khoảng 111 tỷ tham số. Hai trong số các mô hình chuyên gia này được gọi trong mỗi lần chuyển tiếp.
Ngoài ra, khoảng 55 tỷ tham số được chia sẻ được sử dụng trong cơ chế chú ý.
Mỗi suy luận chuyển tiếp (tạo mã thông báo) chỉ sử dụng khoảng 280 tỷ tham số và 560 TFLOP, so với khoảng 1,8 nghìn tỷ tham số và 3700 TFLOP cần thiết cho mỗi suy luận chuyển tiếp nếu mô hình dày đặc được sử dụng thuần túy.
03. Bộ dữ liệu
GPT-4 đã được đào tạo trên khoảng 13 nghìn tỷ mã thông báo, điều này hợp lý khi xét rằng CommonCrawl RefinedWeb chứa khoảng 5 nghìn tỷ mã thông báo chất lượng cao. Để tham khảo, các mô hình PaLM của Deepmind và Chinchilla của Google đã được đào tạo với khoảng 1,4 nghìn tỷ mã thông báo và khoảng 0,78 nghìn tỷ mã thông báo, tương ứng và PaLM2 được cho là được đào tạo trên khoảng 5 nghìn tỷ mã thông báo.
Bộ dữ liệu được OpenAI sử dụng để đào tạo GPT-4 không phải là 13 nghìn tỷ mã thông báo duy nhất. Ngược lại, do thiếu mã thông báo chất lượng cao, bộ dữ liệu này chứa nhiều kỷ nguyên. Có 2 kỷ nguyên cho dữ liệu dựa trên văn bản và 4 kỷ nguyên cho dữ liệu dựa trên mã. (Lưu ý: Điều này đề cập đến một số văn bản và mã chất lượng cao đã được mô hình học nhiều lần.) Điều này còn lâu mới đạt được mức tối ưu của Chinchilla (mô hình cần được đào tạo với số lượng mã thông báo gấp đôi), điều này cũng cho thấy rằng mạng dễ lấy mã thông báo là không đủ. Mã thông báo văn bản chất lượng cao thực sự tồn tại trên mạng phải gấp 1000 lần hiện có và mã thông báo âm thanh và video thậm chí còn nhiều hơn, nhưng việc thu thập các mã thông báo này không thể đạt được chỉ bằng cách quét web. Thật không may, chúng tôi không tìm thấy nhiều thông tin về dữ liệu RLHF của OpenAI.
Trong giai đoạn tiền đào tạo, độ dài ngữ cảnh (phần tiếp theo) là 8k. Phiên bản ngữ cảnh 32k của GPT-4 được triển khai dựa trên tinh chỉnh 8k sau khi đào tạo trước.
Kích thước lô đã tăng dần trên cụm trong vài ngày, nhưng cuối cùng, OpenAI đã sử dụng kích thước lô lên tới 60 triệu. Tất nhiên, vì không phải mọi tham số đều nhìn thấy tất cả các tham số nên đây chỉ là kích thước lô 7,5 triệu cho mỗi chuyên gia.
04. Chiến lược song song
Xử lý song song trên tất cả các GPU A100 là rất quan trọng.
OpenAI sử dụng quy mô 8 chiều (8-way) tensor parallelism (Tensor Parallelism), sở dĩ là 8 chiều (8-way) vì đây là giới hạn của NVLink. Ngoài ra, chúng tôi cũng nghe nói rằng OpenAI đang sử dụng chiến lược song song hóa đường ống 15 chiều (15-way). Về mặt lý thuyết, 15 chiều là quá nhiều nếu xét đến thời gian giao tiếp dữ liệu và tính toán, nhưng cũng hợp lý nếu chúng bị giới hạn bởi dung lượng bộ nhớ.
Nếu bạn chỉ sử dụng song song đường ống và song song tensor, các tham số trên mỗi GPU cần khoảng 30 GB theo FP16 và sau khi tính đến bộ đệm KV và chi phí KV, nếu hầu hết các GPU được OpenAI sử dụng là A100 40 GB, thì kiến trúc này từ Nó là cũng hợp lý về mặt lý thuyết. OpenAI có thể sử dụng ZeRo giai đoạn 1, FSDP cấp khối hoặc song song dữ liệu được chia sẻ kết hợp.
Lý do tại sao FSDP mô hình đầy đủ không được sử dụng có thể là chi phí truyền thông cao. Mặc dù OpenAI có mạng tốc độ cao giữa hầu hết các nút, nhưng có thể không phải tất cả các nút, chúng tôi nghĩ rằng có ít nhất một số cụm có băng thông kết nối thấp hơn nhiều so với các cụm khác.
Không rõ làm thế nào OpenAI tránh được bong bóng khổng lồ với tính song song đường ống cao như vậy. Rất có thể họ chỉ chịu chi phí.
05. Chi phí đào tạo
OpenAI đã sử dụng khoảng 2,15e25 FLOPS trong quá trình đào tạo GPT-4, trên khoảng 25.000 GPU A100 trong 90 đến 100 ngày đào tạo, trong đó mức sử dụng năng lượng tính toán tối đa là khoảng 32% đến 36%. **
Mức sử dụng cực kỳ thấp này một phần là do số lượng lớn các lỗi yêu cầu khởi động lại các trạm kiểm soát, với các bong bóng được đề cập ở trên chiếm rất nhiều chi phí.
Một lý do khác là việc giảm tất cả trên rất nhiều GPU là rất tốn kém. Đặc biệt nếu chúng tôi nghi ngờ rằng cụm thực sự được tạo thành từ nhiều cụm nhỏ hơn với kết nối mạng tương đối yếu, chẳng hạn như kết nối không chặn 800G/1.6T giữa các phần khác nhau của cụm, nhưng một số chỉ có thể kết nối ở tốc độ 200G/400G.
Nếu chi phí của họ trên Đám mây là khoảng 1 đô la mỗi giờ cho mỗi A100, thì con số đó lên tới ~63 triệu đô la chỉ riêng cho buổi đào tạo này**. Điều này không bao gồm tất cả các lần thử, lần thử không thành công và các chi phí khác cho việc thu thập dữ liệu, RLHF, nhân viên, v.v. Khi các yếu tố này được tính đến, chi phí thực tế cao hơn nhiều. Ngoài ra, bạn cũng cần cân nhắc rằng bạn cần có một đội ngũ để hoàn thiện cấu hình chip, thiết bị mạng và trung tâm dữ liệu, chịu vốn đầu tư (Capex) và cho bạn thuê.
Hiện tại, quá trình đào tạo trước có thể được thực hiện trong khoảng 55 ngày với khoảng 8.192 H100 với tổng chi phí là 21,5 triệu USD, mỗi GPU H100 có giá 2 USD/giờ.
Chúng tôi hy vọng chín công ty sẽ có thêm GPU H100 vào cuối năm nay. Có thể những chiếc H100 này sẽ không được sử dụng để đào tạo người mẫu, nhưng những công ty này chắc chắn sẽ nắm lấy những người mẫu lớn và trở thành những người chơi quan trọng. Meta dự kiến sẽ có hơn 100.000 H100 vào cuối năm nay, một phần đáng kể trong số đó sẽ được triển khai trong các trung tâm dữ liệu của riêng họ để suy luận, mặc dù cụm đơn lớn nhất của họ sẽ có hơn 25.000 GPU H100. (Lưu ý: Tài nguyên điện toán của Meta sẽ làm cho khả năng của LLaMA phát triển thành một biến quan trọng để triển khai nguồn mở và riêng tư.) Nhiều công ty sẽ đào tạo một mô hình có khả năng tương tự như GPT-4 trước cuối năm nay.
06.MoE
MoE là một cách hiệu quả để giảm số lượng tham số trong quá trình suy luận, đồng thời nó cũng tăng số lượng tham số, giúp mã hóa nhiều thông tin hơn trên mỗi mã thông báo đào tạo. Vì rất khó để có đủ mã thông báo chất lượng cao nên cần phải chọn kiến trúc MoE. Bởi vì nếu OpenAI thực sự muốn triển khai Chinchilla-Optimal, họ phải đào tạo gấp đôi số lượng mã thông báo hiện tại.
Điều đó đang được nói, OpenAI thực hiện một số sự đánh đổi. Ví dụ: xử lý MoE trong quá trình suy luận là rất khó vì không phải mọi phần của mô hình đều được sử dụng khi tạo mọi mã thông báo. Điều này có nghĩa là một số bộ phận có thể không hoạt động trong khi các bộ phận khác đang được sử dụng. Điều này có thể ảnh hưởng nghiêm trọng đến việc sử dụng khi phục vụ người dùng.
Các nhà nghiên cứu đã chứng minh rằng sử dụng 64 đến 128 chuyên gia mang lại kết quả thua lỗ tốt hơn so với sử dụng 16 chuyên gia, nhưng đây chỉ là nghiên cứu. Có một số lý do để giảm số lượng các chuyên gia. Một trong những lý do OpenAI chọn 16 chuyên gia là việc có nhiều chuyên gia hơn sẽ khiến việc khái quát hóa và đạt được sự hội tụ trở nên khó khăn hơn. Với một đợt đào tạo lớn như vậy, OpenAI chọn cách thận trọng hơn về số lượng chuyên gia.
Ngoài ra, việc sử dụng ít chuyên gia hơn cũng hữu ích cho các kiến trúc suy luận. Có nhiều sự đánh đổi phức tạp khác nhau khi chuyển sang kiến trúc suy luận MoE. Hãy bắt đầu với sự đánh đổi suy luận LLM cơ bản, sau đó khám phá các vấn đề mà OpenAI gặp phải và các lựa chọn mà họ đã đưa ra.
07. Lập luận
Trong phần này, trước tiên chúng tôi muốn chỉ ra rằng mọi công ty LLM mà chúng tôi liên hệ đều nghĩ rằng thư viện suy luận FasterTransformer của NVIDIA khá tệ và TensorRT thậm chí còn tệ hơn. Không có khả năng sử dụng các mẫu của Nvidia và sửa đổi chúng, nghĩa là tạo giải pháp của riêng bạn từ đầu, NVIDIA cần giải quyết vấn đề này càng sớm càng tốt để thích ứng với nhu cầu suy luận LLM, nếu không nó sẽ trở thành một công cụ mở trên thực tế. để thêm hỗ trợ phần cứng của bên thứ ba. Ngày càng có nhiều mô hình lớn hơn xuất hiện và nếu NVIDA không thể cung cấp lợi thế về phần mềm trong suy luận và nhân vẫn cần được viết tay, thì MI300 của AMD và các phần cứng khác sẽ có thị trường lớn hơn nhiều.
Có 3 yếu tố chính trong liên kết suy luận của LLM, chủ yếu liên quan đến số lượng chip được sử dụng.
1. Độ trễ
Mô hình phải phản hồi trong một độ trễ hợp lý. Mọi người không muốn đợi vài giây trước khi bắt đầu nhận đầu ra trong ứng dụng trò chuyện. Thời gian xử lý mã thông báo đầu vào và đầu ra có thể dao động.
2. Thông lượng
Mô hình phải xuất ra một số lượng mã thông báo nhất định mỗi giây. Mức sử dụng của con người là khoảng 30 mã thông báo mỗi giây và thông lượng có thể thấp hơn hoặc cao hơn đối với nhiều trường hợp sử dụng khác.
3. Sử dụng
Phần cứng chạy mô hình phải đạt được hiệu suất sử dụng cao, nếu không chi phí sẽ rất cao. Mặc dù có thể đạt được mức sử dụng cao hơn bằng cách nhóm nhiều yêu cầu người dùng hơn với độ trễ cao hơn và thông lượng thấp hơn, nhưng điều này làm tăng độ khó.
Suy luận LLM chủ yếu là để cân bằng hai yếu tố chính, băng thông bộ nhớ và tính toán.
Nói một cách đơn giản, mỗi tham số phải được đọc với hai FLOP được liên kết với nó. Do đó, tỷ lệ của hầu hết các chip (ví dụ: H100 SXM chỉ có băng thông bộ nhớ 3TB/giây, nhưng có 2.000 TFLOP/giây FP8) hoàn toàn không cân bằng khi suy luận với kích thước lô 1. Nếu chỉ có một người dùng được phục vụ, tức là với kích thước lô là 1, thì băng thông bộ nhớ cần thiết để truyền từng tham số cho mỗi lần tạo mã thông báo sẽ chi phối thời gian suy luận và thời gian tính toán gần như không đáng kể.
Để có thể chia tỷ lệ các mô hình lớn cho nhiều người dùng, kích thước lô phải lớn hơn 1 và nhiều người dùng chia sẻ chi phí đọc tham số. Ví dụ: với kích thước lô là 256 hoặc 512, mỗi byte bộ nhớ đọc vào tương ứng với 512 FLOP/s hoặc 1024 FLOP/s. Tỷ lệ này gần với tỷ lệ băng thông bộ nhớ trên FLOPS của H100. Giúp đạt hiệu suất sử dụng cao hơn, nhưng có nhược điểm là độ trễ cao hơn.
Nhiều người cho rằng dung lượng bộ nhớ là nút cổ chai chính đối với suy luận LLM, vì kích thước của kiểu máy có thể phù hợp với nhiều chip, nhưng quan điểm này có thể có vấn đề. Mặc dù suy luận về các mô hình lớn yêu cầu nhiều chip và dung lượng bộ nhớ cao hơn dẫn đến ít chip thích ứng hơn, nhưng thực tế tốt hơn là sử dụng nhiều chip hơn mức cần thiết để giảm độ trễ, tăng thông lượng và có thể sử dụng kích thước lô lớn hơn để liên tục tăng mức sử dụng.
Nếu một ứng dụng yêu cầu độ trễ thấp nhất có thể, chúng tôi cần nhiều chip hơn và chia mô hình theo nhiều cách nhất có thể để tiết kiệm. Kích thước lô nhỏ hơn cho phép độ trễ thấp hơn, nhưng kích thước lô nhỏ hơn cũng dẫn đến [việc sử dụng] MFU kém hơn, dẫn đến tổng chi phí trên mỗi mã thông báo (tính bằng giây chip hoặc đô la) cao hơn .
Nếu một ứng dụng yêu cầu suy luận ngoại tuyến và độ trễ không phải là vấn đề, thì mục tiêu chính là tối đa hóa thông lượng trên mỗi chip (tức là giảm thiểu tổng chi phí cho mỗi mã thông báo). Việc tăng kích thước lô là hiệu quả nhất, vì kích thước lô lớn hơn thường dẫn đến [việc sử dụng] MFU tốt hơn, nhưng một số chiến lược phân vùng nhất định không hiệu quả đối với kích thước lô nhỏ sẽ tăng lên khi kích thước lô tăng lên và trở nên hiệu quả.
**Nhiều chip hơn và kích thước lô lớn hơn sẽ rẻ hơn vì chúng tăng mức sử dụng, nhưng điều này cũng tạo ra biến số thứ ba, Thời gian kết nối mạng. ** Phương pháp triển khai mô hình trên nhiều chip có thể giải quyết hiệu quả sự chậm trễ, nhưng phải trả giá bằng việc sử dụng.
Cả phần tải trọng của thời gian lưu trữ và thời gian tính toán không chú ý đều tỷ lệ thuận với kích thước mô hình và tỷ lệ nghịch với số lượng chip. Đối với một bố cục phân vùng nhất định, thời gian cần thiết để giao tiếp giữa chip với chip giảm chậm hơn (hoặc hoàn toàn không) với số lượng chip được sử dụng, do đó, khi số lượng chip tăng lên, nút cổ chai ngày càng trở nên quan trọng hơn.
Chúng tôi nhận thấy rằng các yêu cầu về bộ nhớ của bộ nhớ đệm KV bùng nổ khi số lượng và kích thước lô tăng lên.
Nếu một ứng dụng cần tạo văn bản có ngữ cảnh chú ý dài (longchú ý bối cảnh), nó sẽ làm tăng thời gian suy luận lên rất nhiều. Đối với mô hình có hơn 500B chú ý nhiều đầu, bộ đệm chú ý KV có thể trở nên rất lớn: đối với mô hình có kích thước lô là 512 và độ dài ngữ cảnh là 2048, tổng dung lượng bộ đệm KV là 3TB, tức là gấp 3 lần kích thước tham số mô hình. Bộ nhớ trên chip (bộ nhớ trên chip) cần tải bộ đệm KV từ bộ nhớ ngoài chip (bộ nhớ ngoài chip), được tải mỗi khi mã thông báo được tạo. Trong giai đoạn này, lõi điện toán của chip về cơ bản là nhàn rỗi.
Độ dài chuỗi dài đặc biệt gây rắc rối cho băng thông bộ nhớ và dung lượng bộ nhớ. Lý do tại sao tăng áp GPT-3.5 của OpenAI với 16k bối cảnh và GPT-4 với 32k bối cảnh đắt tiền là vì chúng không thể xử lý các lô lớn hơn do hạn chế về bộ nhớ.
Lô nhỏ hơn dẫn đến việc sử dụng phần cứng thấp hơn. Ngoài ra, bộ đệm ẩn KV phình to khi độ dài chuỗi tăng lên. Bộ đệm KV không thể được chia sẻ giữa những người dùng, do đó, cần có các lần đọc bộ nhớ riêng biệt, làm giảm thêm băng thông bộ nhớ. Xem bên dưới để biết thêm thông tin về MQA.
08. Cơ sở hạ tầng và chi phí suy luận
Hạ tầng
Kiến trúc của MoE khiến cho việc suy luận của GPT-4 phải đối mặt với những thách thức về độ trễ, thông lượng và mức sử dụng. Do quá trình chuyển tiếp của mỗi mã thông báo có thể được định tuyến đến các mô hình chuyên gia khác nhau nên rất khó đạt được độ trễ thấp, thông lượng cao và mức sử dụng cao trong trường hợp này, đặc biệt là ở quy mô lô cao.
Kiến trúc GPT-4 của OpenAI chứa 16 mô hình chuyên gia và mỗi kênh chuyển tiếp có 2 bộ định tuyến. Điều này có nghĩa là với kích thước lô là 8, thông số đọc của mỗi chuyên gia chỉ có thể chiếm "1" kích thước lô. Nghiêm trọng hơn, điều này cũng dẫn đến quy mô lô là 8 đối với một chuyên gia, trong khi quy mô lô của các chuyên gia khác có thể chỉ là 4, 1 hoặc 0.
Ngoài ra, thuật toán định tuyến định tuyến chuyển tiếp theo các hướng khác nhau mỗi khi mã thông báo được tạo, dẫn đến sự thay đổi đáng kể về độ trễ giữa mã thông báo với mã thông báo và kích thước lô chuyên gia. Nghĩa là, khi xử lý các mã thông báo khác nhau, các chuyên gia khác nhau có thể được chỉ định cho các nhiệm vụ khác nhau và cả tải tính toán cũng như kích thước lô có thể thay đổi tương ứng.
Hạ tầng suy luận là một trong những cân nhắc chính để OpenAI chọn một số ít chuyên gia trong thiết kế MoE. Nếu họ sử dụng nhiều chuyên gia hơn, băng thông bộ nhớ sẽ trở thành nút cổ chai lớn hơn cho suy luận. OpenAI thường đạt kích thước lô trên 4k trên các cụm suy luận của riêng mình, điều đó có nghĩa là ngay cả khi cân bằng tải tối ưu giữa các chuyên gia, mỗi chuyên gia chỉ có thể đạt kích thước lô khoảng 500. Điều này đòi hỏi sử dụng rất lớn để đạt được.
Chúng tôi hiểu rằng OpenAI chạy suy luận trên một cụm gồm 128 GPU và có nhiều cụm như vậy ở các trung tâm dữ liệu và khu vực địa lý khác nhau. Suy luận được thực hiện song song với tenxơ 8 chiều và đường ống 16 chiều. Sử dụng 8 GPU trên mỗi nút, mỗi GPU chỉ có khoảng 130B tham số, tức là dưới 30GB trên mỗi GPU theo FP16 và dưới 15GB theo FP8/int8. Điều này cho phép chạy suy luận trên A100 40GB miễn là kích thước bộ đệm KV cho tất cả các đợt không tăng quá nhiều.
FP16, FP8 và int8 là các biểu diễn độ chính xác (độ chính xác) bằng số khác nhau, thường được sử dụng trong quy trình tính toán trong học sâu để giảm mức sử dụng bộ nhớ và tài nguyên máy tính, từ đó cải thiện hiệu quả của việc đào tạo mô hình và lập luận.
FP16, FP8 và int8 tương ứng đề cập đến các số dấu phẩy động 16 bit, số dấu phẩy động 8 bit và số nguyên 8 bit. Độ chính xác của chúng thấp hơn so với các số dấu phẩy động có độ chính xác đơn 32 bit (FP32 ), nhưng chúng có thể làm giảm đáng kể bộ nhớ và tài nguyên máy tính. Sử dụng để tăng tốc đào tạo mô hình và suy luận trong học sâu. Ví dụ: sử dụng FP16 có thể giảm hơn một nửa thời gian tính toán mà không làm giảm quá nhiều độ chính xác, trong khi sử dụng int8 có thể giảm thời gian tính toán xuống khoảng 4 lần mà không làm giảm quá nhiều độ chính xác.
Cần lưu ý rằng việc sử dụng các tính toán có độ chính xác thấp có thể có tác động nhất định đến độ chính xác của mô hình, do đó cần phải đánh đổi giữa độ chính xác và hiệu quả và chọn phương pháp biểu diễn độ chính xác phù hợp nhất theo yêu cầu nhiệm vụ cụ thể.
Để tránh giao tiếp mạng quá bất thường và đồng thời tránh chi phí tính toán lại bộ đệm KV giữa mỗi lần tạo mã thông báo, các lớp khác nhau chứa các chuyên gia khác nhau không được phân chia trên các nút khác nhau để chia sẻ bộ đệm KV.
**Khó khăn lớn nhất đối với tất cả các tiện ích mở rộng mô hình MoE trong tương lai và định tuyến có điều kiện. Đó là cách xử lý giới hạn 120 lớp định tuyến xung quanh bộ đệm KV. **
Trong mô hình MoE, số lượng lớp định tuyến trên mỗi nhánh không thể vượt quá 120 lớp, nếu không, bộ đệm KV không thể được xử lý hiệu quả. Điều này là do trong quá trình suy luận của mô hình, mỗi nhánh cần tính toán bộ đệm KV, dẫn đến tăng chi phí tính toán.
Một giải pháp đơn giản cho vấn đề này là đặt một tuyến mở rộng trong 15 nút khác nhau dựa trên giới hạn lớp là 120. Bằng cách này, tải tính toán có thể được phân bổ đồng đều trên các nút khác nhau, do đó cải thiện hiệu quả và hiệu suất của mô hình. Tuy nhiên, vì nút đầu tiên cần thực hiện tải và nhúng dữ liệu nên điều quan trọng là làm thế nào để đặt ít lớp hơn trên nút đầu của cụm suy luận.
Ngoài ra, trong quá trình mã hóa và giải mã dữ liệu đầu vào, có thể có một số nhiễu về giải mã suy luận, chúng tôi sẽ thảo luận thêm sau. Một vấn đề quan trọng hơn là xác định xem có nên tin vào tiếng ồn đó hay không. Điều này cũng có thể giải thích tại sao nên bao gồm ít lớp hơn trên nút đầu.
** chi phí hợp lý **
So với mẫu Davinchi có thông số 175B, GPT-4 có thông số feed-forward gấp 1,6 lần nhưng giá thành lại gấp 3 lần Davinchi. Điều này chủ yếu là do GPT-4 yêu cầu cụm lớn hơn và đạt được mức sử dụng thấp hơn.
Chúng tôi đoán rằng việc sử dụng 128 chiếc A100 để suy luận với độ dài ngữ cảnh GPT-4 8k (phần tiếp theo) sẽ tốn khoảng 0,0049 USD cho mỗi 1k mã thông báo. Trong khi sử dụng 128 H100 để suy luận về ngữ cảnh GPT-4 8k, chi phí cho mỗi 1k mã thông báo là khoảng 0,0021 USD. (Lưu ý: Giá hiện tại của GPT-4-8k là 0,03/1k mã thông báo đầu vào, 0,06/1k mã thông báo đầu ra. Hiện tại, việc sử dụng chip suy luận của OpenAI sẽ không xa hoa như tác giả suy đoán. Tính toán này có thể được sử dụng như một mức giá thấp hơn bị ràng buộc với việc giảm giá trong tương lai .) Điều quan trọng cần lưu ý là **các chi phí này được tính ở mức sử dụng cao và quy mô lô. **
Chúng tôi đưa ra giả thuyết rằng OpenAI sẽ tắt cụm trong thời kỳ suy thoái và sử dụng lại các nút đó cho các tác vụ khác, chẳng hạn như tiếp tục đào tạo điểm kiểm tra các mô hình thử nghiệm nhỏ hoặc thử nghiệm nhiều kỹ thuật mới. Làm như vậy sẽ giúp giữ cho chi phí suy luận ở mức thấp, nếu không, mức sử dụng của OpenAI có thể còn thấp hơn, nghĩa là gấp hơn 2 lần chi phí ước tính.
09. Cơ chế chú ý đa truy vấn
Việc sử dụng Chú ý nhiều truy vấn khá phổ biến, nhưng chúng tôi muốn nhấn mạnh rằng OpenAI cũng làm như vậy. Nói chung, chỉ cần 1 đầu chú ý và dung lượng bộ nhớ có thể giảm đáng kể cho KV caching. Mặc dù vậy, GPT-4 với 32k ngữ cảnh chắc chắn không thể chạy trên A100 40GB và kích thước lô tối đa là 8k đã bị giới hạn. Nếu không có MQA, kích thước lô tối đa là 8k sẽ bị hạn chế rất nhiều và lợi ích kinh tế sẽ giảm đi rất nhiều.
10. Xử lý hàng loạt liên tục
Để cho phép một số mức độ trễ tối đa và tối ưu hóa chi phí suy luận, OpenAI sử dụng cả kích thước lô thay đổi và kỹ thuật tạo lô liên tục. Cách tiếp cận này có thể cải thiện việc sử dụng tài nguyên máy tính mà không làm giảm hiệu suất của mô hình, đồng thời đạt được độ trễ thấp hơn và thông lượng cao hơn trong quá trình suy luận của mô hình. Nếu bạn không hiểu khái niệm xử lý hàng loạt liên tục, bài viết chính thức của AnyScale Cách xử lý hàng loạt liên tục cho phép thông lượng gấp 23 lần trong suy luận LLM đồng thời giảm độ trễ p50 rất đáng đọc. (Lưu ý Pickup: Khung điện toán phân tán Ray do Anyscale phát triển được OpenAI sử dụng trong đường ống cơ sở hạ tầng của mô hình. Pickup đã công bố nghiên cứu về công ty này trước đây.)
11. Giải mã đầu cơ
Có tin đồn rằng OpenAI sử dụng công nghệ Giải mã suy đoán trong nhiệm vụ suy luận của mô hình GPT-4. Mặc dù chúng tôi không thể chắc chắn về tính chính xác của thông báo này, nhưng sự thay đổi chung về độ trễ và phương sai từ mã thông báo này sang mã thông báo khác đối với cả tác vụ truy xuất đơn giản và tác vụ phức tạp hơn dường như cho thấy rằng kỹ thuật này có thể thực hiện được. Tuy nhiên, vì có quá nhiều biến nên chúng tôi không thể xác nhận liệu kỹ thuật này có thực sự được sử dụng hay không.
Việc sử dụng LLM thường được chia thành hai giai đoạn:
1. Giai đoạn điền trước
Trong giai đoạn này, một gợi ý () đầu tiên được đưa ra làm đầu vào và chạy qua mô hình để tạo bộ đệm KV và nhật ký đầu ra đầu tiên. Trong số đó, logits là đầu ra vectơ phân phối xác suất của LLM ở mỗi bước thời gian, được sử dụng để biểu thị khả năng của từng mã thông báo. Giai đoạn chuẩn bị trước này thường nhanh do tính toán song song.
2. Giai đoạn giải mã
Trong giai đoạn này, một mã thông báo được chọn từ các bản ghi đầu ra và được đưa trở lại mô hình để tạo các bản ghi cho mã thông báo tiếp theo. Điều này được lặp lại cho đến khi số lượng mã thông báo mong muốn được tạo. Vì mỗi lần giải mã phải được tính toán tuần tự để tạo mã thông báo, cường độ số học của giai đoạn thứ hai này (tức là FLOP được tính toán/byte băng thông bộ nhớ) là rất thấp khi chạy theo lô nhỏ. thường là phần đắt nhất của thế hệ tự hồi quy.
Đây là lý do tại sao việc nhập mã thông báo rẻ hơn nhiều so với mã thông báo đầu ra trong lệnh gọi API của OpenAI.
Ý tưởng cốt lõi của giải mã đầu cơ là sử dụng một mô hình dự thảo nhỏ hơn, nhanh hơn để giải mã trước một số mã thông báo và đưa chúng vào mô hình tiên tri dưới dạng một đợt. Nếu dự đoán của mô hình dự thảo là chính xác (nghĩa là đồng ý với dự đoán của mô hình tiên tri), một lô có thể được sử dụng để giải mã một số mã thông báo, tiết kiệm rất nhiều băng thông bộ nhớ và thời gian cho mỗi mã thông báo.
Tuy nhiên, nếu mô hình lớn hơn từ chối mã thông báo được dự đoán bởi mô hình dự thảo, thì phần còn lại của lô sẽ bị loại bỏ và thuật toán trở lại giải mã từng mã thông báo tiêu chuẩn. Giải mã đầu cơ cũng có thể được kết hợp với sơ đồ lấy mẫu từ chối để lấy mẫu mã thông báo từ phân phối ban đầu. Lưu ý rằng phương pháp này chỉ hoạt động trong cài đặt lô nhỏ trong đó băng thông là nút cổ chai.
Nói tóm lại, giải mã suy đoán đánh đổi tính toán để lấy băng thông và có hai lý do chính giải thích tại sao nó là một mục tiêu tối ưu hóa hiệu suất hấp dẫn. Đầu tiên, giải mã suy đoán hoàn toàn không làm giảm chất lượng mô hình, bởi vì nó chỉ cải thiện tốc độ suy luận và thông lượng của mô hình bằng cách sửa đổi quy trình tính toán của giai đoạn giải mã. Thứ hai, lợi ích mà nó mang lại nói chung là độc lập với các phương pháp khác, bởi vì ưu điểm của nó nằm ở việc chuyển đổi các phép tính tuần tự thành thực thi song song, trong khi các phương pháp khác chủ yếu bắt đầu với cấu trúc mô hình, tham số, đào tạo, v.v. để tối ưu hóa.
Các phương pháp suy luận hiện tại dự đoán một chuỗi duy nhất cho mỗi đợt. Tuy nhiên** phương pháp này không mở rộng quy mô tốt trong trường hợp lô lớn hoặc mô hình dự thảo có độ chính xác thấp. **Theo trực giác, đối với các chuỗi mã thông báo dài liên tục, xác suất của hai mô hình dự đoán thỏa thuận giảm theo cấp số nhân, điều đó có nghĩa là khi sức mạnh của thuật toán mở rộng, lợi nhuận của giải mã suy đoán sẽ giảm nhanh chóng.
Chúng tôi nghĩ rằng nếu OpenAI đang sử dụng giải mã suy đoán, thì có khả năng họ chỉ sử dụng nó cho các chuỗi ngắn có độ dài khoảng 4 mã thông báo. Ngoài ra, một số người cho rằng hiệu suất của mô hình GPT-4 giảm là do OpenAI đã thêm các chuỗi có xác suất thấp từ mô hình giải mã suy đoán vào đào tạo trước mô hình, điều này có thể không đúng.
Ngoài ra - Một số người cho rằng mô hình Bard cũng sử dụng giải mã suy đoán vì Google đợi chuỗi đầy đủ được tạo trước khi gửi cho người dùng, nhưng chúng tôi không tin dự đoán này là đúng.
12. Trực quan đa phương thức
Tầm nhìn Đa phương thức: Nó đề cập đến việc xử lý và phân tích chung thông tin từ các phương thức khác nhau (chẳng hạn như hình ảnh, văn bản, giọng nói, v.v.). Thông thường, thông tin của các phương thức khác nhau này có liên quan về mặt ngữ nghĩa, do đó, việc kết hợp chúng có thể cung cấp thông tin phong phú hơn và kết quả suy luận chính xác hơn.
Khả năng đa phương thức trực quan của GPT-4 đạt được thông qua bộ mã hóa hình ảnh độc lập với bộ mã hóa văn bản và có cơ chế chú ý chéo (Cross-Attention) với bộ mã hóa văn bản. Người ta nói rằng kiến trúc của nó tương tự như mô hình Flamingo. Bộ mã hóa hình ảnh đã được tinh chỉnh trên mô hình GPT-4 có 1,8 nghìn tỷ tham số, tuy nhiên, nó chỉ được đào tạo trước với ~2 nghìn tỷ mã thông báo dữ liệu văn bản bổ sung, không phải dữ liệu hình ảnh.
OpenAI có kế hoạch đào tạo mô hình tầm nhìn từ đầu, nhưng công nghệ này vẫn chưa hoàn thiện, vì vậy họ hy vọng sẽ giảm thiểu rủi ro bằng cách đào tạo từ văn bản.
**Có tin đồn rằng OpenAI's GPT-5 sẽ đào tạo các mô hình tầm nhìn từ đầu và có khả năng tự động tạo hình ảnh và xử lý âm thanh. **
Mục tiêu chính của công nghệ đa phương thức trực quan là cho phép các tác nhân tự động đọc các trang web và sao chép nội dung hình ảnh và video của chúng. Dữ liệu được OpenAI sử dụng để đào tạo mô hình này bao gồm dữ liệu chung (bao gồm LaTeX/văn bản được kết xuất), ảnh chụp màn hình trang web và khung mẫu video Youtube, v.v. và sử dụng công nghệ Whisper để phiên âm.
Một điều thú vị về vấn đề tối ưu hóa quá mức LLM là chi phí IO của mô hình trực quan khác với chi phí IO của mô hình văn bản thuần túy. Chi phí IO của mô hình văn bản rất rẻ, nhưng trong mô hình tầm nhìn, chi phí tải dữ liệu IO gấp khoảng 150 lần so với mô hình văn bản. Kích thước của mỗi mã thông báo là 600 byte, trong khi mô hình văn bản chỉ có 4 byte. Hiện tại, có rất nhiều công việc đang diễn ra trong nghiên cứu nén ảnh. (Xianxiang Lưu ý: Thông tin văn bản dễ nén hơn và mã thông báo hình ảnh/video là một hướng đáng chú ý trong lĩnh vực đa phương thức.)
Điều này rất quan trọng đối với các nhà cung cấp tối ưu hóa phần cứng của họ sau 2-3 năm để đảm bảo khả năng hình ảnh và âm thanh mạnh mẽ của từng kiểu máy. Họ có thể thấy rằng kiến trúc của họ không phù hợp. Nói chung, các kiến trúc LLM trong tương lai chắc chắn sẽ phát triển vượt ra ngoài các mô hình MoE và/hoặc dày đặc dựa trên văn bản đã giảm mà chúng ta thấy ngày nay.
Thẩm quyền giải quyết