paint-brush
Cách chạy MPT-7B trên AWS SageMaker: Đối thủ cạnh tranh ChatGPT của MosaicMLtừ tác giả@redgeoff
444 lượt đọc
444 lượt đọc

Cách chạy MPT-7B trên AWS SageMaker: Đối thủ cạnh tranh ChatGPT của MosaicML

từ tác giả Geoff Cox8m2023/07/19
Read on Terminal Reader

dài quá đọc không nổi

Bài đăng trên blog giới thiệu MPT-7B của MosaicML như một giải pháp thay thế cho ChatGPT của OpenAI để chạy các mô hình chatbot trên cơ sở hạ tầng của riêng bạn. Nó cung cấp hướng dẫn từng bước về cách chạy MPT-7B trên AWS SageMaker, nêu bật các lợi ích như kiểm soát chi phí, lặp lại dễ dàng và khả năng chuyển đổi sang sản xuất. Bài đăng cũng thảo luận về các so sánh hiệu suất và thách thức với mô hình, nhấn mạnh tầm quan trọng của quyền riêng tư dữ liệu và hiệu quả chi phí.
featured image - Cách chạy MPT-7B trên AWS SageMaker: Đối thủ cạnh tranh ChatGPT của MosaicML
Geoff Cox HackerNoon profile picture
0-item
1-item
2-item

Trong bài đăng trên blog này, tôi sẽ hướng dẫn bạn từng bước về quy trình chạy đối thủ cạnh tranh ChatGPT của MosaicML, MPT-7B, trên phiên bản AWS SageMaker của riêng bạn.


Bạn có hào hứng với các khả năng của ChatGPT nhưng lo ngại về việc lộ dữ liệu nhạy cảm của mình cho OpenAI không? May mắn thay, có những lựa chọn thay thế mà bạn có thể chạy trên cơ sở hạ tầng của riêng mình. Một giải pháp thay thế như vậy là MPT-7b của MosaicML, một đối thủ cạnh tranh với ChatGPT, mà chúng ta sẽ khám phá trong bài đăng trên blog này.

Giới thiệu về MosaicML và MPT-7B

MosaicML, được Databricks mua lại gần đây với giá 1,3 tỷ đô la , đã tạo nên làn sóng trong cộng đồng ML với mẫu MPT-7B của họ, một đối thủ cạnh tranh được cho là của ChatGPT. Bất chấp lời hứa của nó, việc chạy mô hình này có thể gây khó khăn do tài liệu thưa thớt và các yêu cầu tài nguyên nặng nề của nó. Tuy nhiên, người ta có thể chạy MPT-7B trên AWS SageMaker trong sổ ghi chép Jupyter, một môi trường thân thiện với người mới bắt đầu và rất linh hoạt để lặp lại nhanh chóng. Thiết lập này cho phép bạn kiểm tra tính khả thi của mô hình và các yêu cầu phần cứng trước khi quyết định chuyển sang sản xuất.

Chạy MPT-7B trên AWS SageMaker

Chạy MPT-7B trong sổ ghi chép Jupyter trên AWS SageMaker mang lại một số lợi ích. Bạn không chỉ có thể trả tiền cho những gì bạn sử dụng và tắt nó đi khi bạn hoàn thành, mà khả năng dễ dàng chạy lại các phần mã của bạn mà không phải tải lại mô hình giúp tiết kiệm thời gian trong quá trình phát triển lặp lại. Nhưng hãy cẩn thận! Nếu bạn quên dừng phiên bản sổ ghi chép của mình, phí có thể tăng lên nhanh chóng.


Mặc dù phương pháp này tương đối thuận tiện, nhưng có một số cân nhắc bạn phải tính đến. Thứ nhất, tải mô hình có thể mất tới 20 phút ngay cả trên GPU hiệu suất cao, khiến quá trình này hơi tốn thời gian. Ngoài ra, chi phí là một yếu tố cần xem xét, vì chi phí vận hành ít nhất là 4 đô la mỗi giờ. Bạn sẽ cần chạy MPT-7B trên ít nhất một phiên bản p3.2xlarge ; bất cứ điều gì nhỏ hơn dường như không khả thi. Nếu chọn EC2 thay vì SageMaker, bạn sẽ phải xin phép AWS để sử dụng phiên bản p3.2xlarge .


Trong các phần tiếp theo, tôi sẽ hướng dẫn bạn từng bước cách chạy mô hình MPT-7B trong sổ ghi chép jupyter SageMaker của riêng bạn:

Bước 1 - Mở Bảng điều khiển SageMaker

Khởi động Bảng điều khiển AWS và tìm kiếm SageMaker:


Tìm kiếm SageMaker. Tín dụng hình ảnh: Tác giả

Bước 2 - Tạo phiên bản sổ ghi chép

Từ menu bên trái, chọn Notebook->Notebook instance :


Phiên bản máy tính xách tay. Tín dụng hình ảnh: Tác giả


Bấm vào nút Tạo phiên bản sổ ghi chép :


Tạo phiên bản sổ ghi chép. Tín dụng hình ảnh: Tác giả


Chỉ định một tên ví dụ. Chọn loại phiên bản m1.p3.2xlarge . Thật không may, có vẻ như phiên bản mạnh mẽ như m1.p3.2xlarge là bắt buộc, nếu không, phiên bản của bạn có thể hết bộ nhớ hoặc mất quá nhiều thời gian để trả lời ngay cả những câu hỏi đơn giản nhất. Tuy nhiên, xin lưu ý rằng phiên bản này sẽ có giá khoảng 4 đô la/giờ, vì vậy, điều quan trọng là phải theo dõi cẩn thận việc sử dụng của bạn.


Chỉ định chi tiết phiên bản sổ ghi chép. Tín dụng hình ảnh: Tác giả


Tạo vai trò IAM mới:


Tạo một vai trò mới. Tín dụng hình ảnh: Tác giả


Nếu môi trường thử nghiệm của bạn không có bất kỳ dữ liệu đặc biệt nhạy cảm nào trong đó thì bạn có thể cấp quyền truy cập vào Bộ chứa S3 bất kỳ . Nếu không, bạn sẽ cần phải rõ ràng hơn.


Chỉ định quyền truy cập S3. Tín dụng hình ảnh: Tác giả


Bấm vào nút Tạo phiên bản sổ ghi chép :


Tạo phiên bản sổ ghi chép. Tín dụng hình ảnh: Tác giả


Sau đó, sổ ghi chép sẽ ở trạng thái Đang chờ xử lý . Điều này có thể sẽ kéo dài trong khoảng 10 phút:


Phiên bản sổ ghi chép đang chờ xử lý. Tín dụng hình ảnh: Tác giả


Trong thời gian chờ đợi, chúng tôi sẽ tải xuống một sổ ghi chép để có thể tải nó lên sau khi phiên bản AWS SageMaker hoàn tất quá trình cung cấp.

Bước 3 - Tải xuống sổ ghi chép

Truy cập sổ ghi chép tại MPT-7B trên AWS SageMaker.ipynb và tải xuống:


Sổ tay trên Google Colab. Tín dụng hình ảnh: Tác giả



Tải xuống sổ ghi chép. Tín dụng hình ảnh: Tác giả


Trong sổ ghi chép này, bạn sẽ nhận thấy hai khối mã chính. Khối đầu tiên tải mã thông báo MPT-7B và mô hình:


 from torch import cuda, bfloat16 from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig device = f'cuda:{cuda.current_device()}' if cuda.is_available() else 'cpu' tokenizer = AutoTokenizer.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True) config={"init_device": "meta"} model = AutoModelForCausalLM.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True, config=config, torch_dtype=bfloat16) print(f"device={device}") print('model loaded')


Mã thông báo được sử dụng để mã hóa câu hỏi gửi đến mô hình và giải mã phản hồi từ mô hình. Ngoài ra, chúng tôi có được thông số kỹ thuật của thiết bị cho GPU của chúng tôi để chúng tôi có thể định cấu hình mô hình để sử dụng nó sau này:


 import time from IPython.display import Markdown import torch from transformers import StoppingCriteria, StoppingCriteriaList # mtp-7b is trained to add "<|endoftext|>" at the end of generations stop_token_ids = [tokenizer.eos_token_id] # Define custom stopping criteria object. # Source: https://github.com/pinecone-io/examples/blob/master/generation/llm-field-guide/mpt-7b/mpt-7b-huggingface-langchain.ipynb class StopOnTokens(StoppingCriteria): def __call__(self, input_ids: torch.LongTensor,scores: torch.FloatTensor, **kwargs) -> bool: for stop_id in stop_token_ids: if input_ids[0][-1] == stop_id: return True return False stopping_criteria = StoppingCriteriaList([StopOnTokens()]) def ask_question(question, max_length=100): start_time = time.time() # Encode the question input_ids = tokenizer.encode(question, return_tensors='pt') # Use the GPU input_ids = input_ids.to(device) # Generate a response output = model.generate( input_ids, max_new_tokens=max_length, temperature=0.9, stopping_criteria=stopping_criteria ) # Decode the response response = tokenizer.decode(output[:, input_ids.shape[-1]:][0], skip_special_tokens=True) end_time = time.time() duration = end_time - start_time display(Markdown(response)) print("Function duration:", duration, "seconds")


Lưu ý việc sử dụng stopping_critera , điều này là cần thiết nếu không mô hình sẽ bắt đầu lảm nhảm, ngay cả sau khi nó đã trả lời câu hỏi của chúng ta.


Xem tham số tạo mô hình nếu bạn muốn khám phá các tùy chọn khác nhau.


Bây giờ, hãy tải sổ ghi chép này lên SageMaker.

Bước 4 - Tải sổ ghi chép lên

Hy vọng rằng vào thời điểm này, phiên bản sổ ghi chép SageMaker của bạn đã được cung cấp xong. Khi có, hãy nhấp vào liên kết Mở Jupyter :


Mở Jupyter. Tín dụng hình ảnh: Tác giả


Sau đó, nhấp vào nút Tải lên ở góc trên cùng bên phải của màn hình và chọn sổ ghi chép mà bạn vừa tải xuống:


Tải sổ ghi chép lên. Tín dụng hình ảnh: Tác giả


Đặt kernel thành conda_python3 :


Đặt hạt nhân. Tín dụng hình ảnh: Tác giả


Bước 5 - Chạy sổ ghi chép

Chọn Cell -> Run All :


Chạy tất cả các ô. Tín dụng hình ảnh: Tác giả


Biểu tượng đồng hồ cát sau đó sẽ xuất hiện trong tab trình duyệt:


Chờ sổ tay. Tín dụng hình ảnh: Tác giả


Sau đó, bạn sẽ cần đợi khoảng 10 phút để mô hình được tải xuống:


Tải về mô hình. Tín dụng hình ảnh: Tác giả


Sau khi nó chạy, bạn sẽ thấy câu trả lời cho câu hỏi Giải thích cho tôi sự khác biệt giữa phản ứng phân hạch và phản ứng tổng hợp hạt nhân :


Giải thích cho tôi sự khác biệt giữa phản ứng phân hạch và phản ứng tổng hợp hạt nhân. Tín dụng hình ảnh: Tác giả


Vì mô hình và trình mã thông báo đã được tải ở trên, nên bạn chỉ cần sửa đổi khối mã hỏi_câu hỏi và nhấp vào nút Chạy để hỏi bất kỳ câu hỏi nào khác. Điều này sẽ giúp bạn tiết kiệm 10 phút mỗi lần bạn muốn kiểm tra một câu hỏi mới.


Thủ đô của Phap la gi?. Tín dụng hình ảnh: Tác giả


Bước 6 - Dừng sổ tay

Ngay sau khi kiểm tra xong mô hình, bạn sẽ muốn quay lại danh sách các phiên bản sổ ghi chép của mình và dừng nó. Nếu không, $4/giờ sẽ tăng lên rất nhanh 💸


Dừng sổ. Tín dụng hình ảnh: Tác giả


So sánh hiệu suất

Về hiệu suất, các thử nghiệm sơ bộ của tôi cho thấy kết quả của MPT-7B có thể không tốt bằng ChatGPT. Nó thực hiện tốt công việc trả lời các câu hỏi như:

  • Thủ đô của Phap la gi? ,
  • Giải thích cho tôi sự khác biệt giữa phân hạch hạt nhân và phản ứng tổng hợp
  • Viết mã python chuyển đổi csv thành pdf .


Nhưng đối với những câu hỏi như_Thủ đô của Belize là gì?_ nó fail khá tệ:


Thủ đô của Belize là gì?. Tín dụng hình ảnh: Tác giả


Tôi hiện đang thu thập thêm dữ liệu và sẽ tiến hành phân tích so sánh toàn diện trong một bài đăng blog tiếp theo. Trong bài đăng đó, tôi sẽ so sánh hiệu suất câu hỏi và câu trả lời của MPT-7B, MPT-30B, Falcon-40b và ChatGPT bằng lịch sử hội thoại thực tế.

Từ thử nghiệm đến sản xuất

Khi bạn đã sẵn sàng chuyển đổi từ thử nghiệm sang sản xuất, SageMaker cung cấp một lợi ích bổ sung - khả năng tạo điểm cuối cho mô hình của bạn. Với SageMaker, bạn có thể tự động thay đổi quy mô dựa trên nhu cầu đến điểm cuối, tối ưu hóa tài nguyên của mình.

Mẹo bổ sung

Hãy lưu ý rằng quy trình của bạn rất dễ bị rẽ nhánh khi đang chạy trong sổ ghi chép Jupyter và hết bộ nhớ. Nếu điều này xảy ra, chỉ cần tắt kernel và chạy lại tất cả các lệnh.

Nếu bạn muốn chạy mô hình này trên một nền tảng khác ngoài AWS, thì Google Colab Pro là một lựa chọn khả thi khác với mức giá 9 đô la/tháng. Tuy nhiên, dựa trên thử nghiệm của mình, chúng tôi nhận thấy rằng chúng tôi đã sử dụng hết các khoản tín dụng được cung cấp chỉ trong vòng vài giờ. 😳


Một thách thức khác mà bạn có thể gặp phải là không thể sử dụng tối ưu hóa Triton trên SageMaker do phiên bản CUDA không tương thích. Rất tiếc, các phiên bản P3 hiện tại của AWS không bao gồm phiên bản CUDA gần đây. Do đó, nếu muốn sử dụng tính năng tối ưu hóa của Triton, bạn sẽ cần tạo bộ chứa EC2 có quyền truy cập dòng lệnh. Tuy nhiên, điều quan trọng cần lưu ý là bạn cũng sẽ cần có sự cho phép đặc biệt từ Bộ phận hỗ trợ của AWS để chạy phiên bản có 8 VCPU. Trong một bài đăng trong tương lai, tôi sẽ cung cấp hướng dẫn chi tiết về cách tích hợp Triton và sử dụng nhà cung cấp đám mây GPU hiệu quả hơn về chi phí, chẳng hạn như Lambda Labs .

Suy nghĩ cuối cùng

Mặc dù MPT-7B của MosaicML cung cấp một giải pháp thay thế khả thi cho ChatGPT của OpenAI, nhưng nó cũng đưa ra những thách thức riêng. Chạy mô hình có thể tốn thời gian, tốn kém và thiếu tài liệu sẵn có. Tuy nhiên, khả năng giữ mô hình trong nhà và bảo vệ dữ liệu của bạn không bị lộ ra ngoài với OpenAI có thể hấp dẫn đối với một số trường hợp sử dụng nhất định.


SageMaker mang đến sự thuận tiện tuyệt vời để nhanh chóng thử nghiệm mô hình và cung cấp sự linh hoạt để chuyển sang sản xuất khi bạn đã sẵn sàng. Cho dù bạn mới bắt đầu sử dụng MPT-7B hay đã sử dụng nó được một thời gian, chúng tôi hy vọng hướng dẫn này đã cung cấp những hiểu biết có giá trị.


Hãy theo dõi bài đăng blog tiếp theo của chúng tôi, nơi chúng tôi sẽ nghiên cứu sâu hơn về các so sánh hiệu suất giữa MPT-7B, MPT-30B, Falcon-40b và ChatGPT.


Xem các liên kết sau nếu bạn muốn tìm hiểu thêm về MPT-7B hoặc biến thể lớn hơn của nó, MPT-30B .


Và hãy nhớ rằng, cho dù bạn đang làm việc với ChatGPT hay MPT-7B, điều quan trọng là đảm bảo trường hợp sử dụng của bạn được phục vụ mà không ảnh hưởng đến quyền riêng tư dữ liệu và hiệu quả chi phí. Chúc bạn mày mò vui vẻ!

Muốn có Giải pháp chìa khóa trao tay để sử dụng MPT hoặc ChatGPT với dữ liệu của bạn?

Tại MindfulDataAI.com , chúng tôi cung cấp ChatGPT cho các doanh nghiệp. Nếu bạn quan tâm đến việc tận dụng ChatGPT, MPT hoặc các mô hình khác với dữ liệu của công ty mình, vui lòng liên hệ với chúng tôi.