Xlera8

چگونه با Flask به Llama3 دسترسی پیدا کنیم؟

معرفی

دنیای هوش مصنوعی با انتشار Llama3 بسیار هیجان انگیزتر شد! این مدل زبان منبع باز قدرتمند که توسط متا ایجاد شده است، همه چیز را متزلزل می کند. Llama3، موجود در انواع 8B و 70B از پیش آموزش دیده و تنظیم شده توسط دستورالعمل، طیف گسترده ای از برنامه ها را ارائه می دهد. در این راهنما، ما به بررسی قابلیت های Llama3 و نحوه دسترسی به Llama3 با آن خواهیم پرداخت فلاسک، با تمرکز بر پتانسیل خود برای ایجاد انقلابی در هوش مصنوعی مولد.

اهداف یادگیری

  • معماری و روش‌های آموزشی پشت Llama3 را کاوش کنید و داده‌های پیش‌آموزشی و خلاقانه آن را کشف کنید. تنظیم دقیق تکنیک هایی که برای درک عملکرد استثنایی آن ضروری است.
  • اجرای عملی Llama3 از طریق Flask را تجربه کنید، بر هنر تولید متن با استفاده از ترانسفورماتورها مسلط شوید و در عین حال بینش هایی را در مورد جنبه های حیاتی تست و تنظیم ایمنی به دست آورید.
  • قابلیت‌های چشمگیر Llama3، از جمله دقت، سازگاری، و مقیاس‌پذیری قوی آن را تجزیه و تحلیل کنید، در حالی که محدودیت‌ها و خطرات بالقوه آن را که برای استفاده مسئولانه و توسعه حیاتی است، شناسایی کنید.
  • با نمونه‌های دنیای واقعی درگیر شوید و موارد استفاده از Llama3 را تقویت کنید تا از قدرت آن در برنامه‌ها و سناریوهای مختلف استفاده کنید و از این طریق پتانسیل کامل آن را در قلمرو هوش مصنوعی Generative باز کنید.

این مقاله به عنوان بخشی از بلاگاتون علم داده.

جدول محتوا

Llama3 معماری و آموزش

لاما 3 یک مدل زبان رگرسیون خودکار است که از معماری ترانسفورماتور بهینه شده استفاده می کند. بله، ترانسفورماتور معمولی اما با رویکرد ارتقا یافته. نسخه‌های تنظیم‌شده از تنظیم دقیق نظارت شده (SFT) و یادگیری تقویتی با بازخورد انسانی (RLHF) استفاده می‌کنند تا با اولویت‌های انسان برای مفید بودن و ایمنی هماهنگ شوند. این مدل بر روی مجموعه گسترده ای از بیش از 15 تریلیون توکن داده از منابع در دسترس عموم از قبل آموزش داده شده بود که به ترتیب در مارس 2023 برای مدل 8B و دسامبر 2023 برای مدل 70B تعیین شده بود. داده های تنظیم دقیق شامل مجموعه داده های دستورالعمل در دسترس عموم و همچنین بیش از 10 میلیون نمونه مشروح شده توسط انسان است.

Llama3 با فلاسک

قابلیت های چشمگیر Llama3

همانطور که قبلاً اشاره کردیم، Llama3 دارای طراحی ترانسفورماتور بهینه شده است و در دو اندازه، پارامترهای 8B و 70B، در هر دو نسخه از پیش آموزش دیده و تنظیم شده ارائه می شود. توکنایزر مدل دارای واژگان توکن 128K است. توالی 8,192 توکن برای آموزش مدل ها استفاده شد. Llama3 ثابت کرده است که به طور قابل توجهی قادر به انجام موارد زیر است:

  • دقت افزایش یافته: Llama3 عملکرد بهتری را در وظایف مختلف پردازش زبان طبیعی نشان داده است.
  • سازگاری: توانایی این مدل برای انطباق با زمینه ها و وظایف مختلف، آن را به انتخابی ایده آل برای طیف وسیعی از کاربردها تبدیل می کند.
  • مقیاس پذیری قوی: مقیاس پذیری Llama3 آن را قادر می سازد تا حجم زیادی از داده ها و وظایف پیچیده را به راحتی انجام دهد.
  • قابلیت کدنویسی: قابلیت کدگذاری Llama3 با بیش از 250 توکن در ثانیه قابل توجه نیست. به جای پردازنده‌های گرافیکی طلایی، کارایی LPUها بی‌نظیر است و آن‌ها را به انتخاب برتر برای اجرای مدل‌های زبان بزرگ تبدیل می‌کند.

مهم‌ترین مزیت Llama3 منبع باز و رایگان بودن آن است که باعث می‌شود توسعه‌دهندگان بدون شکستن بانک در دسترس باشند.

لاما3 با فلاسک

انواع و ویژگی های Llama3

همانطور که قبلاً ذکر شد، Llama3 دو نوع اصلی را ارائه می دهد که هر کدام برای موارد استفاده متفاوت با دو اندازه 8B و 70B مناسب هستند:

  • مدل های از قبل آموزش دیده: مناسب برای کارهای تولید زبان طبیعی. در عملکرد کمی کلی تر است.
  • مدل های تنظیم شده توسط دستورالعمل: برای موارد استفاده از گفتگو بهینه شده است و از بسیاری از مدل‌های چت منبع باز در معیارهای صنعتی بهتر عمل می‌کند.

داده ها و معیارهای آموزشی Llama3

Llama3 روی مجموعه گسترده ای از بیش از 15 تریلیون توکن از داده های در دسترس عموم از قبل آموزش داده شده بود، با قطع مارس 2023 برای مدل 8B و دسامبر 2023 برای مدل 70B. داده های تنظیم دقیق شامل مجموعه داده های دستورالعمل در دسترس عموم و بیش از 10 میلیون نمونه مشروح شده توسط انسان است (درست شنیدید!). این مدل در معیارهای استاندارد خودکار، از جمله MMLU، AGIEval English، CommonSenseQA و غیره به نتایج چشمگیری دست یافته است.

لاما3

موارد و مثال های استفاده Llama3

لاما را می توان مانند سایر موارد استفاده کرد خانواده لاما مدل هایی که استفاده از آن را نیز بسیار آسان کرده است. ما اساسا نیاز به نصب ترانسفورماتور و شتاب داریم. یک اسکریپت wrapper را در این قسمت خواهیم دید. می‌توانید کل قطعه کد و نوت‌بوک را برای اجرا با GPU پیدا کنید اینجا. من نوت بوک، یک برنامه فلاسک و یک اسکریپت حالت تعاملی را برای آزمایش رفتار مدل اضافه کرده ام. در اینجا مثالی از استفاده از Llama3 با خط لوله آورده شده است:

چگونه با Flask به Llama3 دسترسی پیدا کنیم؟

اجازه دهید اکنون مراحل دسترسی به Llama3 با Flask را بررسی کنیم.

مرحله 1: محیط پایتون را تنظیم کنید

ایجاد یک محیط مجازی (اختیاری اما توصیه می شود):

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

بسته های لازم را نصب کنید:

ما ترانسفورماتور را نصب می کنیم و شتاب می دهیم، اما از آنجایی که Llama3 جدید است، مستقیماً از Git Hub نصب می کنیم.

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

مرحله 2: فایل برنامه اصلی را آماده کنید

یک فایل پایتون جدید به نام main.py ایجاد کنید. داخل آن کد زیر را قرار دهید.

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)

کد بالا یک وب سرور Flask را با یک مسیر راه اندازی می کند. /تولید می کنند، مسئول دریافت و پردازش پیام های کاربر و برگرداندن پاسخ های تولید شده توسط هوش مصنوعی است.

مرحله 3: برنامه Flask را اجرا کنید

برنامه Flask را با اجرای دستور زیر اجرا کنید:

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

اکنون، باید برنامه Flask را در حال اجرا داشته باشید http://localhost:5000. می‌توانید API را از طریق ابزارهایی مانند Postman یا CURL آزمایش کنید یا حتی یک صفحه پیشانی ساده HTML بنویسید.

حالت تعاملی با استفاده از Transformers AutoModelForCausalLM

برای پرس و جوی تعاملی مدل در نوت بوک Jupyter، این را در یک سلول قرار دهید و اجرا کنید:

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)

کد بالا به شما این امکان را می دهد که به سرعت تعامل کنید و ببینید که مدل چگونه کار می کند. کل کد را پیدا کنید اینجا کلیک نمایید.

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!"

از آنجایی که نحوه عملکرد مدل را دیدیم، بیایید برخی از راهنمای ایمنی و مسئولیت را ببینیم.

مسئولیت پذیری و ایمنی

متا مجموعه‌ای از اقدامات را برای تضمین توسعه هوش مصنوعی انجام داده است، از جمله اجرای بهترین شیوه‌های ایمنی، ارائه منابعی مانند محافظ‌های Meta Llama Guard 2 و Code Shield، و به‌روزرسانی راهنمای استفاده مسئولانه. توسعه‌دهندگان تشویق می‌شوند تا این محافظ‌ها را بر اساس نیازهای خود تنظیم و به کار گیرند و مزایای همسویی و مفید بودن را برای مورد خاص و مخاطبان خود بسنجید. همه این پیوندها در مخزن Hugginface برای Llama3 موجود است.

ملاحظات و محدودیت های اخلاقی

در حالی که Llama3 ابزار قدرتمندی است، شناخت محدودیت ها و خطرات احتمالی آن ضروری است. این مدل ممکن است پاسخ های نادرست، جانبدارانه یا اعتراض آمیزی به درخواست های کاربر ایجاد کند. بنابراین، توسعه دهندگان باید تست ایمنی و تنظیم را متناسب با کاربردهای خاص خود از مدل انجام دهند. متا پیشنهاد می‌کند که راه‌حل‌های Purple Llama را در گردش‌های کاری بگنجانید، به‌ویژه Llama Guard، که یک مدل پایه برای فیلتر کردن درخواست‌های ورودی و خروجی برای لایه‌بندی ایمنی در سطح سیستم در بالای ایمنی سطح مدل ارائه می‌کند.

نتیجه

متا با معرفی Llama3، یک مدل زبان منبع باز قدرتمند که توسط متا ساخته شده است، چشم انداز هوش مصنوعی را تغییر داده است. Llama8 با در دسترس بودن در هر دو نسخه از پیش آموزش دیده و تنظیم شده 70B و 3B، امکانات زیادی را برای نوآوری ارائه می دهد. این راهنما کاوش عمیقی در مورد قابلیت‌های Llama3 و نحوه دسترسی به Llama3 با Flask ارائه کرده است و بر پتانسیل آن برای تعریف مجدد هوش مصنوعی Generative تأکید می‌کند.

گیرنده های کلیدی

  • متا Llama3 را توسعه داد، یک مدل زبان منبع باز قدرتمند که در هر دو نسخه 8B و 70B از پیش آموزش دیده و تنظیم شده توسط دستورالعمل موجود است.
  • Llama3 قابلیت های چشمگیری از جمله دقت افزایش یافته، سازگاری و مقیاس پذیری قوی را نشان داده است.
  • این مدل منبع باز و کاملا رایگان است، که آن را برای توسعه دهندگان و محققان کم‌هزینه قابل دسترسی می‌کند.
  • کاربران می توانند از Llama3 با ترانسفورماتورها استفاده کنند و از کلاس های انتزاعی خط لوله یا Auto با تابع ()generator استفاده کنند.
  • Llama3 و Flask به توسعه دهندگان این امکان را می دهند تا افق های جدیدی را در هوش مصنوعی Generative کشف کنند، راه حل های نوآورانه ای مانند چت بات ها و تولید محتوا را تقویت کنند و مرزهای تعامل انسان و ماشین را افزایش دهند.

پرسش و پاسخهای متداول

Q1. Llama3 چیست؟

A. Meta Llama3 را توسعه داد، یک مدل زبان منبع باز قدرتمند که در هر دو نسخه 8B و 70B از پیش آموزش دیده و تنظیم شده توسط دستورالعمل موجود است.

Q2. ویژگی های کلیدی Llama3 چیست؟

A. Llama3 قابلیت های چشمگیری از جمله دقت افزایش یافته، سازگاری و مقیاس پذیری قوی نشان داده است. تحقیقات و آزمایش‌ها نشان داده‌اند که پاسخ‌های مرتبط‌تر و آگاه‌تر از متن را ارائه می‌دهد و اطمینان می‌دهد که هر راه‌حل به خوبی با نیازهای کاربر تنظیم شده است.

Q3. آیا Llama3 منبع باز و رایگان است و آیا می توانم از Llama3 برای اهداف تجاری استفاده کنم؟

A. بله، Llama3 منبع باز و کاملاً رایگان است، و توسعه دهندگان را بدون شکستن بانک در دسترس قرار می دهد. اگرچه Llama3 منبع باز و رایگان برای استفاده برای مقاصد تجاری است. با این حال، توصیه می‌کنیم شرایط و ضوابط صدور مجوز را برای اطمینان از انطباق با هر گونه مقررات قابل اجرا بررسی کنید.

Q4. آیا می توانم Llama3 را برای مورد خاص خود تنظیم کنم؟

A. بله، Llama3 را می توان برای موارد استفاده خاص با تنظیم هایپرپارامترها و داده های آموزشی تنظیم کرد. این می تواند به بهبود عملکرد مدل در وظایف و مجموعه داده های خاص کمک کند.

Q5. Llama3 چگونه با سایر مدل های زبان مانند BERT و RoBERTa مقایسه می شود؟

A. Llama3، یک مدل زبان پیشرفته تر که بر روی مجموعه داده بزرگتر آموزش داده شده است، در وظایف مختلف پردازش زبان طبیعی بهتر از BERT و RoBERTa عمل می کند.

رسانه نشان داده شده در این مقاله متعلق به Analytics Vidhya نیست و به صلاحدید نویسنده استفاده می شود.

چت با ما

سلام! چگونه می توانم به شما کمک کنم؟