Logo Zephyrnet

Gradien giúp việc đo điểm chuẩn LLM trở nên hiệu quả về mặt chi phí và dễ dàng với AWS Inferentia | Dịch vụ web của Amazon

Ngày:

Đây là bài viết của khách được đồng sáng tác với Michael Feil tại gradient.

Đánh giá hiệu suất của các mô hình ngôn ngữ lớn (LLM) là một bước quan trọng của quá trình đào tạo trước và tinh chỉnh trước khi triển khai. Bạn có thể xác thực hiệu suất càng nhanh và thường xuyên thì cơ hội bạn có thể cải thiện hiệu suất của mô hình càng cao.

At Gradient, chúng tôi làm việc về phát triển LLM tùy chỉnh và vừa mới ra mắt Phòng thí nghiệm phát triển AI, cung cấp cho các tổ chức doanh nghiệp dịch vụ phát triển toàn diện, được cá nhân hóa để xây dựng các LLM riêng, tùy chỉnh và đồng thí điểm trí tuệ nhân tạo (AI). Là một phần của quy trình này, chúng tôi thường xuyên đánh giá hiệu suất của các mô hình của chúng tôi (được điều chỉnh, đào tạo và mở) dựa trên các tiêu chuẩn mở và độc quyền. Trong khi làm việc với nhóm AWS để đào tạo các mô hình của chúng tôi về Đào tạo AWS, chúng tôi nhận ra rằng chúng tôi bị hạn chế ở cả VRAM và tính khả dụng của các phiên bản GPU khi sử dụng công cụ chính để đánh giá LLM, lm-đánh giá-khai thác. Khung nguồn mở này cho phép bạn chấm điểm các mô hình ngôn ngữ tổng quát khác nhau qua các nhiệm vụ đánh giá và điểm chuẩn khác nhau. Nó được sử dụng bởi các bảng xếp hạng như Ôm mặt để chuẩn hóa công khai.

Để vượt qua những thách thức này, chúng tôi quyết định xây dựng và mở nguồn giải pháp của mình—tích hợp Tế bào thần kinh AWS, thư viện phía sau Suy luận AWS và Trainium, vào lm-evaluation-harness. Sự tích hợp này giúp cho việc đánh giá có thể thực hiện được v-alpha-tross, phiên bản đầu tiên của mô hình Albatross của chúng tôi, so với các mô hình công cộng khác trong quá trình đào tạo và sau đó.

Đối với ngữ cảnh, sự tích hợp này chạy như một lớp mô hình mới trong khai thác đánh giá lm, trừu tượng hóa suy luận về mã thông báo và ước tính khả năng ghi nhật ký của các chuỗi mà không ảnh hưởng đến nhiệm vụ đánh giá thực tế. Quyết định chuyển quy trình thử nghiệm nội bộ của chúng tôi sang Đám mây điện toán đàn hồi Amazon (Amazon EC2) Phiên bản Inf2 (được cung cấp bởi AWS Inferentia2) cho phép chúng tôi truy cập bộ nhớ tăng tốc dùng chung lên tới 384 GB, dễ dàng phù hợp với tất cả kiến ​​trúc công cộng hiện tại của chúng tôi. Bằng cách sử dụng Phiên bản dùng ngay AWS, chúng tôi có thể tận dụng dung lượng EC2 chưa sử dụng trong Đám mây AWS—giúp tiết kiệm chi phí tới 90% so với giá theo yêu cầu. Điều này giúp giảm thiểu thời gian thử nghiệm và cho phép chúng tôi thử nghiệm thường xuyên hơn vì chúng tôi có thể thử nghiệm trên nhiều phiên bản có sẵn và phát hành các phiên bản khi chúng tôi hoàn tất.

Trong bài đăng này, chúng tôi cung cấp bản phân tích chi tiết về các thử nghiệm của chúng tôi, những thách thức mà chúng tôi gặp phải và ví dụ về cách sử dụng khai thác thử nghiệm trên AWS Inferentia.

Đo điểm chuẩn trên AWS Inferentia2

Mục tiêu của dự án này là tạo ra các điểm số giống hệt như được trình bày trong Bảng xếp hạng LLM mở (đối với nhiều mô hình CausalLM có sẵn trên Ôm mặt), trong khi vẫn duy trì tính linh hoạt để chạy nó theo các tiêu chuẩn riêng. Để xem thêm ví dụ về các mẫu có sẵn, hãy xem AWS Inferentia và Trainium trên Ôm Mặt.

Những thay đổi mã cần thiết để chuyển qua mô hình từ máy biến áp Ôm mặt sang Ôm mặt Tế bào thần kinh tối ưu Thư viện Python khá thấp. Bởi vì lm-đánh giá-khai thác sử dụng AutoModelForCausalLM, có sự sụt giảm trong việc thay thế bằng cách sử dụng NeuronModelForCausalLM. Nếu không có mô hình được biên dịch trước, mô hình sẽ tự động được biên dịch ngay lập tức, điều này có thể khiến công việc mất thêm 15–60 phút. Điều này mang lại cho chúng tôi sự linh hoạt trong việc triển khai thử nghiệm cho mọi phiên bản AWS Inferentia2 và mô hình CausalLM được hỗ trợ.

Kết quả

Do cách thức hoạt động của điểm chuẩn và mô hình, chúng tôi không mong đợi điểm số sẽ khớp chính xác trên các lần chạy khác nhau. Tuy nhiên, chúng phải rất gần nhau dựa trên độ lệch chuẩn và chúng tôi đã thấy điều đó một cách nhất quán, như được trình bày trong bảng sau. Các điểm chuẩn ban đầu chúng tôi chạy trên AWS Inferentia2 đều được xác nhận bởi bảng xếp hạng Ôm Mặt.

In lm-evaluation-harness, có hai luồng chính được sử dụng bởi các thử nghiệm khác nhau: generate_untilloglikelihood. Bài kiểm tra gsm8k chủ yếu sử dụng generate_until để tạo ra phản hồi giống như trong quá trình suy luận. Loglikelihood chủ yếu được sử dụng trong việc đo điểm chuẩn và thử nghiệm, đồng thời kiểm tra xác suất tạo ra các đầu ra khác nhau. Cả hai đều hoạt động trong Neuron, nhưng loglikelihood phương pháp trong SDK 2.16 sử dụng các bước bổ sung để xác định xác suất và có thể mất thêm thời gian.

Kết quả đánh giá-khai thác Lm
Cấu hình phần cứng Hệ thống gốc AWS Inferentia inf2.48xlarge
Thời gian với batch_size=1 để đánh giá mistralai/Mistral-7B-Instruct-v0.1 trên gsm8k 103 phút 32 phút
Tính điểm trên gsm8k (get-answer – strict_match với std) 0.3813 – 0.3874 (± 0.0134) 0.3806 – 0.3844 (± 0.0134)

Bắt đầu với Neuron và lm-evaluation-harness

Mã trong phần này có thể giúp bạn sử dụng lm-evaluation-harness và chạy nó với các mô hình được hỗ trợ trên Ôm Mặt. Để xem một số mẫu có sẵn, hãy truy cập AWS Inferentia và Trainium trên Ôm Mặt.

Nếu đã quen với việc chạy các mô hình trên AWS Inferentia2, bạn có thể nhận thấy rằng không có num_cores cài đặt được chuyển vào. Mã của chúng tôi phát hiện số lượng lõi có sẵn và tự động chuyển số đó vào dưới dạng tham số. Điều này cho phép bạn chạy thử nghiệm bằng cách sử dụng cùng một mã bất kể bạn đang sử dụng kích thước phiên bản nào. Bạn cũng có thể nhận thấy rằng chúng tôi đang tham chiếu đến mô hình gốc chứ không phải phiên bản do Neuron biên soạn. Dây nịt sẽ tự động biên dịch mô hình cho bạn khi cần.

Các bước sau đây chỉ cho bạn cách triển khai gradient gradientai/v-alpha-tross mô hình chúng tôi đã thử nghiệm. Nếu bạn muốn kiểm tra bằng một ví dụ nhỏ hơn trên một phiên bản nhỏ hơn, bạn có thể sử dụng mistralai/Mistral-7B-v0.1 mô hình.

  1. Hạn ngạch mặc định để chạy phiên bản Inf theo yêu cầu là 0, vì vậy bạn nên yêu cầu tăng thông qua Hạn mức dịch vụ. Thêm một yêu cầu khác cho tất cả các yêu cầu Phiên bản Spot Inf để bạn có thể thử nghiệm bằng Phiên bản Spot. Bạn sẽ cần hạn mức 192 vCPU cho ví dụ này bằng cách sử dụng phiên bản inf2.48xlarge hoặc hạn mức 4 vCPU cho phiên bản inf2.xlarge cơ bản (nếu bạn đang triển khai mô hình Mistral). Định mức tùy theo từng khu vực AWS, vì vậy hãy đảm bảo bạn yêu cầu theo us-east-1 or us-west-2.
  2. Quyết định phiên bản của bạn dựa trên mô hình của bạn. Bởi vì v-alpha-tross là kiến ​​trúc 70B nên chúng tôi quyết định sử dụng phiên bản inf2.48xlarge. Triển khai inf2.xlarge (đối với mô hình 7B Mistral). Nếu đang thử nghiệm một mô hình khác, bạn có thể cần điều chỉnh phiên bản của mình tùy thuộc vào kích thước mô hình của bạn.
  3. Triển khai cá thể bằng cách sử dụng Ôm Mặt DLAMI phiên bản 20240123, để tất cả các trình điều khiển cần thiết được cài đặt. (Giá hiển thị bao gồm chi phí phiên bản và không tính thêm phí phần mềm.)
  4. Điều chỉnh kích thước ổ đĩa thành 600 GB (100 GB đối với Mistral 7B).
  5. Sao chép và cài đặt lm-evaluation-harness trên ví dụ. Chúng tôi chỉ định một bản dựng để biết bất kỳ sự khác biệt nào là do thay đổi mô hình, không phải do thay đổi kiểm tra hoặc mã.
git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
# optional: pick specific revision from the main branch version to reproduce the exact results
git checkout 756eeb6f0aee59fc624c81dcb0e334c1263d80e3
# install the repository without overwriting the existing torch and torch-neuronx installation
pip install --no-deps -e . 
pip install peft evaluate jsonlines numexpr pybind11 pytablewriter rouge-score sacrebleu sqlitedict tqdm-multiprocess zstandard hf_transfer

  1. chạy lm_eval với loại mô hình hf-neuron và đảm bảo bạn có liên kết đến đường dẫn quay lại mô hình trên Ôm mặt:
# e.g use mistralai/Mistral-7B-v0.1 if you are on inf2.xlarge
MODEL_ID=gradientai/v-alpha-tross

python -m lm_eval --model "neuronx" --model_args "pretrained=$MODEL_ID,dtype=bfloat16" --batch_size 1 --tasks gsm8k

Nếu chạy ví dụ trước với Mistral, bạn sẽ nhận được kết quả đầu ra sau (trên inf2.xlarge nhỏ hơn, có thể mất 250 phút để chạy):

███████████████████████| 1319/1319 [32:52<00:00,  1.50s/it]
neuronx (pretrained=mistralai/Mistral-7B-v0.1,dtype=bfloat16), gen_kwargs: (None), limit: None, num_fewshot: None, batch_size: 1
|Tasks|Version|  Filter  |n-shot|  Metric   |Value |   |Stderr|
|-----|------:|----------|-----:|-----------|-----:|---|-----:|
|gsm8k|      2|get-answer|     5|exact_match|0.3806|±  |0.0134|

Làm sạch

Khi bạn hoàn tất, hãy nhớ dừng các phiên bản EC2 thông qua bảng điều khiển Amazon EC2.

Kết luận

Nhóm Gradien và Neuron rất vui mừng khi thấy đánh giá LLM được áp dụng rộng rãi hơn với bản phát hành này. Hãy tự mình dùng thử và chạy khung đánh giá phổ biến nhất trên các phiên bản AWS Inferentia2. Giờ đây, bạn có thể hưởng lợi từ tính khả dụng theo yêu cầu của AWS Inferentia2 khi bạn đang sử dụng phát triển LLM tùy chỉnh từ gradient. Bắt đầu lưu trữ các mô hình trên AWS Inferentia với những mô hình này hướng dẫn.


Về các tác giả

Michael Feil là kỹ sư AI tại gradient và trước đây từng làm kỹ sư ML tại Rodhe & Schwarz và là nhà nghiên cứu tại Viện Hệ thống Thông minh Max-Plank và Bosch Rexroth. Michael là người đóng góp hàng đầu cho nhiều thư viện suy luận nguồn mở khác nhau cho LLM và các dự án nguồn mở như StarCoder. Michael có bằng cử nhân về cơ điện tử và CNTT của KIT và bằng thạc sĩ về robot của Đại học Kỹ thuật Munich.

Jim Burtoft là Kiến trúc sư giải pháp khởi nghiệp cấp cao tại AWS và làm việc trực tiếp với các công ty khởi nghiệp như gradient. Jim là CISSP, một phần của Cộng đồng lĩnh vực kỹ thuật AI/ML của AWS, Đại sứ Neuron và làm việc với cộng đồng nguồn mở để cho phép sử dụng Inferentia và Trainium. Jim có bằng cử nhân toán học của Đại học Carnegie Mellon và bằng thạc sĩ kinh tế của Đại học Virginia.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img