Chạy Llama 3 trên Dell PowerEdge XE9680 và AMD MI300x với vLLM

Trong bối cảnh AI đang phát triển nhanh chóng, Meta AI Llama 3 nổi bật như một mô hình ngôn ngữ lớn (LLM) hàng đầu, thúc đẩy những tiến bộ trên nhiều ứng dụng, từ chatbot đến tạo văn bản. Máy chủ Dell PowerEdge cung cấp nền tảng lý tưởng để triển khai LLM phức tạp này, đáp ứng nhu cầu ngày càng tăng của các doanh nghiệp tập trung vào AI với hiệu suất mạnh mẽ và khả năng mở rộng của chúng.

Blog này trình bày cách suy luận bằng mô hình Llama 3 tiên tiến nhất (meta-llama/Meta-Llama-3-8B-Instruct và meta-llama/Meta-Llama-3-70B-Instruct) bằng các phương pháp khác nhau . Các phương pháp này bao gồm hình ảnh vùng chứa (hội thảo ngoại tuyến), API điểm cuối và phương pháp tiếp cận OpenAI—sử dụng Ôm mặt với vLLM.

Hình ảnh này minh họa quá trình tạo mã thông báo và tinh chỉnh với Dell PowerEdge XE9680 với AMD MI300X

Hình 1. Kiến trúc mô hình triển khai mô hình Llama 3 trên PowerEdge XE9680 với AMD MI300x 

Triển khai Llama 3

Bước 1: Cấu hình máy chủ Dell PowerEdge XE9680

Sử dụng các cài đặt cấu hình hệ thống sau: 

  •  Hệ điều hành:  Ubuntu 22.04.3 LTS 
  •  Hạt nhân:  Linux 5.15.0-105-generic 
  •  Kiến trúc: x86-64 
  •  mọt sách:  1.5.0
  •  Phiên bản ROCm™: 6.1
  •  Máy chủ:  Dell™ PowerEdge™ XE9680
  •  GPU : Bộ tăng tốc AMD Instinct™ MI300X 8x
  • Phiên bản vLLM: 0.3.2+rocm603
  • Mô hình Llama 3: meta-llama/Meta-Llama-3-8B-Instruct, meta-llama/Meta-Llama-3-70B-Instruct

Bước 2: Xây dựng vLLM từ vùng chứa

vLLM là một công cụ phục vụ hiệu suất cao, tiết kiệm bộ nhớ dành cho các mô hình ngôn ngữ lớn (LLM). Nó tận dụng PagedAttention và các kỹ thuật phân nhóm liên tục để xử lý nhanh chóng các yêu cầu LLM.

1. Cài đặt trình điều khiển, thư viện và công cụ AMD ROCm™. Sử dụng các hướng dẫn sau của AMD  cho nền tảng dựa trên Linux của bạn. Để đảm bảo các cài đặt này thành công, hãy kiểm tra thông tin GPU bằng rocm-smi. 

Hình ảnh này hiển thị thông tin Giao diện quản lý hệ thống ROCm.

2. Để nhanh chóng bắt đầu với vLLM, chúng tôi khuyên bạn nên sử dụng bộ chứa ROCm Docker, vì việc cài đặt và xây dựng vLLM từ nguồn có thể phức tạp; tuy nhiên, đối với nghiên cứu của chúng tôi, chúng tôi đã xây dựng nó từ nguồn để truy cập phiên bản mới nhất.

  • Bản sao Git cho phiên bản vLLM 0.3.2.
git clone -b v0.3.2 https://github.com/vllm-project/vllm.git
  • Để sử dụng nerdctl yêu cầu phải bật BuildKit. Sử dụng các hướng dẫn sau để thiết lập bản dựng nerdctl với BuildKit.
cd vllm
sudo nerdctl build -f Dockerfile -t vllm-rocm:latest . (Việc thực hiện này sẽ mất khoảng 2-3 giờ)
hình ảnh mọt sách | grep vllm
  • Chạy nó và thay thế <path/to/model> bằng đường dẫn thích hợp nếu bạn có một thư mục LLM mà bạn muốn gắn kết và truy cập trong vùng chứa.
nerdctl run -it --network=host --group-add=video --ipc=host --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --device /dev/kfd --device /dev/dri /card0 --device /dev/dri/card1 --device /dev/dri/renderD128 -v <path/to/model>:/app/model vllm-rocm:latest

Bước 3: Chạy Llama 3 bằng vLLM với ba cách tiếp cận

vLLM cung cấp nhiều phương pháp triển khai khác nhau để chạy mô hình Llama-3 của bạn – chạy ngoại tuyến, với hình ảnh vùng chứa, thông qua API điểm cuối hoặc sử dụng phương pháp OpenAI. 

Sử dụng máy chủ Dell XE9680 với GPU AMD Mi300, hãy khám phá chi tiết từng tùy chọn để xác định tùy chọn nào phù hợp nhất với yêu cầu về cơ sở hạ tầng và quy trình làm việc của bạn.Hình ảnh này hiển thị Llama 3 vLLM, AMD ROCm 6.1, Ubuntu 22.04 LTS và PowerEdge XE9680 với GPU AMD Instinct MI300x

Hình ảnh vùng chứa

  • Sử dụng hình ảnh vùng chứa dựng sẵn để cài đặt vLLM nhanh chóng và tốn ít công sức nhất.
  • Hỗ trợ triển khai nhất quán trên nhiều môi trường khác nhau, cả tại chỗ và trên nền tảng đám mây.

API điểm cuối 

  • Truy cập chức năng của vLLM thông qua API RESTful, cho phép tích hợp dễ dàng với các hệ thống khác.
  • Khuyến khích thiết kế mô-đun và giao tiếp trơn tru với các ứng dụng bên ngoài để tăng thêm tính linh hoạt.

OpenAI 

  • Chạy vLLM bằng framework như OpenAI, tùy chọn này hoàn hảo cho những ai đã quen với kiến ​​trúc của OpenAI.
  • Lý tưởng cho người dùng đang tìm kiếm sự chuyển đổi liền mạch từ quy trình làm việc OpenAI hiện có sang vLLM.

Bây giờ, hãy đi sâu vào quy trình từng bước để triển khai từng phương pháp này.

Cách tiếp cận 1: Llama 3 với hình ảnh vùng chứa (suy luận ngoại tuyến)

Để bắt đầu suy luận ngoại tuyến, trước tiên chúng ta cần xuất các biến môi trường. Để sử dụng mô hình Llama-3, bạn phải đặt biến môi trường HUGGING_FACE_HUB_TOKEN để xác thực, điều này yêu cầu đăng ký tài khoản Hugging Face để nhận mã thông báo truy cập.

root@16118303efa7:/app# import HUGGING_FACE_HUB_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Sử dụng tập lệnh hiện có do vLLM cung cấp và chỉnh sửa mô hình cần thiết cho hội thảo ngoại tuyến của bạn, trong trường hợp của chúng tôi, đó sẽ là “meta-llama/Meta-Llama-3-8B-Instruct và meta-llama/Meta-Llama-3-70B -Dạy”. Đảm bảo bạn có quyền hợp lệ để truy cập vào mô hình từ HUGGING FACE.

root@16118303efa7:/app# vi vllm/examples/offline_inference.py

Tiếp theo, tập lệnh Python (offline_inference.py) được thực thi để chạy quá trình suy luận. Tập lệnh này được thiết kế để hoạt động với vLLM, một công cụ suy luận được tối ưu hóa cho các mô hình ngôn ngữ lớn.

root@16118303efa7:/app# python vllm/examples/offline_inference.py 

Sau đó, tập lệnh khởi tạo mô hình Llama 3 bằng cách ghi lại thông tin thiết lập khóa như mã thông báo, cấu hình mô hình, thiết lập thiết bị và định dạng tải trọng số, đồng thời tiến hành tải xuống và tải các trọng số và thành phần mô hình (chẳng hạn như cấu hình mã thông báo) để suy luận ngoại tuyến với chi tiết nhật ký hiển thị tệp nào được tải xuống ở tốc độ nào.

Cuối cùng, tập lệnh thực thi mô hình Llama 3 với các lời nhắc ví dụ, hiển thị phản hồi dựa trên văn bản để thể hiện kết quả đầu ra mạch lạc, xác nhận khả năng suy luận ngoại tuyến của mô hình.

Lời nhắc: 'Xin chào, tên tôi là', Văn bản được tạo: ' Helen và tôi là sinh viên năm thứ hai tại Đại học Central Florida. TÔI' 
Lời nhắc: 'Tổng thống Hoa Kỳ là', Văn bản được tạo: " một nhân vật quyền lực, có khả năng định hình luật pháp, chính sách của đất nước," 
Lời nhắc: 'Thủ đô của Pháp là', Văn bản được tạo: ' một thành phố có bề dày lịch sử, nghệ thuật và văn hóa. Từ' 
Lời nhắc: 'Tương lai của AI là', Văn bản được tạo: ' ở đây và nó đã thay đổi cách chúng ta sống, làm việc và tương tác'

Cách tiếp cận 2: Suy luận Llama 3 qua máy chủ api  

Ví dụ này duy trì một môi trường máy chủ nhất quán và bao gồm vLLM thông qua máy chủ API cho phép bạn chạy phần phụ trợ vLLM và tương tác với nó thông qua các điểm cuối HTTP. Điều này cung cấp quyền truy cập linh hoạt vào các mô hình ngôn ngữ để tạo văn bản hoặc xử lý yêu cầu. 

root@16118303efa7:/app# python -m vllm.entrypoints.api_server --model meta-llama/Meta-Llama-3-8B-Instruct   

Đầu tiên, thực hiện lệnh sau để kích hoạt điểm cuối suy luận api_server bên trong vùng chứa. Người dùng có thể sửa đổi tham số đối số mô hình theo yêu cầu của họ từ danh sách mô hình được hỗ trợ . Nếu bạn yêu cầu model 70B, hãy đảm bảo rằng nó chạy trên GPU chuyên dụng, vì VRAM sẽ không đủ nếu các quy trình khác cũng đang chạy.   

THÔNG TIN 01-17 20:25:37 llm_engine.py:222] # khối GPU: 2642, # khối CPU: 327
THÔNG TIN: Quá trình máy chủ đã bắt đầu [10]
THÔNG TIN: Đang chờ khởi động ứng dụng.
THÔNG TIN: Quá trình khởi động ứng dụng đã hoàn tất.
THÔNG TIN: Uvicorn chạy trên http://0.0.0.0:8000 (Nhấn CTRL+C để thoát)

Ví dụ sau đây cung cấp kết quả mong đợi. Sau khi lệnh trên được thực thi, vLLM sẽ được kích hoạt thông qua cổng 8000. Bây giờ, bạn có thể sử dụng điểm cuối để giao tiếp với mô hình.

cuộn tròn http://localhost:8000/generate -d '{ 
 "prompt": "Dell là", 
 "use_beam_search": đúng, 
 "n": 5, 
 "nhiệt độ": 0 
 }'

Ví dụ sau đây cung cấp kết quả mong đợi.

{"text":["Dell là một trong những công ty công nghệ lớn nhất thế giới, cung cấp nhiều loại sản phẩm và","Dell là một trong những công ty công nghệ nổi tiếng và được kính trọng nhất trên thế giới, với một","Dell là một thương hiệu nổi tiếng trong ngành công nghệ và máy tính xách tay của họ được người tiêu dùng ưa chuộng","Dell là một trong những công ty công nghệ nổi tiếng và được kính trọng nhất trên thế giới","Dell là một trong những công ty tốt nhất. -các công ty công nghệ nổi tiếng và được kính trọng trên thế giới và"]}

Cách tiếp cận 3: Suy luận Llama 3 qua máy chủ tương thích openai

Cách tiếp cận này duy trì môi trường máy chủ nhất quán với vLLM được triển khai dưới dạng máy chủ triển khai giao thức API OpenAI. Điều này cho phép sử dụng vLLM để thay thế cho các ứng dụng sử dụng API OpenAI. Theo mặc định, nó khởi động máy chủ tại http://localhost:8000 . Bạn có thể chỉ định địa chỉ bằng các đối số –host và –port. Máy chủ hiện lưu trữ một mô hình tại một thời điểm và triển khai các mô hình danh sách, tạo hoàn thành trò chuyện và tạo điểm cuối hoàn thành. Các hành động sau đây cung cấp ví dụ cho mô hình Llama 3.

Để kích hoạt điểm cuối suy luận openai_tương thích trong vùng chứa, hãy sử dụng lệnh sau. Nếu bạn yêu cầu model 70B, hãy đảm bảo nó chạy trên GPU chuyên dụng, vì VRAM sẽ không đủ nếu các quy trình khác cũng đang chạy.

python -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-8B-Instruct   
python -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-70B-Instruct   

Để cài đặt OpenAI, hãy chạy lệnh sau với quyền root từ thực thể máy chủ.

cài đặt pip openai

Chạy lệnh sau để gọi tệp python, sau đó chỉnh sửa mô hình và url cơ sở openapi.

root@compute1:~# cat openai_vllm.py


từ openai nhập OpenAI 

 
openai_api_key = "RỖNG" 
openai_api_base = " http://localhost:8000/v1
khách hàng = OpenAI( 
    api_key=openai_api_key, 
    base_url=openai_api_base, 
 
luồng = client.chat.completions.create( 
    model="meta-llama/Meta-Llama-3-8B-Instruct", 
    messages=[{"role": "user", "content": "Giải thích sự khác biệt giữa Navy Diver và thẻ giá EOD"}], 
    max_tokens=4000, 
    luồng=Đúng, 
cho đoạn trong luồng: 
    nếu chunk.choices[0].delta.content không phải là Không có: 
        print(chunk.choices[0].delta.content, end="")

Chạy lệnh sau để thực thi.

root@compute1:~# python3 openai_vllm.py

Ví dụ sau đây cung cấp kết quả mong đợi.

Thợ lặn Hải quân (ND) và Xử lý Vật liệu nổ (EOD) đều là các cấp bậc chuyên môn trong Hải quân Hoa Kỳ, nhưng họ có vai trò và trách nhiệm riêng biệt. 
 
**Xếp hạng của Thợ lặn Hải quân (ND):** 
 
Thợ lặn Hải quân được huấn luyện để thực hiện nhiều hoạt động dưới nước, bao gồm: 
 
1. Trục vớt, trục vớt thiết bị, phương tiện dưới nước 
2. Xây dựng và bảo trì các công trình dưới nước 
3. Thanh thải chướng ngại vật và mối nguy hiểm dưới nước 
4. Thu hồi máy bay và các phương tiện dưới nước khác 
5. Lặn khoa học và nghiên cứu 
 
Thợ lặn Hải quân thường làm việc trong nhiều môi trường khác nhau, bao gồm cả nước ngọt và nước mặn, và có thể được triển khai trên tàu, tàu ngầm hoặc trên bờ. Trách nhiệm chính của họ bao gồm: 
 
* Tiến hành lặn xuống độ sâu lên tới 300 feet (91 mét) trong nhiều môi trường khác nhau 
* Vận hành thiết bị lặn chuyên dụng như máy thở lại và hệ thống thở lại 
* Thực hiện sửa chữa và bảo trì dưới nước các thiết bị và tàu thuyền 
* Tiến hành các hoạt động xây dựng và cứu hộ dưới nước 
 
**Xếp hạng xử lý vật liệu nổ (EOD):**

Phần kết luận

Việc kết hợp Llama 3 với Dell PowerEdge XE9680 sẽ khai thác khả năng mạnh mẽ của MI300 và XE960 của AMD, nhấn mạnh khả năng xử lý dữ liệu nhanh chóng và cung cấp cơ sở hạ tầng linh hoạt. Bằng cách tận dụng vLLM, nó nâng cao hiệu quả suy luận và triển khai mô hình, củng cố sự tập trung của Meta vào công nghệ AI nguồn mở tiên tiến và thể hiện sức mạnh của Dell trong việc cung cấp các giải pháp hiệu suất cao cho nhiều ứng dụng.

Hãy theo dõi các blog trong tương lai được đăng trên Dell Technologies Info Hub dành cho AI  để biết thêm thông tin về vLLM với các mẫu máy khác nhau và số liệu hiệu suất của chúng trên Poweredge XE9680.