Xlera8

Làm cách nào để truy cập Llama3 bằng Flask?

Giới thiệu

Thế giới AI trở nên thú vị hơn rất nhiều với việc phát hành Llama3! Mô hình ngôn ngữ nguồn mở mạnh mẽ này do Meta tạo ra đang làm mọi thứ rung chuyển. Llama3, có sẵn ở các biến thể được huấn luyện trước và điều chỉnh theo hướng dẫn 8B và 70B, cung cấp nhiều ứng dụng. Trong hướng dẫn này, chúng ta sẽ khám phá các khả năng của Llama3 và cách truy cập Llama3 bằng bình, tập trung vào tiềm năng cách mạng hóa AI sáng tạo.

Mục tiêu học tập

  • Khám phá kiến ​​trúc và phương pháp đào tạo đằng sau Llama3, khám phá dữ liệu đào tạo trước sáng tạo của nó và tinh chỉnh kỹ thuật, cần thiết để hiểu được hiệu suất đặc biệt của nó.
  • Trải nghiệm triển khai thực tế Llama3 thông qua Flask, nắm vững nghệ thuật tạo văn bản bằng cách sử dụng máy biến áp đồng thời hiểu rõ hơn về các khía cạnh quan trọng của việc kiểm tra và điều chỉnh an toàn.
  • Phân tích các khả năng ấn tượng của Llama3, bao gồm độ chính xác được nâng cao, khả năng thích ứng và khả năng mở rộng mạnh mẽ, đồng thời nhận ra những hạn chế và rủi ro tiềm ẩn của nó, những yếu tố quan trọng đối với việc sử dụng và phát triển có trách nhiệm.
  • Tương tác với các ví dụ và trường hợp sử dụng trong thế giới thực của Llama3, cho phép bạn tận dụng sức mạnh của nó một cách hiệu quả trong các ứng dụng và tình huống khác nhau, từ đó phát huy toàn bộ tiềm năng của nó trong lĩnh vực AI sáng tạo.

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

Mục lục

Kiến trúc và đào tạo Llama3

Llama3 là một mô hình ngôn ngữ tự động hồi quy tận dụng kiến ​​trúc biến áp được tối ưu hóa. Có, máy biến áp thông thường nhưng với cách tiếp cận được nâng cấp. Các phiên bản đã điều chỉnh sử dụng tính năng tinh chỉnh có giám sát (SFT) và học tăng cường bằng phản hồi của con người (RLHF) để phù hợp với sở thích của con người về tính hữu ích và an toàn. Mô hình này đã được đào tạo trước trên một kho dữ liệu rộng lớn gồm hơn 15 nghìn tỷ mã thông báo dữ liệu từ các nguồn có sẵn công khai, với thời hạn tương ứng là tháng 2023 năm 8 đối với mô hình 2023B và tháng 70 năm 10 đối với mô hình XNUMXB. Dữ liệu tinh chỉnh kết hợp các tập dữ liệu hướng dẫn có sẵn công khai cũng như hơn XNUMX triệu ví dụ được con người chú thích.

Llama3 với bình

Khả năng ấn tượng của Llama3

Như chúng tôi đã lưu ý trước đây, Llama3 có thiết kế máy biến áp được tối ưu hóa và có hai kích cỡ, thông số 8B và 70B, ở cả phiên bản được đào tạo trước và phiên bản điều chỉnh theo hướng dẫn. Trình mã thông báo của mô hình có vốn từ vựng mã thông báo 128K. Chuỗi 8,192 mã thông báo đã được sử dụng để huấn luyện các mô hình. Llama3 đã được chứng minh là có khả năng đáng chú ý sau:

  • Độ chính xác nâng cao: Llama3 đã cho thấy hiệu suất được cải thiện trên các tác vụ xử lý ngôn ngữ tự nhiên khác nhau.
  • Khả năng thích ứng: Khả năng thích ứng của mô hình với các bối cảnh và nhiệm vụ đa dạng khiến nó trở thành lựa chọn lý tưởng cho nhiều ứng dụng.
  • Khả năng mở rộng mạnh mẽ: Khả năng mở rộng của Llama3 cho phép nó xử lý khối lượng lớn dữ liệu và các tác vụ phức tạp một cách dễ dàng.
  • Khả năng mã hóa: Khả năng mã hóa của Llama3 được cho là không có gì đáng chú ý với hơn 250 mã thông báo mỗi giây. Thay vì các GPU vàng, hiệu quả của LPU là không thể so sánh được, khiến chúng trở thành lựa chọn ưu việt để chạy các mô hình ngôn ngữ lớn.

Ưu điểm đáng kể nhất của Llama3 là tính chất mã nguồn mở và miễn phí, giúp các nhà phát triển có thể truy cập nó mà không phải tốn quá nhiều chi phí.

llama3 với bình

Các biến thể và tính năng của Llama3

Như đã đề cập trước đó, Llama3 cung cấp hai biến thể chính, mỗi biến thể phục vụ cho các trường hợp sử dụng khác nhau với hai kích thước 8B và 70B:

  • Các mô hình được đào tạo trước: Thích hợp cho các nhiệm vụ tạo ngôn ngữ tự nhiên. Tổng quát hơn một chút về hiệu suất.
  • Các mô hình điều chỉnh theo hướng dẫn: Được tối ưu hóa cho các trường hợp sử dụng đối thoại, vượt trội so với nhiều mô hình trò chuyện nguồn mở theo điểm chuẩn của ngành.

Dữ liệu đào tạo và điểm chuẩn của Llama3

Llama3 đã được đào tạo trước trên một kho dữ liệu rộng lớn gồm hơn 15 nghìn tỷ mã thông báo dữ liệu có sẵn công khai, với thời hạn là tháng 2023 năm 8 đối với mô hình 2023B và tháng 70 năm 10 đối với mô hình XNUMXB. Dữ liệu tinh chỉnh kết hợp các tập dữ liệu hướng dẫn có sẵn công khai và hơn XNUMX triệu ví dụ được con người chú thích (Bạn đã nghe đúng rồi!). Mô hình này đã đạt được kết quả ấn tượng trên các điểm chuẩn tự động tiêu chuẩn, bao gồm MMLU, AGIEval English, CommonSenseQA, v.v.

llama3

Các trường hợp và ví dụ sử dụng Llama3

Llama có thể được sử dụng như những loại khác gia đình lạc đà các mô hình cũng làm cho việc sử dụng nó trở nên rất dễ dàng. Về cơ bản chúng ta cần lắp đặt máy biến áp và tăng tốc. Chúng ta sẽ thấy một tập lệnh bao bọc trong phần này. Bạn có thể tìm thấy toàn bộ đoạn mã và sổ ghi chép để chạy với GPU tại đây. Tôi đã thêm sổ ghi chép, ứng dụng bình và tập lệnh chế độ tương tác để kiểm tra hoạt động của mô hình. Đây là một ví dụ về việc sử dụng Llama3 với đường dẫn:

Làm cách nào để truy cập Llama3 bằng Flask?

Bây giờ chúng ta hãy khám phá các bước để truy cập Llama3 bằng Flask.

Bước 1: Thiết lập môi trường Python

Tạo môi trường ảo (tùy chọn nhưng được khuyến nghị):

$ python -m venv env
$ source env/bin/activate   # On Windows use `.envScriptsactivate`

Cài đặt các gói cần thiết:

Chúng tôi cài đặt máy biến áp và tăng tốc nhưng vì Llama3 là phiên bản mới nên chúng tôi tiếp tục bằng cách cài đặt trực tiếp từ Git Hub.

(env) $ pip install -q git+https://github.com/huggingface/transformers.git
(env) $ pip install -q flask transformers torch accelerate # datasets peft bitsandbytes

Bước 2: Chuẩn bị hồ sơ ứng tuyển chính

Tạo một tệp Python mới có tên main.py. Bên trong nó, dán đoạn mã sau.

from flask import Flask, request, jsonify
import transformers
import torch

app = Flask(__name__)

# Initialize the model and pipeline outside of the function to avoid unnecessary reloading
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
    "text-generation",
    model=model_id,
    model_kwargs={"torch_dtype": torch.bfloat16},
    device_map="auto",
)


@app.route('/generate', methods=['POST'])
def generate():
    data = request.get_json()
    user_message = data.get('message')

    if not user_message:
        return jsonify({'error': 'No message provided.'}), 400

    # Create system message
    messages = [{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"}]

    # Add user message
    messages.append({"role": "user", "content": user_message})

    prompt = pipeline.tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True
    )

    terminators = [
        pipeline.tokenizer.eos_token_id,
        pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
    ]

    outputs = pipeline(
        prompt,
        max_new_tokens=256,
        eos_token_id=terminators,
        do_sample=True,
        temperature=0.6,
        top_p=0.9,
    )

    generated_text = outputs[0]['generated_text'][len(prompt):].strip()
    response = {
        'message': generated_text
    }

    return jsonify(response), 200


if __name__ == '__main__':
    app.run(debug=True)

Đoạn mã trên khởi tạo máy chủ web Flask với một tuyến duy nhất, /phát ra, chịu trách nhiệm nhận và xử lý tin nhắn của người dùng cũng như trả về các phản hồi do AI tạo.

Bước 3: Chạy ứng dụng Flask

Chạy ứng dụng Flask bằng cách thực hiện lệnh sau:

(env) $ export FLASK_APP=main.py
(env) $ flask run --port=5000

Bây giờ, bạn sẽ có ứng dụng Flask chạy ở http://localhost:5000. Bạn có thể kiểm tra API thông qua các công cụ như Postman hoặc CURL hoặc thậm chí viết một trang giao diện HTML đơn giản.

Chế độ tương tác sử dụng Transformers AutoModelForCausalLM

Để truy vấn mô hình một cách tương tác trong Jupyter Notebook, hãy dán mô hình này vào một ô và chạy:

import requests
import sys
sys.path.insert(0,'..')
import torch

from transformers import AutoTokenizer, AutoModelForCausalLM

MODEL_NAME ='meta-llama/Meta-Llama-3-8B-Instruct'

class InteractivePirateChatbot:
    def __init__(self):
        self._tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, padding_side='left')
        self._tokenizer.pad_token = self._tokenizer.eos_token
        self._model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, torch_dtype=torch.bfloat16, device_map="auto", offload_buffers=True)
        
    def _prepare_inputs(self, messages):
        try:
            inputs = self._tokenizer([message['content'] for message in messages], padding='longest', truncation=True, max_length=512, return_tensors='pt')
            input_ids = inputs.input_ids.to(self._model.device)
            attention_mask = inputs.attention_mask.to(self._model.device)
            return {'input_ids': input_ids, 'attention_mask': attention_mask}
        except Exception as e:
            print(f"Error preparing inputs: {e}")
            return None

    def ask(self, question):
        try:
            messages = [
                {"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
                {"role": "user", "content": question}
            ]

            prepared_data = self._prepare_inputs(messages)
            if prepared_data is None:
                print("Error preparing inputs. Skipping...")
                return

            output = self._model.generate(**prepared_data, max_length=512, num_beams=5, early_stopping=True)

            answer = self._tokenizer.decode(output[0], skip_special_tokens=True)
            print("Pirate:", answer)
        except Exception as e:
            print(f"Error generating response: {e}")

generator = InteractivePirateChatbot()
while True:
    question = input("User: ")
    generator.ask(question)

Đoạn mã trên sẽ cho phép bạn tương tác nhanh chóng và xem mô hình hoạt động như thế nào. Tìm toàn bộ mã tại đây.

User: "Who are you?"

Pirate: "Arrrr, me hearty! Me name be Captain Chat, the scurviest pirate chatbot to ever sail the Seven Seas! I be here to swab yer decks with me clever responses and me trusty parrot, Polly, perched on me shoulder. So hoist the colors, me matey, and let's set sail fer a swashbucklin' good time!"

Vì chúng ta đã thấy mô hình hoạt động như thế nào nên hãy xem một số hướng dẫn về an toàn và trách nhiệm.

Trách nhiệm và An toàn

Meta đã thực hiện một loạt các bước để đảm bảo sự phát triển AI có trách nhiệm, bao gồm triển khai các biện pháp an toàn tốt nhất, cung cấp các tài nguyên như các biện pháp bảo vệ Meta Llama Guard 2 và Code Shield cũng như cập nhật Hướng dẫn sử dụng có trách nhiệm. Các nhà phát triển được khuyến khích điều chỉnh và triển khai các biện pháp bảo vệ này theo nhu cầu của họ, cân nhắc lợi ích của việc liên kết và mức độ hữu ích đối với trường hợp sử dụng và đối tượng cụ thể của họ. Tất cả các liên kết này đều có sẵn trong kho lưu trữ Hugginface dành cho Llama3.

Những cân nhắc và hạn chế về mặt đạo đức

Mặc dù Llama3 là một công cụ mạnh mẽ nhưng điều cần thiết là phải thừa nhận những hạn chế và rủi ro tiềm ẩn của nó. Mô hình có thể tạo ra phản hồi không chính xác, thiên vị hoặc phản cảm đối với lời nhắc của người dùng. Do đó, các nhà phát triển nên thực hiện kiểm tra và điều chỉnh an toàn phù hợp với các ứng dụng cụ thể của mô hình. Meta khuyên bạn nên kết hợp các giải pháp Purple Llama vào quy trình làm việc, cụ thể là Llama Guard, cung cấp mô hình cơ sở để lọc các lời nhắc đầu vào và đầu ra nhằm nâng cao mức độ an toàn ở cấp hệ thống lên trên mức an toàn ở cấp độ mô hình.

Kết luận

Meta đã định hình lại bối cảnh trí tuệ nhân tạo với sự ra đời của Llama3, một mô hình ngôn ngữ nguồn mở mạnh mẽ do Meta tạo ra. Với tính sẵn có ở cả phiên bản được huấn luyện trước và điều chỉnh theo hướng dẫn 8B và 70B, Llama3 mang đến vô số khả năng đổi mới. Hướng dẫn này đã cung cấp thông tin khám phá chuyên sâu về các khả năng của Llama3 và cách truy cập Llama3 bằng Flask, nhấn mạnh tiềm năng của nó trong việc xác định lại Generative AI.

Chìa khóa chính

  • Meta đã phát triển Llama3, một mô hình ngôn ngữ nguồn mở mạnh mẽ có sẵn ở cả phiên bản được huấn luyện trước và điều chỉnh theo hướng dẫn 8B và 70B.
  • Llama3 đã thể hiện những khả năng ấn tượng, bao gồm độ chính xác được nâng cao, khả năng thích ứng và khả năng mở rộng mạnh mẽ.
  • Mô hình này là nguồn mở và hoàn toàn miễn phí, giúp các nhà phát triển và nhà nghiên cứu có ngân sách thấp có thể truy cập được.
  • Người dùng có thể sử dụng Llama3 với máy biến áp, tận dụng tính năng trừu tượng hóa đường ống hoặc các lớp Tự động bằng hàm generate().
  • Llama3 và Flask cho phép các nhà phát triển khám phá những chân trời mới trong Generative AI, thúc đẩy các giải pháp đổi mới như chatbot và tạo nội dung, vượt qua ranh giới tương tác giữa người và máy.

Những câu hỏi thường gặp

Q1. Llama3 là gì?

A. Meta đã phát triển Llama3, một mô hình ngôn ngữ nguồn mở mạnh mẽ có sẵn ở cả phiên bản được đào tạo trước và điều chỉnh theo hướng dẫn 8B và 70B.

Q2. Các tính năng chính của Llama3 là gì?

A. Llama3 đã thể hiện những khả năng ấn tượng, bao gồm độ chính xác được nâng cao, khả năng thích ứng và khả năng mở rộng mạnh mẽ. Nghiên cứu và thử nghiệm đã chỉ ra rằng giải pháp này mang lại những phản hồi phù hợp hơn và phù hợp với ngữ cảnh hơn, đảm bảo rằng mỗi giải pháp đều được điều chỉnh phù hợp với nhu cầu của người dùng.

Q3. Llama3 có phải là nguồn mở và miễn phí không và tôi có thể sử dụng Llama3 cho mục đích thương mại không?

Đáp: Có, Llama3 là mã nguồn mở và hoàn toàn miễn phí, giúp các nhà phát triển có thể truy cập nó mà không phải tốn nhiều tiền. Mặc dù Llama3 là mã nguồn mở và miễn phí sử dụng cho mục đích thương mại. Tuy nhiên, chúng tôi khuyên bạn nên xem lại các điều khoản và điều kiện cấp phép để đảm bảo tuân thủ mọi quy định hiện hành.

Q4. Tôi có thể tinh chỉnh Llama3 cho trường hợp sử dụng cụ thể của mình không?

Đáp: Có, Llama3 có thể được tinh chỉnh cho các trường hợp sử dụng cụ thể bằng cách điều chỉnh siêu tham số và dữ liệu huấn luyện. Điều này có thể giúp cải thiện hiệu suất của mô hình đối với các tác vụ và bộ dữ liệu cụ thể.

Q5. Llama3 so sánh với các mô hình ngôn ngữ khác như BERT và RoBERTa như thế nào?

A. Llama3, một mô hình ngôn ngữ nâng cao hơn được đào tạo trên tập dữ liệu lớn hơn, vượt trội hơn BERT và RoBERTa trong nhiều tác vụ xử lý ngôn ngữ tự nhiên khác nhau.

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?