Bỏ qua đến nội dung chính

Running LLMs locally: Practical LLM Performance on DGX Spark — Mozhgan Kabiri chimeh, NVIDIA

TL;DR

  • Phát triển AI hiện đại đối mặt với thách thức về tài nguyên và độ trễ khi phụ thuộc vào đám mây. JxSpark được giới thiệu như một giải pháp cục bộ mạnh mẽ để tăng cường năng suất của nhà phát triển.
  • JxSpark, trang bị Super Chip Grace Blackwell GB10 với 128GB bộ nhớ hợp nhất, cho phép phát triển AI với các mô hình lên đến 200 tỷ tham số ngay trên bàn làm việc, sử dụng cùng ngăn xếp phần mềm với môi trường sản xuất.
  • Các thử nghiệm cho thấy JxSpark mang lại thông lượng và khả năng phản hồi vượt trội, đặc biệt là khi tận dụng kỹ thuật lượng tử hóa NVFB4 để tối ưu hóa hiệu suất của các mô hình lớn.

Điểm chính

  • JxSpark cung cấp một giải pháp phát triển AI cục bộ mạnh mẽ, giúp các nhà phát triển giải quyết các thách thức về giới hạn bộ nhớ, quyền truy cập phần mềm và sự phụ thuộc vào đám mây.
  • Hệ thống được trang bị Super Chip Grace Blackwell GB10 với 128GB bộ nhớ hợp nhất, cho phép chạy và phát triển các mô hình AI lên đến 200 tỷ tham số ngay tại chỗ.
  • JxSpark chạy cùng một ngăn xếp phần mềm AI của MVDA (NVIDIA) như trong môi trường sản xuất, đảm bảo các quy trình làm việc có thể di chuyển từ máy tính để bàn lên trung tâm dữ liệu hoặc đám mây với sự thay đổi tối thiểu.
  • Việc đo lường hiệu suất AI cần tập trung vào Thời gian cho mã thông báo đầu tiên (TTFT) để đánh giá trải nghiệm người dùng và Thông lượng (mã thông báo/giây) để đánh giá khả năng xử lý thô.
  • Lượng tử hóa, đặc biệt là định dạng NVFB4, là yếu tố then chốt để tối ưu hóa hiệu suất của các mô hình lớn trên phần cứng Blackwell, cải thiện đáng kể cả thông lượngTTFT.
  • JxSpark đóng vai trò là công cụ tạo mẫu hiệu quả, cho phép các nhà phát triển thử nghiệm các định dạng độ chính xác khác nhau cục bộ và hiểu rõ các đánh đổi về hiệu suất trong thời gian thực.
  • Sử dụng JxSpark cho phép xây dựng và tinh chỉnh cục bộ nhanh chóng các mô hình AI, sau đó sẵn sàng mở rộng quy mô lên trung tâm dữ liệu hoặc đám mây khi cần.

Từ vựng

  • AI — Trí tuệ nhân tạo
  • Unified Memory — Bộ nhớ hợp nhất
  • Parameters — Tham số (của mô hình AI)
  • Benchmark — Đo điểm chuẩn
  • Metric — Số liệu
  • Time to First Token (TTFT) — Thời gian cho mã thông báo đầu tiên
  • Throughput — Thông lượng
  • Quantization — Lượng tử hóa
  • Streaming Response — Phản hồi streaming

Nội dung chi tiết

Giới thiệu về Hiệu suất AI trên JxSpark

Xin chào mọi người, tôi là Moshka Kevri Chime, quản lý quan hệ nhà phát triển tại MVIDIA, nơi tôi hợp tác chặt chẽ với các nhà phát triển xây dựng và triển khai các hệ thống AI. Hôm nay, chúng ta sẽ xem xét việc chạy Elements cục bộ, hiệu suất Elements thực tế và JxSpark. Đây không phải là một buổi nói chuyện lý thuyết, mà là một buổi nói chuyện dựa trên dữ liệu thực tế và phản ánh đúng những đánh đổi của cơ sở hạ tầng AI hiện đại. Các phát hiện dựa trên các thí nghiệm thực hành với mục tiêu tìm hiểu những gì thực sự khả thi trên một hệ thống đơn lẻ.

Thách thức trong Phát triển AI

Sự phát triển trong AI đặt ra những yêu cầu lớn hơn đối với các hệ thống của nhà phát triển, tạo ra hai thách thức chính. Bạn có thể hết bộ nhớ hoặc không có quyền truy cập vào ngăn xếp phần mềm phù hợp, sau đó bạn sẽ phải đẩy mọi thứ lên đám mây hoặc trung tâm dữ liệu. Khi các mô hình chuyển từ giai đoạn thí nghiệm sang sản xuất, các mối lo ngại như năng suất chi phí, nơi lưu trú dữ liệu và độ trễ xác định trở thành trọng tâm. Tốc độ lặp thường phụ thuộc vào việc truy cập vào cơ sở hạ tầng dùng chung. Và vì công việc của bạn sẽ được lên lịch cùng với các khối lượng công việc cạnh tranh khác, điều này cũng gây ra sự chậm trễ trong công việc phát triển.

JxSpark: Giải pháp Phát triển AI Mạnh mẽ

Câu hỏi đặt ra là, liệu chúng ta có thể đưa một phần quy trình làm việc đó đến gần hơn nơi mà việc phát triển thực sự diễn ra không? Để tối đa hóa năng suất của nhà phát triển, cần có các giải pháp cục bộ cho những thách thức này. JxSpark được thiết kế từ đầu để xây dựng và chạy AI, đồng thời có thể được sử dụng như một hệ thống độc lập. Nó được trang bị Super Chip Grace Blackwell GB10, kết hợp CPUGPU với kiến trúc bộ nhớ hợp nhất, với 128GB bộ nhớ hợp nhất, và với hỗ trợ NVFB4, nó cho phép các nhà phát triển làm việc với các mô hình lên đến khoảng 200 tỷ tham số cục bộ – một trợ lý có thể đặt dưới hoặc trên bàn làm việc của bạn. Nó chạy cùng một ngăn xếp phần mềm AI của MVDA được sử dụng trong môi trường sản xuất, nghĩa là các quy trình làm việc có thể di chuyển từ máy tính để bàn đến trung tâm dữ liệu hoặc đám mây với những thay đổi tối thiểu. Ý tưởng chính ở đây không phải là thay thế đám mây, mà là mang sự phát triển AI mạnh mẽ đến gần hơn với nhà phát triển.

Thiết lập và Công cụ Benchmark

Đây là thiết lập của tôi. Mọi thứ chạy cục bộ và có thể tái tạo. Để phục vụ các mô hình, tôi đã sử dụng VLLN. Với một bộ Claude models, tôi đã thử nghiệm trên các kích thước và định dạng độ chính xác khác nhau. Tôi chạy điều này bên trong một Container được tối ưu hóa bởi MVDA. Điều này đảm bảo rằng môi trường của chúng tôi giống hệt với môi trường bạn sẽ triển khai trong một trung tâm dữ liệu.

Để hiển thị kết quả đáng tin cậy, tôi muốn giới thiệu cách tôi đã làm. Tôi đã xây dựng một công cụ đo benchmark tự động. Mỗi lần chạy mô hình từ 1.5 tỷ đến 14 tỷ đều tuân theo cùng một giao thức nghiêm ngặt: cách ly môi trường, ba lần chạy khởi động bắt buộc và ghi nhật ký metric GPU nền với khoảng thời gian một giây. Ở bên trái, chúng ta đang xem xét script điều phối. Đối với mỗi lần thực thi, script sẽ tự động tạo một thư mục duy nhất bằng cách sử dụng dấu thời gian chính xác và ID mô hình đã được làm sạch. Đối với mỗi lần chạy mô hình, nó sẽ ghi lại toàn bộ phản hồi điểm cuối của mô hình và các số liệu cần thiết. Ở bên phải, bạn sẽ thấy kết quả là một thành phẩm được tạo phiên bản rõ ràng của lần chạy đó. Nó chứa mọi thứ để xác minh các phát hiện, siêu dữ liệu và kết quả văn bản từ các điểm chuẩn. Ở phía dưới bên phải, bạn có thể thấy một lệnh ví dụ để bắt đầu.

Logic Đo lường: Thời gian cho Mã thông báo Đầu tiên

Bây giờ, hãy xem xét logic đo lường thực tế. Trong một ứng dụng AI, độ trễ N2N rất quan trọng, nhưng thời gian cho mã thông báo đầu tiên là số liệu định nghĩa hiệu suất cảm nhận của người dùng. Nếu mã thông báo đầu tiên đến ngay lập tức, ứng dụng sẽ có cảm giác phản hồi nhanh. Script ở đây cho thấy cách nó gắn dấu thời gian cho chunk đầu tiên của phản hồi streaming. Trong script này, chúng ta không chỉ gọi một API và chờ kết quả. Chúng ta đang xử lý rõ ràng phản hồi streaming từ máy chủ VLLN. Nếu bạn nhìn vào khối được tô sáng trong chuỗi dưới hàm Score 1, bạn sẽ thấy logic dấu thời gian. Để khám phá điều này trong thực tế, tôi đã chạy một loạt các thí nghiệm sử dụng VLLN trên JxSpark. Tôi đã thử nghiệm các mô hình khác nhau, từ các mô hình hướng dẫn nhỏ hơn đến các biến thể được tối ưu hóa lớn hơn, tất cả đều trong cùng một thiết lập. Mọi thứ đều được phục vụ cục bộ. Mục tiêu ở đây không phải là đẩy giới hạn lý thuyết, mà là để hiểu hành vi thực tế trong quy trình làm việc của nhà phát triển.

Hiệu suất Dữ liệu Thô: Thông lượng

Hãy cùng đi sâu vào dữ liệu hiệu suất thô mà tôi đã thu thập. Biểu đồ cột này thể hiện mã thông báo hoàn thành mỗi giây trên toàn bộ bộ kiểm thử. Ở phía ngoài cùng bên trái, bạn thấy mô hình instruct 1.5 tỷ tham số mang lại thông lượng khổng lồ 61.73 mã thông báo mỗi giây. Nhưng điểm dữ liệu thú vị nhất đối với chúng ta là mô hình NVFB4 14 tỷ tham số. Mặc dù lớn hơn gần 10 lần so với mô hình 1.5 tỷ tham số, nó vẫn đạt 20.90 mã thông báo mỗi giây. Tôi sẽ nói đây là một điểm tối ưu kỹ thuật quan trọng. Bằng cách tận dụng NVFB4 (lượng tử hóa số dấu phẩy động 4B), chúng ta có thể duy trì một mô hình thông minh cao cấp với thông lượng vẫn nhanh hơn tốc độ đọc trung bình của con người. Điều đáng chú ý ở đây là thông lượng giảm mạnh như thế nào khi mô hình mở rộng quy mô và lượng tử hóa giúp ích ra sao. Hãy xem mô hình cơ sở 14 tỷ tham số. Nó giảm xuống chỉ còn 8.4 mã thông báo mỗi giây. Điều này chứng tỏ rằng trên phần cứng Blackwell, việc lựa chọn định dạng lượng tử hóa cũng quan trọng như chính phần cứng. Đây là điều cho phép JxSpark thu hẹp khoảng cách giữa hệ thống và sản xuất, đóng vai trò là công cụ tạo mẫu. JxSpark này cho phép tôi thử nghiệm các định dạng độ chính xác khác nhau cục bộ và hiểu rõ những đánh đổi trong thời gian thực.

Hiệu suất Dữ liệu Thô: Thời gian cho Mã thông báo Đầu tiên

Mặc dù thông lượng là thước đo sức mạnh thô, thời gian cho mã thông báo đầu tiên là số liệu định nghĩa trải nghiệm người dùng. Nó quyết định liệu một ứng dụng có cảm thấy tức thời hay bị hỏng. Nói cách khác, nó phản ánh tốc độ mô hình bắt đầu phản hồi. Như chúng ta thấy trong kết quả, JxSpark mang lại khả năng phản hồi vượt trội. Việc tăng đối với các mô hình lớn hơn là điều được dự đoán. Nhiều tham số hơn có nghĩa là cần nhiều tính toán hơn trước khi mã thông báo đầu tiên được tạo ra. Một trong những điểm thú vị nhất từ biểu đồ này là sự so sánh giữa các mô hình 14 tỷ tham số: mô hình cơ sở và mô hình NVFB4. Như chúng ta có thể thấy, mô hình NVFB4 14 tỷ tham số nhanh hơn 3.4 lần về thời gian cho mã thông báo đầu tiên so với mô hình cơ sở 14 tỷ tham số chưa được tối ưu hóa.

Bài học Quan trọng: Dung lượng Bộ nhớ và Băng thông

Một bài học quan trọng từ dữ liệu này là dung lượng bộ nhớ không giống với băng thông bộ nhớ. Mặc dù JxSpark với 128GB bộ nhớ hợp nhất cho phép chúng ta chứa các mô hình khổng lồ lên đến 200 tỷ tham số, thông lượng của chúng ta vẫn bị chi phối bởi mức độ hiệu quả chúng ta có thể di chuyển dữ liệu. Đây là lý do tại sao NVFB4 đóng vai trò quan trọng ở đây. Nó làm tăng hiệu quả mức độ thông minh trên mỗi byte, cho phép một mô hình 14 tỷ tham số có cảm giác phản hồi nhanh như một mô hình nhỏ hơn nhiều.

Kết luận và Lời kêu gọi Hành động

Sau khi thực hiện tất cả các thử nghiệm này, tôi đã sử dụng JxSpark. Đối với khối lượng công việc trạng thái ổn định, dữ liệu nhạy cảm về quyền riêng tư và tạo mẫu nhanh, nó cho phép bạn xây dựng và tinh chỉnh cục bộ với cùng một ngăn xếp phần mềm được sử dụng trong đám mây JxSpark. Hãy truy cập build.mvd.com/spark để truy cập các sách hướng dẫn và ngăn xếp phần mềm mà tôi đã sử dụng cho các điểm chuẩn này. Và tóm lại: chạy cục bộ, lặp lại nhanh chóng và sau đó sẵn sàng mở rộng quy mô lên trung tâm dữ liệu hoặc đám mây.

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?