Bắt đầu xây dựng quy trình RAG trong doanh nghiệp của bạn với Dell Technologies và NVIDIA (Phần 1)

Trong blog trước đây, chúng tôi đã giới thiệu việc chạy Llama 2 trên XE9680 bằng cách sử dụng LLM Playground của NVIDIA (một phần của khung NeMo). Đây là một nền tảng sáng tạo để thử nghiệm và triển khai các mô hình ngôn ngữ lớn (LLM) cho các ứng dụng doanh nghiệp khác nhau.

Thực tế là việc suy luận thẳng với các mô hình nền tảng trong bối cảnh doanh nghiệp đơn giản là không xảy ra và gây ra một số thách thức, chẳng hạn như thiếu kiến ​​thức về miền cụ thể, khả năng thông tin lỗi thời hoặc không đầy đủ và nguy cơ tạo ra phản hồi không chính xác hoặc gây hiểu nhầm. .

Thế hệ tăng cường truy xuất (RAG) đại diện cho một sự đổi mới quan trọng trong không gian AI tổng quát. 

RAG kết hợp các mô hình nền tảng AI tổng quát với các kỹ thuật truy xuất thông tin nâng cao để tạo ra các hệ thống tương tác vừa đáp ứng vừa có nhiều thông tin sâu sắc. Do tính linh hoạt của chúng, RAG có thể được thiết kế theo nhiều cách khác nhau. Trong một blog được xuất bản gần đây, David O’Dell đã chỉ ra cách RAG có thể được xây dựng từ đầu. 

Blog này cũng đóng vai trò là người bạn đồng hành tiếp theo với Sách trắng kỹ thuật NVIDIA RAG On Dell  có sẵn tại đây , trong đó nêu bật giải pháp được xây dựng trên Phần cứng trung tâm dữ liệu Dell, K8, Dell CSI PowerScale cho Kubernetes và bộ NVIDIA AI Enterprise. Hãy xem Sách trắng kỹ thuật để tìm hiểu thêm về cách tiếp cận logic và kiến ​​trúc giải pháp được sử dụng.    

Trong blog này, chúng tôi sẽ chỉ ra cách tiếp cận NVIDIA mới này cung cấp cách triển khai RAG tự động hơn, cách này có thể được tận dụng bởi những khách hàng đang xem xét một cách tiếp cận tiêu chuẩn hơn.

Chúng tôi sẽ hướng dẫn bạn từng bước cách thiết lập và chạy phần mềm LLM Playground của NVIDIA để bạn có thể thử nghiệm các quy trình RAG của riêng mình. Trong các bài đăng blog sau này (khi chúng ta đã quen với những kiến ​​thức cơ bản về sân chơi LLM), chúng ta sẽ bắt đầu tìm hiểu sâu hơn một chút về quy trình RAG để bạn có thể tùy chỉnh thêm và triển khai tiềm năng các quy trình RAG bằng cách sử dụng các thành phần phần mềm của NVIDIA.

Nhưng trước tiên, hãy đề cập đến những điều cơ bản. 

Xây dựng đường dẫn RAG của riêng bạn (Bắt đầu)

Một đường ống RAG điển hình bao gồm một số giai đoạn. Quá trình nhập tài liệu diễn ra ngoại tuyến và khi có truy vấn trực tuyến, việc truy xuất các tài liệu liên quan và tạo phản hồi sẽ diễn ra. 

Ở cấp độ cao, kiến ​​trúc của hệ thống RAG có thể được rút gọn thành hai đường dẫn:

  • Một quy trình định kỳ gồm quá trình xử lý trước, nhập và nhúng tài liệu
  • Một đường dẫn suy luận với việc tạo truy vấn và phản hồi của người dùng 

Một số thành phần và công cụ phần mềm thường được sử dụng. Các thành phần này phối hợp với nhau để cho phép xử lý và xử lý dữ liệu hiệu quả cũng như thực hiện các tác vụ suy luận thực tế. 

Các thành phần phần mềm này, kết hợp với thiết lập phần cứng (như GPU và máy/bộ chứa ảo), tạo ra cơ sở hạ tầng để chạy các tác vụ suy luận AI trong quy trình RAG điển hình. Sự tích hợp của các công cụ này cho phép xử lý các tập dữ liệu tùy chỉnh (như tệp PDF) và tạo ra các phản hồi phức tạp, giống con người bằng mô hình AI.

Như đã nêu trước đây, David O’Dell đã cung cấp một hướng dẫn cực kỳ hữu ích để thiết lập và vận hành hệ thống RAG. Một trong những thành phần chính là chức năng đường ống .

Chức năng đường dẫn trong thư viện Transformers của Hugging Face là một API cấp cao được thiết kế để đơn giản hóa quá trình sử dụng các mô hình được đào tạo trước cho các tác vụ NLP khác nhau và nó trừu tượng hóa sự phức tạp của việc tải mô hình, xử lý trước dữ liệu (như mã thông báo), suy luận, và xử lý hậu kỳ. Quy trình giao tiếp trực tiếp với mô hình để thực hiện suy luận nhưng tập trung hơn vào tính dễ sử dụng và khả năng truy cập hơn là mở rộng quy mô và tối ưu hóa việc sử dụng tài nguyên. Nó giống như một API cấp cao giúp loại bỏ phần lớn sự phức tạp liên quan đến việc thiết lập và sử dụng các mô hình dựa trên máy biến áp khác nhau.

Đó là lý tưởng để triển khai nhanh chóng các nhiệm vụ, tạo mẫu và ứng dụng NLP trong đó tính dễ sử dụng và đơn giản là chìa khóa.

Nhưng nó có dễ thực hiện không?

Việc thiết lập và duy trì đường ống RAG đòi hỏi chuyên môn kỹ thuật đáng kể về AI, học máy và quản trị hệ thống. Mặc dù một số thành phần (chẳng hạn như ‘chức năng đường ống’) đã được thiết kế để dễ sử dụng, nhưng thông thường, chúng không được thiết kế để mở rộng quy mô.

Vì vậy, chúng ta cần phần mềm mạnh mẽ, có thể mở rộng quy mô và dễ sử dụng hơn.

Các giải pháp của NVIDIA được thiết kế để mang lại hiệu suất và khả năng mở rộng cao, điều cần thiết để xử lý khối lượng công việc AI quy mô lớn và tương tác thời gian thực.

NVIDIA cung cấp tài liệu phong phú, sổ ghi chép Jupyter mẫu và ứng dụng web chatbot mẫu, những tài liệu này rất có giá trị để hiểu và triển khai quy trình RAG. 

Hệ thống được tối ưu hóa cho GPU NVIDIA, đảm bảo sử dụng hiệu quả một số phần cứng mạnh nhất hiện có.

Phương pháp đơn giản hóa của NVIDA — Xây dựng hệ thống RAG bằng các công cụ của NVIDIA:

Cách tiếp cận của NVIDIA là hợp lý hóa quy trình RAG và giúp thiết lập và vận hành dễ dàng hơn nhiều.

Bằng cách cung cấp một bộ công cụ được tối ưu hóa và các thành phần dựng sẵn, NVIDIA đã phát triển quy trình làm việc AI cho thế hệ tăng cường truy xuất bao gồm một chatbot mẫu và các yếu tố mà người dùng cần để tạo ứng dụng của riêng họ bằng phương pháp mới này. Nó đơn giản hóa nhiệm vụ khó khăn một thời là tạo ra các chatbot AI phức tạp, đảm bảo khả năng mở rộng và hiệu suất cao. 

Bắt đầu với sân chơi LLM của NVIDIA

 

Quy trình làm việc sử dụng NVIDIA NeMo, một khuôn khổ để phát triển và tùy chỉnh các mô hình AI tổng quát, cũng như phần mềm như NVIDIA Triton Inference Server và NVIDIA TensorRT-LLM để chạy các mô hình AI tổng quát trong sản xuất.

Các thành phần phần mềm đều là một phần của NVIDIA AI Enterprise, một nền tảng phần mềm giúp đẩy nhanh quá trình phát triển và triển khai AI sẵn sàng sản xuất với độ bảo mật, hỗ trợ và độ ổn định mà doanh nghiệp cần.

Nvidia đã xuất bản quy trình làm việc thế hệ tăng cường truy xuất dưới dạng ví dụ về ứng dụng tại 

https://resources.nvidia.com/en-us-generative-ai-chatbot-workflow/know-base-chatbot-technology-brief

Ngoài ra, nó còn duy trì một trang git với thông tin cập nhật về cách triển khai nó trong Linux Docker, Kubernetes và windows tại 

https://github.com/NVIDIA/GenerativeAIVí dụ

Tiếp theo, chúng ta sẽ hướng dẫn (ở cấp độ cao) quy trình sử dụng triển khai quy trình NVIDIA AI Enterprise Suite RAG bên dưới.

Sơ đồ hiển thị các thành phần đường ống tạo thế hệ tăng cường truy xuất.

Quy trình này dựa trên tài liệu trên liên kết https://github.com/NVIDIA/GenerativeAIExamples/tree/v0.2.0/RetrievalAugmentedGeneration

Triển khai

Hướng dẫn dành cho nhà phát triển NVIDIA cung cấp hướng dẫn chi tiết để xây dựng chatbot Thế hệ tăng cường truy xuất (RAG) bằng mô hình Llama2 trên TRT-LLM. Nó bao gồm các điều kiện tiên quyết như GPU NVIDIA, Docker, Bộ công cụ bộ chứa NVIDIA, Tài khoản NGC và trọng lượng mô hình Llama2. Hướng dẫn bao gồm các thành phần như Triton Model Server, Vector DB, API Server và sổ ghi chép Jupyter để phát triển. 

Các bước chính liên quan đến việc thiết lập các thành phần này, tải tài liệu lên và tạo câu trả lời. Quá trình này được thiết kế cho các chatbot doanh nghiệp, nhấn mạnh vào việc tùy chỉnh và tận dụng các công nghệ AI của NVIDIA. Để biết chi tiết và hướng dẫn đầy đủ, vui lòng tham khảo hướng dẫn chính thức .

Các thành phần Phần mềm chính và Quy trình kiến ​​trúc (để thiết lập và vận hành với sân chơi LLM)

 

1. Llama2 : Llama2 cung cấp khả năng xử lý ngôn ngữ nâng cao, cần thiết cho các tương tác chatbot AI phức tạp. Nó sẽ được chuyển đổi sang định dạng TensorRT-LLM.

Hãy nhớ rằng, chúng ta không thể lấy mô hình từ HuggingFace và chạy trực tiếp trên TensorRT-LLM. Một mô hình như vậy sẽ cần phải trải qua giai đoạn chuyển đổi trước khi có thể tận dụng tất cả ưu điểm của TensorRT-LLM. Gần đây chúng tôi đã xuất bản một blog chi tiết về cách thực hiện việc này một cách thủ công tại đây . Tuy nhiên, (đừng lo) là một phần của quy trình soạn thảo docker sân chơi LLM, tất cả những gì chúng ta cần làm là trỏ một trong các biến môi trường của mình vào mô hình llama. Nó sẽ tự động thực hiện quá trình chuyển đổi cho chúng ta! (các bước được nêu trong phần thực hiện của blog)

2. NVIDIA TensorRT-LLM : Khi nói đến việc tối ưu hóa các mô hình ngôn ngữ lớn, TensorRT-LLM chính là chìa khóa. Nó đảm bảo rằng các mô hình mang lại hiệu suất cao và duy trì hiệu quả trong các ứng dụng khác nhau.

  • Thư viện bao gồm các hạt nhân được tối ưu hóa, các bước xử lý trước và sau cũng như các nguyên tắc giao tiếp đa GPU/đa nút. Những tính năng này được thiết kế đặc biệt để nâng cao hiệu suất trên GPU NVIDIA.
  • Nó sử dụng cơ chế song song tensor để suy luận hiệu quả trên nhiều GPU và máy chủ mà không cần sự can thiệp của nhà phát triển hoặc thay đổi mô hình.

Chúng tôi sẽ cập nhật Generative AI trong Hướng dẫn thiết kế – Suy luận – Doanh nghiệp để phản ánh các yêu cầu về kích thước mới dựa trên TensorRT-LLM

3. LLM-inference-server: NVIDIA Triton Inference Server (container) : Việc triển khai các mô hình AI được tinh giản hóa với Triton Inference Server. Nó hỗ trợ phân phối mô hình linh hoạt và có thể mở rộng, điều này rất cần thiết để xử lý khối lượng công việc AI phức tạp. Máy chủ suy luận Triton chịu trách nhiệm lưu trữ mô hình Llama2 TensorRT-LLM

Bây giờ chúng ta đã có mô hình nền tảng được tối ưu hóa, chúng ta cần xây dựng phần còn lại của quy trình làm việc RAG.

  • Máy chủ chuỗi: langChain và LlamaIndex (container) : Cần thiết để đường ống RAG hoạt động. Một công cụ để kết nối các thành phần LLM lại với nhau. LangChain được sử dụng để kết nối các thành phần khác nhau như trình tải PDF và cơ sở dữ liệu vectơ, tạo điều kiện thuận lợi cho việc nhúng, điều này rất quan trọng đối với quy trình RAG.

4. Milvus (container) : Là cơ sở dữ liệu vectơ tập trung vào AI, Milvus nổi bật trong việc quản lý lượng dữ liệu khổng lồ cần thiết trong các ứng dụng AI. Milvus là một cơ sở dữ liệu vectơ nguồn mở có khả năng tìm kiếm vectơ tăng tốc GPU NVIDIA.

5. e5-large-v2 (container) : Mô hình nhúng được thiết kế để nhúng văn bản. Khi nội dung từ cơ sở kiến ​​thức được chuyển đến mô hình nhúng (e5-large-v2), nó sẽ chuyển đổi nội dung thành vectơ (được gọi là “nội dung nhúng”). Các phần nhúng này được lưu trữ trong cơ sở dữ liệu vectơ Milvus. 

Mô hình nhúng như “e5-large-v2” được sử dụng hai lần trong quy trình làm việc RAG (Thế hệ tăng cường truy xuất) điển hình, nhưng cho các mục đích hơi khác nhau ở mỗi bước. Đây là cách nó làm việc:

Việc sử dụng cùng một mô hình nhúng cho cả tài liệu và truy vấn của người dùng sẽ đảm bảo rằng các phép tính so sánh và tính tương tự là nhất quán và có ý nghĩa, dẫn đến kết quả truy xuất phù hợp hơn. 

Chúng ta sẽ nói về cách tạo “cung cấp ngữ cảnh cho mô hình ngôn ngữ để tạo phản hồi” trong phần quy trình làm việc nhanh chóng, nhưng trước tiên, hãy xem cách hoạt động của hai quy trình nhúng.

Chuyển đổi và lưu trữ vectơ tài liệu: Đầu tiên, mô hình nhúng xử lý toàn bộ bộ sưu tập tài liệu trong cơ sở tri thức. Mỗi tài liệu được chuyển đổi thành một vector. Các vectơ này về cơ bản là các biểu diễn số của tài liệu, nắm bắt nội dung ngữ nghĩa của chúng ở định dạng mà máy tính có thể xử lý một cách hiệu quả. Khi các vectơ này được tạo, chúng sẽ được lưu trữ trong cơ sở dữ liệu vectơ Milvus. Đây là quy trình một lần, thường được thực hiện khi cơ sở kiến ​​thức được thiết lập ban đầu hoặc khi nó được cập nhật thông tin mới. 

Xử lý truy vấn của người dùng: Mô hình nhúng tương tự cũng được sử dụng để xử lý truy vấn của người dùng. Khi người dùng gửi truy vấn, mô hình nhúng sẽ chuyển đổi truy vấn này thành vectơ, giống như đối với tài liệu. Điều quan trọng là truy vấn và tài liệu được chuyển đổi thành vectơ trong cùng một không gian vectơ, cho phép so sánh có ý nghĩa.

Thực hiện tìm kiếm tương tự: Khi truy vấn của người dùng được chuyển đổi thành vectơ, vectơ truy vấn này được sử dụng để thực hiện tìm kiếm tương tự trong cơ sở dữ liệu vectơ (chứa các vectơ của tài liệu). Hệ thống tìm kiếm các vectơ tài liệu giống nhất với vectơ truy vấn. Sự giống nhau trong ngữ cảnh này thường có nghĩa là các vectơ gần nhau trong không gian vectơ, ngụ ý rằng nội dung của tài liệu có liên quan về mặt ngữ nghĩa với truy vấn của người dùng.

Cung cấp ngữ cảnh nâng cao để tạo phản hồi: Các tài liệu (hoặc các phần của chúng) tương ứng với các vectơ giống nhau nhất được truy xuất và cung cấp cho mô hình ngôn ngữ dưới dạng ngữ cảnh. Ngữ cảnh này, cùng với truy vấn ban đầu của người dùng, giúp mô hình ngôn ngữ tạo ra phản hồi chính xác và đầy đủ thông tin hơn.

6. Mạng container nvidia-LLM : Để cho phép liên lạc giữa các container.

7. Giao diện người dùng web (vùng chứa sân chơi LLM) Giao diện người dùng web cung cấp giao diện người dùng bên trên các API. Bộ chứa sân chơi LLM cung cấp một ứng dụng web chatbot mẫu. Các yêu cầu tới hệ thống trò chuyện được gói gọn trong các lệnh gọi FastAPI tới Máy chủ suy luận Triton

Quy trình làm việc nhanh chóng

Xây dựng lời nhắc tăng cường : Bước tiếp theo là xây dựng lời nhắc cho Mô hình ngôn ngữ lớn (LLM) cơ bản. Lời nhắc này thường bao gồm:

  • Truy vấn ban đầu của người dùng : Nêu rõ truy vấn hoặc vấn đề.
  • Bối cảnh được truy xuất : Thông tin liên quan được truy xuất từ ​​cơ sở kiến ​​thức. Bối cảnh này rất quan trọng vì nó cung cấp cho LLM thông tin cụ thể mà nó có thể chưa được đào tạo hoặc có thể quá mới hoặc quá chi tiết đối với dữ liệu đào tạo của nó.
  • Định dạng và cấu trúc : Lời nhắc phải được định dạng và cấu trúc theo cách giúp LLM biết rõ thông tin nào từ truy vấn và thông tin nào là ngữ cảnh từ quá trình truy xuất. Điều này có thể liên quan đến các mã thông báo hoặc dấu phân cách đặc biệt.

Cân nhắc về độ dài và độ phức tạp: Lời nhắc tăng cường có thể trở nên rất lớn, đặc biệt nếu ngữ cảnh được truy xuất rộng. Có một sự đánh đổi cần được quản lý ở đây:

Bối cảnh quá ít : Có thể không cung cấp đủ thông tin để LLM tạo ra phản hồi đầy đủ thông tin.

Quá nhiều bối cảnh : Điều này có thể áp đảo LLM hoặc vượt quá giới hạn mã thông báo của nó, dẫn đến đầu vào bị cắt ngắn hoặc sự chú ý bị giảm sút trong lời nhắc.

Cung cấp Lời nhắc cho LLM : Sau khi lời nhắc được tạo, nó sẽ được đưa đến LLM cơ bản. LLM sau đó xử lý lời nhắc này, xem xét cả truy vấn ban đầu của người dùng và ngữ cảnh được cung cấp.

Tạo phản hồi : LLM tạo phản hồi dựa trên lời nhắc tăng cường. Phản hồi này dự kiến ​​sẽ chính xác hơn, nhiều thông tin hơn và phù hợp với ngữ cảnh hơn những gì LLM có thể tạo ra chỉ dựa trên truy vấn ban đầu, nhờ vào ngữ cảnh bổ sung được cung cấp bởi quá trình truy xuất.

Xử lý hậu kỳ : Trong một số hệ thống, có thể có thêm một bước xử lý hậu kỳ phản hồi, chẳng hạn như tinh chỉnh, rút ​​ngắn hoặc định dạng phản hồi để phù hợp hơn với nhu cầu của người dùng.

Lời nhắc tăng cường ví dụ: Định dạng này giúp mô hình ngôn ngữ hiểu câu hỏi cụ thể đang được hỏi và ngữ cảnh để trả lời câu hỏi đó, dẫn đến câu trả lời chính xác và phù hợp hơn.

[Truy vấn]: “Những phát triển mới nhất trong điều trị bệnh Alzheimer tính đến năm 2024 là gì?”

[Bối cảnh – Nghiên cứu Memoriax]: “Một nghiên cứu đột phá được công bố vào năm 2023 đã chứng minh hiệu quả của một loại thuốc mới, Memoriax, trong việc làm chậm sự tiến triển của bệnh Alzheimer. Thuốc nhắm vào các mảng amyloid trong não.”

[Bối cảnh – Sự chấp thuận của FDA]: “FDA đã phê duyệt một phương pháp điều trị bệnh Alzheimer mới vào cuối năm 2023, liên quan đến thuốc và liệu pháp kích thích não có mục tiêu.”

[Bối cảnh – Nghiên cứu Lối sống]: “Một nghiên cứu năm 2024 nhấn mạnh vai trò của chế độ ăn kiêng, tập thể dục và rèn luyện nhận thức trong việc trì hoãn các triệu chứng của bệnh Alzheimer.”

Vui lòng cung cấp cái nhìn tổng quan về những phát triển này và ý nghĩa của chúng đối với việc điều trị bệnh Alzheimer.

Triển khai XE9680

Các thành phần sau đây sẽ cần phải được cài đặt.

  • Ít nhất một GPU NVIDIA A100 với Llama 2 7B vì nó yêu cầu khoảng 38GB bộ nhớ GPU, việc triển khai của chúng tôi được phát triển bằng cách sử dụng 8x H100 cho Llama2 70B trên XE9680
  • Máy chủ XE9680 của chúng tôi đang chạy Ubuntu 22.04
  • Trình điều khiển NVIDIA phiên bản 535 hoặc mới hơn.
  • Docker, Docker-Compose và Docker-Buildx

Bước 1 – Đăng nhập vào Đám mây GPU NVIDIA

Để đăng nhập docker trên NGC, bạn cần tạo người dùng và khóa truy cập. Vui lòng tham khảo hướng dẫn và chạy lệnh sau: 

Đăng nhập Docker nvcr.io

Bước 2 – Tải xuống trọng lượng mô hình trò chuyện Llama2 

Trọng số mô hình trò chuyện Llama 2 cần được tải xuống từ Meta hoặc HuggingFace . Chúng tôi đã tải xuống các tệp trong quá trình triển khai và lưu trữ chúng trên Dell PowerScale F600 của mình. Máy chủ của chúng tôi có thể truy cập vào phần chia sẻ này bằng kết nối Eth 100Gb, cho phép chúng tôi thực hiện đồng thời nhiều thử nghiệm trên các máy chủ khác nhau. Sau đây là cách thư mục có trọng lượng mô hình Llama 70b sau khi tải xuống:

fbronzati@node003:~$ ll /aipsf600/project-helix/models/Llama-2-70b-chat-hf/ -h

tổng cộng 295G

drwxrwxrwx 3 fbronzati ais 2.0K Jan 23 07:20 ./

drwxrwxrwx 9 không ai nogroup 221 Ngày 23 tháng 1 07:20 ../

-rw-r—r—1 fbronzati ais 614 Ngày 4 tháng 12 12:25 config.json

-rw-r—r—1 fbronzati ais 188 Ngày 4 tháng 12 12:25 Generation_config.json

drwxr-xr-x 9 fbronzati ais 288 Ngày 4 tháng 12 14:04 .git/

-rw-r—r—1 fbronzati ais 1.6K ngày 4 tháng 12 12:25 .gitattributes

-rw-r—r—1 fbronzati ais 6,9K ngày 4 tháng 12 12:25 LICENSE.txt

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 12:40 model-00001-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:09 model-00002-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.3G Ngày 4 tháng 12 12:30 model-00003-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:21 model-00004-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:14 model-00005-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:12 model-00006-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.3G Ngày 4 tháng 12 12:55 model-00007-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:24 model-00008-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:00 model-00009-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:11 model-00010-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.3G Ngày 4 tháng 12 12:22 model-00011-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:17 model-00012-of-00015.safetensors

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:02 model-00013-of-00015.safetensors

-rw-r—r—1 fbronzati ais 8.9G Ngày 4 tháng 12 13:22 model-00014-of-00015.safetensors

-rw-r—r—1 fbronzati ais 501M ngày 4 tháng 12 13:17 model-00015-of-00015.safetensors

-rw-r—r—1 fbronzati ais 7.1K ngày 4 tháng 12 12:25 MODEL_CARD.md

-rw-r—r—1 fbronzati ais 66K ngày 4 tháng 12 12:25 model.safetensors.index.json

-rw-r—r—1 fbronzati ais 9.2G ngày 4 tháng 12 12:52 pytorch_model-00001-of-00015.bin

-rw-r—r—1 fbronzati ais 9.2G ngày 4 tháng 12 12:25 pytorch_model-00002-of-00015.bin

-rw-r—r—1 fbronzati ais 9.3G ngày 4 tháng 12 12:46 pytorch_model-00003-of-00015.bin

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:07 pytorch_model-00004-of-00015.bin

-rw-r—r—1 fbronzati ais 9.2G ngày 4 tháng 12 12:49 pytorch_model-00005-of-00015.bin

-rw-r—r—1 fbronzati ais 9.2G ngày 4 tháng 12 12:58 pytorch_model-00006-of-00015.bin

-rw-r—r—1 fbronzati ais 9.3G Ngày 4 tháng 12 12:34 pytorch_model-00007-of-00015.bin

-rw-r—r—1 fbronzati ais 9.2G ngày 4 tháng 12 13:15 pytorch_model-00008-of-00015.bin

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:05 pytorch_model-00009-of-00015.bin

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:08 pytorch_model-00010-of-00015.bin

-rw-r—r—1 fbronzati ais 9.3G Ngày 4 tháng 12 12:28 pytorch_model-00011-of-00015.bin

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:18 pytorch_model-00012-of-00015.bin

-rw-r—r—1 fbronzati ais 9.2G Ngày 4 tháng 12 13:04 pytorch_model-00013-of-00015.bin

-rw-r—r—1 fbronzati ais 8.9G Ngày 4 tháng 12 13:20 pytorch_model-00014-of-00015.bin

-rw-r—r—1 fbronzati ais 501M ngày 4 tháng 12 13:20 pytorch_model-00015-of-00015.bin

-rw-r—r—1 fbronzati ais 66K Ngày 4 tháng 12 12:25 pytorch_model.bin.index.json

-rw-r—r—1 fbronzati ais 9,8K ngày 4 tháng 12 12:25 README.md

-rw-r—r—1 fbronzati ais 1,2M Ngày 4 tháng 12 13:20 Hướng dẫn sử dụng có trách nhiệm.pdf

-rw-r—r—1 fbronzati ais 414 Ngày 4 tháng 12 12:25 Special_tokens_map.json

-rw-r—r—1 fbronzati ais 1.6K ngày 4 tháng 12 12:25 tokenizer_config.json

-rw-r—r—1 fbronzati ais 1,8 triệu ngày 4 tháng 12 12:25 tokenizer.json

-rw-r—r—1 fbronzati ais 489K Ngày 4 tháng 12 13:20 tokenizer.model

-rw-r–r– 1 fbronzati ais 4.7K Ngày 4 tháng 12 12:25 USE_POLICY.md

Bước 3 – Sao chép nội dung GitHub

Chúng ta cần tạo một thư mục làm việc mới và sao chép git repo bằng lệnh sau:

fbronzati@node003:/aipsf600/project-helix/rag$ git clone  https://github.com/NVIDIA/GenerativeAIExamples.git

fbronzati@node003:/aipsf600/project-helix/rag$ cd GenerativeAIExamples

fbronzati@node003:/aipsf600/project-helix/rag/GenerativeAIExamples$ thẻ kiểm tra git/v0.2.0

Bước 4 – Đặt biến môi trường

Để triển khai quy trình làm việc, chúng tôi sử dụng Docker Compose , cho phép bạn xác định và quản lý các ứng dụng nhiều vùng chứa trong một tệp YAML duy nhất. Điều này giúp đơn giản hóa nhiệm vụ phức tạp trong việc sắp xếp và điều phối các dịch vụ khác nhau, giúp quản lý và tái tạo môi trường ứng dụng của bạn dễ dàng hơn.

Để điều chỉnh việc triển khai, bạn cần chỉnh sửa tệp soạn thảo.env với thông tin về môi trường của bạn, thông tin như thư mục mà bạn đã tải xuống mô hình, tên của mô hình, GPU nào sẽ sử dụng, v.v., đều có trên tệp, bạn sẽ cần sử dụng trình soạn thảo văn bản ưa thích của mình, sau đây chúng tôi đã sử dụng vi với lệnh:

fbronzati@node003:/aipsf600/project-helix/rag/GenerativeAIExamples$ vi triển khai/compose/compose.env

Biến Dell XE9680

Dưới đây, chúng tôi cung cấp biến được sử dụng để triển khai quy trình làm việc trên Dell PowerEdge XE9680.

” import MODEL_DIRECTORY=”/aipsf600/project-helix/models/Llama-2-70b-chat-hf/ ” Đây là nơi chúng tôi trỏ đến mô hình mà chúng tôi đã tải xuống từ khuôn mặt ôm – mô hình sẽ được tự động chuyển đổi sang định dạng tensorR-TLLM đối với chúng tôi vì các vùng chứa được triển khai bằng cách sử dụng tập lệnh trợ giúp

fbronzati@node003:/aipsf600/project-helix/rag/GenerativeAIExamples$ cat triển khai/compose/compose.env

# đường dẫn đầy đủ đến bản sao cục bộ của trọng số mô hình

# LƯU Ý: Đây phải là đường dẫn tuyệt đối chứ không phải đường dẫn tương đối

xuất MODEL_DIRECTORY=”/aipsf600/project-helix/models/Llama-2-70b-chat-hf/”

 

# Điền vào đây nếu bạn không có GPU. Để trống phần này nếu bạn có GPU cục bộ

#xuất AI_PLAYGROUND_API_KEY=””

 

# gắn cờ để bật lượng tử hóa nhận biết kích hoạt cho LLM

# xuất QUANTIZATION=”int4_awq”

 

#kiến trúc của mô hình ví dụ: lạc đà không bướu

xuất MODEL_ARCHITECTURE=”llama”

 

# tên của mô hình đang được sử dụng – chỉ để hiển thị trên giao diện người dùng

xuất MODEL_NAME=”Llama-2-70b-chat-hf”

 

# [TÙY CHỌN] số lượng mã thông báo đầu vào tối đa

xuất MODEL_MAX_INPUT_LENGTH=3000

 

# [TÙY CHỌN] số lượng mã thông báo đầu ra tối đa

xuất MODEL_MAX_OUTPUT_LENGTH=512

 

# [TÙY CHỌN] số lượng GPU được cung cấp cho máy chủ suy luận

xuất INFERENCE_GPU_COUNT=”tất cả”

 

# [TÙY CHỌN] thư mục cơ sở mà tất cả các tập đĩa liên tục sẽ được tạo bên trong

# xuất DOCKER_VOLUME_DIRECTORY=”.”

 

# [TÙY CHỌN] tệp cấu hình cho máy chủ chuỗi wrt pwd

xuất APP_CONFIG_FILE=/dev/null

Bước 5 – Xây dựng và khởi động các container

Vì kho git có các tệp lớn nên chúng tôi sử dụng lệnh git lfs pull để tải xuống các tệp từ kho lưu trữ:

fbronzati@node003:/aipsf600/project-helix/rag/GenerativeAIExamples$ source triển khai/compose/compose.env; docker-compose -f triển khai/compose/docker-compose.yaml build

Sau đây, chúng tôi chạy lệnh sau để xây dựng hình ảnh vùng chứa docker:

fbronzati@node003:/aipsf600/project-helix/rag/GenerativeAIExamples$ source triển khai/compose/compose.env; docker-compose -f triển khai/compose/docker-compose.yaml build

Và cuối cùng, với một lệnh tương tự, chúng ta triển khai các container:

fbronzati@node003:/aipsf600/project-helix/rag/GenerativeAIExamples$ source triển khai/compose/compose.env; docker-compose -f triển khai/compose/docker-compose.yaml up -d

CẢNH BÁO: Biến AI_PLAYGROUND_API_KEY chưa được đặt. Mặc định là một chuỗi trống. Tạo mạng “nvidia-LLM” bằng trình điều khiển mặc định Tạo milvus-etcd … xong Tạo milvus-minio … xong Tạo LLM-inference-server … xong Tạo milvus-standalone … xong Tạo đánh giá … xong Tạo notebook-server … xong Tạo chuỗi-server … xong Tạo LLM-playground … xong

Quá trình triển khai sẽ mất vài phút để hoàn tất, đặc biệt tùy thuộc vào kích thước LLM bạn đang sử dụng. Trong trường hợp của chúng tôi, mất khoảng 9 phút để khởi chạy kể từ khi chúng tôi sử dụng mô hình 70B:

bronzati@node003:/aipsf600/project-helix/rag/GenerativeAIExamples$ docker ps -a CONTAINER ID HÌNH ẢNH TÌNH TRẠNG TẠO LỆNH TÌNH TRẠNG CỔNG TÊN ae34eac40476 LLM-playground:mới nhất “python3 -m frontend…” 9 phút trước Lên 9 phút 0.0.0.0 :8090->8090/tcp, :::8090->8090/tcp LLM-playground a9b4996e0113 chain-server:mới nhất “uvicorn RetrievalAu…” 9 phút trước Lên 9 phút 6006/tcp, 8888/tcp, 0.0.0.0:8082 ->8082/tcp, :::8082->8082/tcp chain-server 7b617f11d122 đánh giá:mới nhất “jupyter lab –allow…” 9 phút trước Lên 9 phút 0.0.0.0:8889->8889/tcp, ::: Đánh giá 8889->8889/tcp 8f0e434b6193 notebook-server:mới nhất “jupyter lab –allow…” 9 phút trước Lên 9 phút 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp notebook-server 23bddea51c61 milvusdb/milvus:v2.3.1-gpu “/tini — milvus run…” 9 phút trước Lên 9 phút (khỏe mạnh) 0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0 .0.0:19530->19530/tcp, :::19530->19530/tcp milvus-standalone f1b244f93246 LLM-inference-server:latest “/usr/bin/python3 -m…” 9 phút trước Lên 9 phút (khỏe mạnh) 0.0.0.0:8000-8002->8000-8002/tcp, :::8000-8002->8000-8002/tcp LLM-inference-server 89aaa3381cf8 minio/minio:RELEASE.2023-03-20T20-16-18Z ” /usr/bin/docker-ent…” 9 phút trước Lên 9 phút (khỏe mạnh) 0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp milvus-minio ecec9d808fdc    quay.io/coreos/etcd:v3.5.5                  “etcd -advertise-cli…” 9 phút trước Lên 9 phút (khỏe mạnh) 2379-2380/tcp

Truy cập sân chơi LLM

Bộ chứa sân chơi LLM cung cấp Một ứng dụng web chatbot mẫu được cung cấp trong quy trình làm việc. Các yêu cầu tới hệ thống trò chuyện được gói gọn trong các lệnh gọi FastAPI tới vùng chứa  máy chủ suy luận LLM chạy máy chủ suy luận Triton có tải Llama 70B.

Mở ứng dụng web tại http://host-ip:8090 . 

Hãy thử nó!

Một lần nữa, chúng tôi đã dành thời gian để demo Llama2 chạy trên sân chơi NVIDIA LLM trên XE9680 với GPU H100 8x. Sân chơi LLM được hỗ trợ bởi máy chủ Triton Inference của NVIDIA (nơi lưu trữ mô hình llama).

Chúng tôi hy vọng đã cho bạn thấy rằng LLM Playground của NVIDIA, một phần của khung NeMo, là một nền tảng đổi mới để thử nghiệm và triển khai các mô hình ngôn ngữ lớn (LLM) cho các ứng dụng doanh nghiệp khác nhau. Trong khi cung cấp:

  • Tùy chỉnh LLM được đào tạo trước : Nó cho phép tùy chỉnh các mô hình ngôn ngữ lớn được đào tạo trước bằng cách sử dụng kỹ thuật điều chỉnh p cho các trường hợp hoặc tác vụ sử dụng theo miền cụ thể.
  • Thử nghiệm với đường ống RAG