Logo Zephyrnet

Xây dựng các ứng dụng chatbot tùy chỉnh bằng các mô hình OpenChatkit trên Amazon SageMaker | Dịch vụ web của Amazon

Ngày:

Các mô hình ngôn ngữ lớn (LLM) nguồn mở đã trở nên phổ biến, cho phép các nhà nghiên cứu, nhà phát triển và tổ chức truy cập các mô hình này để thúc đẩy đổi mới và thử nghiệm. Điều này khuyến khích sự hợp tác từ cộng đồng nguồn mở để đóng góp vào sự phát triển và cải thiện LLM. Các LLM nguồn mở cung cấp tính minh bạch cho kiến ​​trúc mô hình, quy trình đào tạo và dữ liệu đào tạo, cho phép các nhà nghiên cứu hiểu cách thức hoạt động của mô hình và xác định các thành kiến ​​tiềm ẩn cũng như giải quyết các mối lo ngại về đạo đức. Các LLM nguồn mở này đang dân chủ hóa AI tổng quát bằng cách cung cấp công nghệ xử lý ngôn ngữ tự nhiên (NLP) tiên tiến cho nhiều người dùng để xây dựng các ứng dụng kinh doanh quan trọng. GPT-NeoX, LLaMA, Alpaca, GPT4All, Vicuna, Dolly và OpenAssistant là một số LLM nguồn mở phổ biến.

OpenChatKit là một LLM nguồn mở được sử dụng để xây dựng các ứng dụng chatbot đa năng và chuyên dụng, được Together Computer phát hành vào tháng 2023 năm 2.0 theo giấy phép Apache-XNUMX. Mô hình này cho phép các nhà phát triển có nhiều quyền kiểm soát hơn đối với hành vi của chatbot và điều chỉnh nó cho phù hợp với các ứng dụng cụ thể của họ. OpenChatKit cung cấp một bộ công cụ, bot cơ sở và các khối xây dựng để xây dựng các chatbot mạnh mẽ, được tùy chỉnh hoàn toàn. Các thành phần chính như sau:

  • Một LLM được điều chỉnh theo hướng dẫn, được tinh chỉnh để trò chuyện từ GPT-NeoX-20B của EleutherAI với hơn 43 triệu hướng dẫn trên điện toán âm 100% carbon. Các GPT-NeoXT-Chat-Base-20B mô hình dựa trên mô hình GPT-NeoX của EleutherAI và được tinh chỉnh với dữ liệu tập trung vào các tương tác kiểu hộp thoại.
  • Công thức tùy biến để tinh chỉnh mô hình nhằm đạt được độ chính xác cao trong công việc của bạn.
  • Một hệ thống truy xuất có thể mở rộng cho phép bạn tăng cường các phản hồi của bot bằng thông tin từ kho lưu trữ tài liệu, API hoặc nguồn thông tin cập nhật trực tiếp khác tại thời điểm suy luận.
  • Mô hình kiểm duyệt, được tinh chỉnh từ GPT-JT-6B, được thiết kế để lọc những câu hỏi mà bot phản hồi.

Quy mô và kích thước ngày càng tăng của các mô hình học sâu gây trở ngại cho việc triển khai thành công các mô hình này trong các ứng dụng AI tổng quát. Để đáp ứng nhu cầu về độ trễ thấp và thông lượng cao, việc sử dụng các phương pháp tinh vi như song song hóa mô hình và lượng tử hóa là điều cần thiết. Thiếu thành thạo trong việc áp dụng các phương pháp này, nhiều người dùng gặp khó khăn khi bắt đầu lưu trữ các mô hình lớn cho các trường hợp sử dụng AI tổng quát.

Trong bài đăng này, chúng tôi trình bày cách triển khai các mô hình OpenChatKit (GPT-NeoXT-Chat-Base-20B and GPT-JT-Moderation-6B) mô hình trên Amazon SageMaker sử dụng Dịch vụ DJL và các thư viện song song mô hình mã nguồn mở như DeepSpeed ​​và Ôm mặt tăng tốc. Chúng tôi sử dụng Dịch vụ DJL, đây là giải pháp phục vụ mô hình phổ quát hiệu suất cao được cung cấp bởi Thư viện Deep Java (DJL) là ngôn ngữ lập trình bất khả tri. Chúng tôi trình bày cách thư viện Tăng tốc ôm mặt đơn giản hóa việc triển khai các mô hình lớn thành nhiều GPU, do đó giảm gánh nặng chạy LLM theo kiểu phân tán. Bắt đầu nào!

Hệ thống truy xuất mở rộng

Hệ thống truy xuất có thể mở rộng là một trong những thành phần chính của OpenChatKit. Nó cho phép bạn tùy chỉnh phản hồi bot dựa trên cơ sở kiến ​​thức miền đóng. Mặc dù các LLM có thể giữ lại kiến ​​thức thực tế trong các tham số mô hình của họ và có thể đạt được hiệu suất vượt trội đối với các nhiệm vụ NLP xuôi dòng khi được tinh chỉnh, nhưng khả năng truy cập và dự đoán chính xác kiến ​​thức miền đóng của họ vẫn bị hạn chế. Do đó, khi chúng được trình bày với các nhiệm vụ đòi hỏi nhiều kiến ​​thức, hiệu suất của chúng sẽ kém hơn hiệu suất của các kiến ​​trúc dành riêng cho nhiệm vụ. Bạn có thể sử dụng hệ thống truy xuất OpenChatKit để bổ sung kiến ​​thức trong phản hồi của họ từ các nguồn kiến ​​thức bên ngoài như Wikipedia, kho lưu trữ tài liệu, API và các nguồn thông tin khác.

Hệ thống truy xuất cho phép chatbot truy cập thông tin hiện tại bằng cách thu thập các chi tiết thích hợp để trả lời một truy vấn cụ thể, từ đó cung cấp ngữ cảnh cần thiết để mô hình tạo câu trả lời. Để minh họa chức năng của hệ thống truy xuất này, chúng tôi hỗ trợ lập chỉ mục các bài viết trên Wikipedia và cung cấp mã ví dụ minh họa cách gọi API tìm kiếm trên web để truy xuất thông tin. Bằng cách làm theo tài liệu được cung cấp, bạn có thể tích hợp hệ thống truy xuất với bất kỳ tập dữ liệu hoặc API nào trong quá trình suy luận, cho phép chatbot kết hợp dữ liệu được cập nhật động vào phản hồi của nó.

mô hình điều độ

Các mô hình kiểm duyệt rất quan trọng trong các ứng dụng chatbot để thực thi lọc nội dung, kiểm soát chất lượng, an toàn cho người dùng cũng như các lý do tuân thủ và pháp lý. Kiểm duyệt là một nhiệm vụ khó khăn và mang tính chủ quan, đồng thời phụ thuộc rất nhiều vào miền của ứng dụng chatbot. OpenChatKit cung cấp các công cụ để kiểm duyệt ứng dụng chatbot và theo dõi lời nhắc văn bản đầu vào cho bất kỳ nội dung không phù hợp nào. Mô hình kiểm duyệt cung cấp một cơ sở tốt có thể được điều chỉnh và tùy chỉnh theo các nhu cầu khác nhau.

OpenChatKit có mô hình kiểm duyệt 6 tỷ tham số, GPT-JT-Moderation-6B, có thể kiểm duyệt chatbot để giới hạn đầu vào cho các đối tượng được kiểm duyệt. Mặc dù bản thân mô hình đã được tích hợp sẵn một số kiểm duyệt, TogetherComputer đã đào tạo một GPT-JT-Kiểm duyệt-6B mô hình với Ontocord.ai's Bộ dữ liệu kiểm duyệt OIG. Mô hình này chạy cùng với chatbot chính để kiểm tra xem cả thông tin người dùng nhập và câu trả lời từ bot đều không chứa kết quả không phù hợp. Bạn cũng có thể sử dụng điều này để phát hiện bất kỳ câu hỏi ngoài miền nào đối với chatbot và ghi đè khi câu hỏi không thuộc miền của chatbot.

Sơ đồ sau đây minh họa quy trình làm việc của OpenChatKit.

Các trường hợp sử dụng hệ thống truy xuất có thể mở rộng

Mặc dù chúng tôi có thể áp dụng kỹ thuật này trong các ngành khác nhau để xây dựng các ứng dụng AI tổng quát, nhưng đối với bài đăng này, chúng tôi thảo luận về các trường hợp sử dụng trong ngành tài chính. Công cụ tạo tăng cường truy xuất có thể được sử dụng trong nghiên cứu tài chính để tự động tạo báo cáo nghiên cứu về các công ty, ngành hoặc sản phẩm tài chính cụ thể. Bằng cách truy xuất thông tin liên quan từ cơ sở kiến ​​thức nội bộ, kho lưu trữ tài chính, bài báo và tài liệu nghiên cứu, bạn có thể tạo báo cáo toàn diện tóm tắt những hiểu biết chính, số liệu tài chính, xu hướng thị trường và khuyến nghị đầu tư. Bạn có thể sử dụng giải pháp này để theo dõi và phân tích tin tức tài chính, tâm lý thị trường và xu hướng.

Tổng quan về giải pháp

Các bước sau đây có liên quan để xây dựng một chatbot bằng cách sử dụng các mô hình OpenChatKit và triển khai chúng trên SageMaker:

  1. Tải xuống cơ sở trò chuyện GPT-NeoXT-Chat-Base-20B lập mô hình và đóng gói các tạo phẩm mô hình sẽ được tải lên Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3).
  2. Sử dụng bộ chứa suy luận mô hình lớn (LMI) của SageMaker, định cấu hình các thuộc tính và thiết lập mã suy luận tùy chỉnh để triển khai mô hình này.
  3. Định cấu hình các kỹ thuật song song mô hình và sử dụng các thư viện tối ưu hóa suy luận trong các thuộc tính phục vụ DJL. Chúng tôi sẽ sử dụng Ôm mặt tăng tốc làm công cụ phục vụ DJL. Ngoài ra, chúng tôi xác định các cấu hình song song tensor để phân vùng mô hình.
  4. Tạo mô hình SageMaker và cấu hình điểm cuối, đồng thời triển khai điểm cuối SageMaker.

Bạn có thể theo dõi bằng cách chạy sổ ghi chép trong Repo GitHub.

Tải xuống mô hình OpenChatKit

Đầu tiên, chúng tôi tải xuống mô hình cơ sở OpenChatKit. Chúng tôi sử dụng huggingface_hub Và sử dụng ảnh chụp nhanh_tải xuống để tải xuống mô hình, tải xuống toàn bộ kho lưu trữ tại một phiên bản nhất định. Tải xuống được thực hiện đồng thời để tăng tốc quá trình. Xem đoạn mã sau:

from huggingface_hub import snapshot_download
from pathlib import Path
import os
# - This will download the model into the current directory where ever the jupyter notebook is running
local_model_path = Path("./openchatkit")
local_model_path.mkdir(exist_ok=True)
model_name = "togethercomputer/GPT-NeoXT-Chat-Base-20B"
# Only download pytorch checkpoint files
allow_patterns = ["*.json", "*.pt", "*.bin", "*.txt", "*.model"]
# - Leverage the snapshot library to donload the model since the model is stored in repository using LFS
chat_model_download_path = snapshot_download( repo_id=model_name,#A user or an organization name and a repo name cache_dir=local_model_path, #Path to the folder where cached files are stored. allow_patterns=allow_patterns, #only files matching at least one pattern are downloaded.
)

Tài sản phục vụ DJL

Bạn có thể sử dụng bộ chứa SageMaker LMI để lưu trữ các mô hình AI tổng quát lớn với mã suy luận tùy chỉnh mà không cần cung cấp mã suy luận của riêng bạn. Điều này cực kỳ hữu ích khi không có tiền xử lý tùy chỉnh dữ liệu đầu vào hoặc xử lý hậu kỳ các dự đoán của mô hình. Bạn cũng có thể triển khai một mô hình bằng cách sử dụng mã suy luận tùy chỉnh. Trong bài đăng này, chúng tôi trình bày cách triển khai các mô hình OpenChatKit bằng mã suy luận tùy chỉnh.

SageMaker mong đợi các thành phần tạo tác của mô hình ở định dạng tar. Chúng tôi tạo từng mô hình OpenChatKit với các tệp sau: serving.propertiesmodel.py.

Sản phẩm serving.properties tệp cấu hình cho biết DJL Phục vụ thư viện tối ưu hóa suy luận và song song hóa mô hình nào bạn muốn sử dụng. Sau đây là danh sách các cài đặt chúng tôi sử dụng trong tệp cấu hình này:

openchatkit/serving.properties
engine = Python
option.tensor_parallel_degree = 4
option.s3url = {{s3url}}

Điều này chứa các tham số sau:

  • động cơ – Động cơ cho DJL sử dụng.
  • tùy chọn.entryPoint – Điểm vào Tệp Python hoặc mô-đun. Điều này sẽ phù hợp với động cơ đang được sử dụng.
  • tùy chọn.s3url – Đặt giá trị này thành URI của bộ chứa S3 chứa mô hình.
  • tùy chọn.modelid – Nếu bạn muốn tải mô hình xuống từ hugface.co, bạn có thể đặt option.modelid đến ID mô hình của mô hình được đào tạo trước được lưu trữ bên trong kho lưu trữ mô hình trên hugface.co (https://huggingface.co/models). Bộ chứa sử dụng ID mô hình này để tải xuống kho lưu trữ mô hình tương ứng trên hugface.co.
  • tùy chọn.tensor_parallel_degree – Đặt giá trị này thành số lượng thiết bị GPU mà DeepSpeed ​​cần để phân vùng mô hình. Tham số này cũng kiểm soát số lượng công nhân trên mỗi mô hình sẽ được khởi động khi Dịch vụ DJL chạy. Ví dụ: nếu chúng tôi có một máy 8 GPU và chúng tôi đang tạo tám phân vùng, thì chúng tôi sẽ có một công nhân trên mỗi kiểu máy để phục vụ các yêu cầu. Cần điều chỉnh mức độ song song và xác định giá trị tối ưu cho kiến ​​trúc mô hình và nền tảng phần cứng nhất định. Chúng tôi gọi đây là khả năng song song thích nghi với suy luận.

Tham khảo Cấu hình và cài đặt cho một danh sách đầy đủ các tùy chọn.

Mô hình OpenChatKit

Việc triển khai mô hình cơ sở OpenChatKit có bốn tệp sau:

  • model.py – Tệp này triển khai logic xử lý cho mô hình OpenChatKit GPT-NeoX chính. Nó nhận yêu cầu đầu vào suy luận, tải mô hình, tải chỉ mục Wikipedia và phục vụ phản hồi. tham khảo model.py(phần đã tạo của sổ ghi chép) để biết thêm chi tiết. model.py sử dụng các lớp chính sau:
    • OpenChatKitDịch vụ – Điều này xử lý việc truyền dữ liệu giữa mô hình GPT-NeoX, tìm kiếm Faiss và đối tượng hội thoại. WikipediaIndexConversation các đối tượng được khởi tạo và các cuộc hội thoại trò chuyện đầu vào được gửi đến chỉ mục để tìm kiếm nội dung liên quan từ Wikipedia. Điều này cũng tạo ra một ID duy nhất cho mỗi lần gọi nếu một ID không được cung cấp cho mục đích lưu trữ lời nhắc trong Máy phát điện Amazon.
    • Mô hình trò chuyện – Lớp này tải mô hình và mã thông báo và tạo phản hồi. Nó xử lý phân vùng mô hình trên nhiều GPU bằng cách sử dụng tensor_parallel_degreevà định cấu hình dtypesdevice_map. Các lời nhắc được chuyển đến mô hình để tạo phản hồi. Tiêu chí dừng StopWordsCriteria được định cấu hình để tạo chỉ tạo phản hồi bot khi suy luận.
    • Kiểm duyệtMô hình – Chúng tôi sử dụng hai mô hình kiểm duyệt trong ModerationModel lớp: mô hình đầu vào để chỉ ra cho mô hình trò chuyện rằng đầu vào không phù hợp để ghi đè kết quả suy luận và mô hình đầu ra để ghi đè kết quả suy luận. Chúng tôi phân loại dấu nhắc đầu vào và phản hồi đầu ra với các nhãn có thể sau:
      • bình thường
      • cần thận trọng
      • cần can thiệp (điều này được gắn cờ để người mẫu kiểm duyệt)
      • có thể cần thận trọng
      • có lẽ cần thận trọng
  • wikipedia_prepare.py – Tệp này xử lý tải xuống và chuẩn bị chỉ mục Wikipedia. Trong bài đăng này, chúng tôi sử dụng chỉ mục Wikipedia được cung cấp trên bộ dữ liệu Hugging Face. Để tìm kiếm văn bản liên quan trong các tài liệu Wikipedia, chỉ mục cần được tải xuống từ Hugging Face vì nó không được đóng gói ở nơi khác. Các wikipedia_prepare.py tệp chịu trách nhiệm xử lý tải xuống khi được nhập. Chỉ một quy trình duy nhất trong nhiều quy trình đang chạy để suy luận mới có thể sao chép kho lưu trữ. Phần còn lại đợi cho đến khi các tệp có trong hệ thống tệp cục bộ.
  • wikipedia.py – Tệp này được sử dụng để tìm kiếm chỉ mục Wikipedia cho các tài liệu có liên quan theo ngữ cảnh. Truy vấn đầu vào được mã hóa và nhúng được tạo bằng cách sử dụng mean_pooling. Chúng tôi tính toán các chỉ số khoảng cách tương tự cosin giữa nhúng truy vấn và chỉ mục Wikipedia để truy xuất các câu Wikipedia có liên quan theo ngữ cảnh. tham khảo wikipedia.py để biết chi tiết triển khai.
#function to create sentence embedding using mean_pooling
def mean_pooling(token_embeddings, mask): token_embeddings = token_embeddings.masked_fill(~mask[..., None].bool(), 0.0) sentence_embeddings = token_embeddings.sum(dim=1) / mask.sum(dim=1)[..., None] return sentence_embeddings #function to compute cosine similarity distance between 2 embeddings def cos_sim_2d(x, y): norm_x = x / np.linalg.norm(x, axis=1, keepdims=True) norm_y = y / np.linalg.norm(y, axis=1, keepdims=True) return np.matmul(norm_x, norm_y.T)

  • hội thoại.py – Tệp này được dùng để lưu trữ và truy xuất chuỗi hội thoại trong DynamoDB để chuyển cho mô hình và người dùng. conversation.py được điều chỉnh từ kho OpenChatKit mã nguồn mở. File này có nhiệm vụ định nghĩa đối tượng lưu trữ các lượt hội thoại giữa người và người mẫu. Với điều này, mô hình có thể giữ lại một phiên cho cuộc trò chuyện, cho phép người dùng tham khảo các tin nhắn trước đó. Bởi vì các lời gọi điểm cuối SageMaker là không trạng thái, cuộc hội thoại này cần được lưu trữ ở một vị trí bên ngoài các phiên bản điểm cuối. Khi khởi động, phiên bản này sẽ tạo một bảng DynamoDB nếu nó không tồn tại. Sau đó, tất cả các cập nhật cho cuộc trò chuyện sẽ được lưu trữ trong DynamoDB dựa trên session_id key, được tạo bởi điểm cuối. Bất kỳ lệnh gọi nào có ID phiên sẽ truy xuất chuỗi hội thoại được liên kết và cập nhật chuỗi đó theo yêu cầu.

Xây dựng vùng chứa suy luận LMI với các phụ thuộc tùy chỉnh

Tìm kiếm chỉ mục sử dụng Facebook Nàng tiên thư viện để thực hiện tìm kiếm tương tự. Bởi vì điều này không được bao gồm trong hình ảnh LMI cơ sở, vùng chứa cần được điều chỉnh để cài đặt thư viện này. Đoạn mã sau xác định Dockerfile cài đặt Faiss từ nguồn cùng với các thư viện khác mà điểm cuối bot cần. chúng tôi sử dụng sm-docker tiện ích để xây dựng và đẩy hình ảnh lên Đăng ký container đàn hồi Amazon (Amazon ECR) từ Xưởng sản xuất Amazon SageMaker. Tham khảo Sử dụng Amazon SageMaker Studio Image Build CLI để tạo hình ảnh vùng chứa từ sổ ghi chép Studio của bạn để biết thêm chi tiết.

Bộ chứa DJL chưa cài đặt Conda, vì vậy Faiss cần được sao chép và biên dịch từ nguồn. Để cài đặt Faiss, cần phải cài đặt các phần phụ thuộc để sử dụng API BLAS và hỗ trợ Python. Sau khi các gói này được cài đặt, Faiss được định cấu hình để sử dụng AVX2 và CUDA trước khi được biên dịch với các tiện ích mở rộng Python đã cài đặt.

pandas, fastparquet, boto3git-lfs được cài đặt sau đó vì chúng được yêu cầu để tải xuống và đọc các tệp chỉ mục.

FROM 763104351884.dkr.ecr.us-east-1.amazonaws.com/djl-inference:0.21.0-deepspeed0.8.0-cu117
ARG FAISS_URL=https://github.com/facebookresearch/faiss.git
RUN apt-get update && apt-get install -y git-lfs wget cmake pkg-config build-essential apt-utils
RUN apt search openblas && apt-get install -y libopenblas-dev swig
RUN git clone $FAISS_URL && cd faiss && cmake -B build . -DFAISS_OPT_LEVEL=avx2 -DCMAKE_CUDA_ARCHITECTURES="86" && make -C build -j faiss && make -C build -j swigfaiss && make -C build -j swigfaiss_avx2 && (cd build/faiss/python && python -m pip install ) RUN pip install pandas fastparquet boto3 && git lfs install --skip-repo && apt-get clean all

Tạo mô hình

Bây giờ, chúng ta đã có hình ảnh Docker trong Amazon ECR, chúng ta có thể tiến hành tạo đối tượng mô hình SageMaker cho các mô hình OpenChatKit. chúng tôi triển khai GPT-NeoXT-Chat-Base-20B mô hình kiểm duyệt đầu vào và đầu ra bằng cách sử dụng GPT-JT-Moderation-6B. Tham khảo tạo_model để biết thêm chi tiết.

from sagemaker.utils import name_from_base chat_model_name = name_from_base(f"gpt-neoxt-chatbase-ds")
print(chat_model_name) create_model_response = sm_client.create_model( ModelName=chat_model_name, ExecutionRoleArn=role, PrimaryContainer={ "Image": chat_inference_image_uri, "ModelDataUrl": s3_code_artifact, },
)
chat_model_arn = create_model_response["ModelArn"] print(f"Created Model: {chat_model_arn}")

Định cấu hình điểm cuối

Tiếp theo, chúng tôi xác định cấu hình điểm cuối cho các mô hình OpenChatKit. Chúng tôi triển khai các mô hình bằng cách sử dụng loại phiên bản ml.g5.12xlarge. tham khảo tạo_endpoint_config để biết thêm chi tiết.

chat_endpoint_config_name = f"{chat_model_name}-config"
chat_endpoint_name = f"{chat_model_name}-endpoint" chat_endpoint_config_response = sm_client.create_endpoint_config( EndpointConfigName=chat_endpoint_config_name, ProductionVariants=[ { "VariantName": "variant1", "ModelName": chat_model_name, "InstanceType": "ml.g5.12xlarge", "InitialInstanceCount": 1, "ContainerStartupHealthCheckTimeoutInSeconds": 3600, }, ],
)

Triển khai điểm cuối

Cuối cùng, chúng tôi tạo một điểm cuối bằng cách sử dụng mô hình và cấu hình điểm cuối mà chúng tôi đã xác định trong các bước trước:

chat_create_endpoint_response = sm_client.create_endpoint(
EndpointName=f"{chat_endpoint_name}", EndpointConfigName=chat_endpoint_config_name
)
print(f"Created Endpoint: {chat_create_endpoint_response['EndpointArn']},")

Chạy suy luận từ các mô hình OpenChatKit

Bây giờ là lúc gửi yêu cầu suy luận đến mô hình và nhận phản hồi. Chúng tôi chuyển lời nhắc văn bản đầu vào và các tham số mô hình, chẳng hạn như temperature, top_kmax_new_tokens. Chất lượng của phản hồi chatbot dựa trên các tham số đã chỉ định, vì vậy, bạn nên so sánh hiệu suất của mô hình dựa trên các tham số này để tìm ra cài đặt tối ưu cho trường hợp sử dụng của mình. Lời nhắc đầu vào trước tiên được gửi đến mô hình kiểm duyệt đầu vào và đầu ra được gửi đến ChatModel để tạo ra các câu trả lời. Trong bước này, mô hình sử dụng chỉ mục Wikipedia để truy xuất các phần có liên quan theo ngữ cảnh cho mô hình dưới dạng lời nhắc để nhận phản hồi theo miền cụ thể từ mô hình. Cuối cùng, phản hồi của mô hình được gửi đến mô hình kiểm duyệt đầu ra để kiểm tra phân loại và sau đó các phản hồi được trả về. Xem đoạn mã sau:

def chat(prompt, session_id=None, **kwargs): if session_id: chat_response_model = smr_client.invoke_endpoint( EndpointName=chat_endpoint_name, Body=json.dumps( { "inputs": prompt, "parameters": { "temperature": 0.6, "top_k": 40, "max_new_tokens": 512, "session_id": session_id, "no_retrieval": True, }, } ), ContentType="application/json", ) else: chat_response_model = smr_client.invoke_endpoint( EndpointName=chat_endpoint_name, Body=json.dumps( { "inputs": prompt, "parameters": { "temperature": 0.6, "top_k": 40, "max_new_tokens": 512, }, } ), ContentType="application/json", ) response = chat_response_model["Body"].read().decode("utf8") return response
prompts = "What does a data engineer do?"
chat(prompts)

Tham khảo các tương tác trò chuyện mẫu bên dưới.

Làm sạch

Làm theo hướng dẫn trong phần dọn dẹp của bài viết này để xóa các tài nguyên được cung cấp trong bài đăng này nhằm tránh các khoản phí không cần thiết. tham khảo Amazon SageMaker Giá để biết chi tiết về chi phí của các trường hợp suy luận.

Kết luận

Trong bài đăng này, chúng tôi đã thảo luận về tầm quan trọng của LLM nguồn mở và cách triển khai mô hình OpenChatKit trên SageMaker để xây dựng các ứng dụng chatbot thế hệ tiếp theo. Chúng tôi đã thảo luận về các thành phần khác nhau của mô hình OpenChatKit, mô hình kiểm duyệt và cách sử dụng nguồn kiến ​​thức bên ngoài như Wikipedia cho quy trình công việc tạo tăng cường truy xuất (RAG). Bạn có thể tìm thấy hướng dẫn từng bước trong Sổ ghi chép GitHub. Hãy cho chúng tôi biết về các ứng dụng chatbot tuyệt vời mà bạn đang xây dựng. Chúc mừng!


Về các tác giả

Dhawal Patel là một Kiến trúc sư chính về Học máy tại AWS. Ông đã làm việc với các tổ chức khác nhau, từ các doanh nghiệp lớn đến các công ty khởi nghiệp quy mô trung bình về các vấn đề liên quan đến máy tính phân tán và Trí tuệ nhân tạo. Ông tập trung vào Học sâu bao gồm các lĩnh vực NLP và Thị giác máy tính. Anh ấy giúp khách hàng đạt được khả năng suy luận mô hình hiệu suất cao trên SageMaker.

Vikram Elango là Kiến trúc sư giải pháp chuyên gia AIML cấp cao tại AWS, có trụ sở tại Virginia, Hoa Kỳ. Anh ấy hiện đang tập trung vào AI tổng quát, LLM, kỹ thuật nhanh, tối ưu hóa suy luận mô hình lớn và mở rộng quy mô ML trong các doanh nghiệp. Vikram giúp các khách hàng trong ngành tài chính và bảo hiểm có khả năng lãnh đạo về thiết kế và tư duy để xây dựng và triển khai các ứng dụng máy học trên quy mô lớn. Khi rảnh rỗi, anh ấy thích đi du lịch, đi bộ đường dài, nấu ăn và cắm trại cùng gia đình.

Andrew Smith là Kỹ sư hỗ trợ đám mây trong nhóm SageMaker, Vision & Other tại AWS, có trụ sở tại Sydney, Australia. Anh hỗ trợ khách hàng sử dụng nhiều dịch vụ AI/ML trên AWS với chuyên môn làm việc với Amazon SageMaker. Ngoài công việc, anh ấy thích dành thời gian cho bạn bè và gia đình cũng như tìm hiểu về các công nghệ khác nhau.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img