Xlera8

Cum se accesează Llama3 cu Flask?

Introducere

Lumea AI a devenit mult mai interesantă odată cu lansarea Llama3! Acest puternic model de limbaj open-source, creat de Meta, zguduie lucrurile. Llama3, disponibil în variante 8B și 70B pre-antrenate și reglate cu instrucțiuni, oferă o gamă largă de aplicații. În acest ghid, vom explora capacitățile Llama3 și cum să accesăm Llama3 cu Flask, concentrându-se pe potențialul său de a revoluționa IA generativă.

obiective de invatare

  • Explorați arhitectura și metodologiile de formare din spatele Llama3, descoperind datele sale inovatoare de preinstruire și reglaj fin tehnici, esențiale pentru înțelegerea performanței sale excepționale.
  • Experimentați implementarea practică a Llama3 prin Flask, stăpânind arta generării de text folosind transformatoare în timp ce obțineți informații despre aspectele critice ale testării și reglajului de siguranță.
  • Analizați capacitățile impresionante ale Llama3, inclusiv acuratețea sporită, adaptabilitatea și scalabilitatea robustă, recunoscând în același timp limitările și riscurile potențiale, cruciale pentru o utilizare și dezvoltare responsabilă.
  • Interacționați cu exemplele din lumea reală și cazurile de utilizare ale Llama3, dându-vă puterea să-și valorificați eficient puterea în diverse aplicații și scenarii, deblocând astfel întregul său potențial în domeniul IA generativă.

Acest articol a fost publicat ca parte a Blogathonul științei datelor.

Cuprins

Llama3 Arhitectură și formare

Lama3 este un model de limbaj auto-regresiv care folosește o arhitectură transformatoare optimizată. Da, transformatorul obișnuit, dar cu o abordare îmbunătățită. Versiunile ajustate folosesc reglarea fină supravegheată (SFT) și învățarea prin consolidare cu feedback uman (RLHF) pentru a se alinia preferințelor umane pentru utilitate și siguranță. Modelul a fost antrenat prealabil pe un corpus extins de peste 15 trilioane de date din surse disponibile public, cu o limită de martie 2023 pentru modelul 8B și, respectiv, decembrie 2023 pentru modelul 70B. Datele de reglare fină încorporează seturi de date de instrucțiuni disponibile public, precum și peste 10 milioane de exemple adnotate de oameni.

Lama3 cu balon

Llama3 Capabilități impresionante

După cum am observat anterior, Llama3 are un design optimizat de transformator și vine în două dimensiuni, parametrii 8B și 70B, atât în ​​versiunea pre-antrenată, cât și în versiune reglată cu instrucțiuni. Tokenizatorul modelului are un vocabular de token de 128K. Secvențe de 8,192 de jetoane au fost folosite pentru a antrena modelele. Llama3 s-a dovedit a fi remarcabil de capabil să facă următoarele:

  • Precizie îmbunătățită: Llama3 a demonstrat o performanță îmbunătățită la diferite sarcini de procesare a limbajului natural.
  • Adaptabilitate: Capacitatea modelului de a se adapta la diverse contexte și sarcini îl face o alegere ideală pentru o gamă largă de aplicații.
  • Scalabilitate robustă: Scalabilitatea lui Llama3 îi permite să gestioneze cu ușurință volume mari de date și sarcini complexe.
  • Capabilitati de codare: Capacitatea de codare a lui Llama3 este de acord să fie deloc remarcabilă, cu peste 250 de jetoane incredibile pe secundă. În locul GPU-urilor de aur, eficiența LPU-urilor este de neegalat, făcându-le alegerea superioară pentru rularea modelelor de limbaj mari.

Cel mai semnificativ avantaj al Llama3 este natura sa open-source și gratuită, făcându-l accesibil dezvoltatorilor fără a pierde banca.

llama3 cu balon

Variante și caracteristici Llama3

După cum am menționat mai devreme, Llama3 oferă două variante majore, fiecare găzduind cazuri de utilizare diferite cu cele două dimensiuni de 8B și 70B:

  • Modele pre-antrenate: Potrivit pentru sarcini de generare a limbajului natural. Puțin mai general în performanță.
  • Modele reglate cu instrucțiuni: Optimizat pentru cazurile de utilizare a dialogului, depășind multe modele de chat open-source pe benchmark-uri din industrie.

Date de antrenament Llama3 și repere

Llama3 a fost antrenat în prealabil pe un corp extins de peste 15 trilioane de jetoane de date disponibile public, cu o limită de martie 2023 pentru modelul 8B și decembrie 2023 pentru modelul 70B. Datele de reglare fină încorporează seturi de date de instrucțiuni disponibile public și peste 10 milioane de exemple adnotate de oameni (Ați auzit bine!). Modelul a obținut rezultate impresionante la benchmark-urile automate standard, inclusiv MMLU, AGIEval English, CommonSenseQA și multe altele.

llama3

Llama3 Cazuri de utilizare și exemple

Lama poate fi folosită ca altele Familia lama modele care a făcut, de asemenea, utilizarea sa foarte ușoară. Practic, trebuie să instalăm un transformator și să accelerăm. Vom vedea un script wrapper în această secțiune. Puteți găsi întregul fragment de cod și blocnotesul pentru a rula cu GPU aici. Am adăugat notebook-ul, o aplicație flask și un script de mod interactiv pentru a testa comportamentul modelului. Iată un exemplu de utilizare a Llama3 cu pipeline:

Cum se accesează Llama3 cu Flask?

Să explorăm acum pașii pentru a accesa Llama3 cu Flask.

Pasul 1: Configurați Mediul Python

Creați un mediu virtual (opțional, dar recomandat):

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

Instalați pachetele necesare:

Instalăm transformator și accelerăm, dar deoarece Llama3 este nou, continuăm instalând direct din Git Hub.

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

Pasul 2: Pregătiți fișierul principal de aplicație

Creați un nou fișier Python numit main.py. În interiorul acestuia, lipiți următorul cod.

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)

Codul de mai sus inițializează un server web Flask cu o singură rută, /Genera, responsabil pentru primirea și procesarea mesajelor utilizatorilor și returnarea răspunsurilor generate de AI.

Pasul 3: Rulați aplicația Flask

Rulați aplicația Flask executând următoarea comandă:

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

Acum, ar trebui să rulați aplicația Flask la http://localhost:5000. Puteți testa API-ul prin instrumente precum Postman sau CURL sau chiar să scrieți o simplă pagină frontală HTML.

Modul interactiv folosind Transformers AutoModelForCausalLM

Pentru a interoga interactiv modelul din Jupyter Notebook, inserați acesta într-o celulă și rulați:

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)

Codul de mai sus vă va permite să interacționați rapid și să vedeți cum funcționează modelul. Găsiți întregul cod aici.

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

Deoarece am văzut cum funcționează modelul, să vedem câteva ghiduri de siguranță și responsabilitate.

Responsabilitate și siguranță

Meta a luat o serie de pași pentru a asigura o dezvoltare responsabilă a AI, inclusiv implementarea celor mai bune practici de siguranță, furnizarea de resurse precum protecția Meta Llama Guard 2 și Code Shield și actualizarea Ghidului de utilizare responsabilă. Dezvoltatorii sunt încurajați să ajusteze și să implementeze aceste măsuri de protecție în funcție de nevoile lor, cântărind beneficiile alinierii și utilitatea pentru cazul de utilizare și publicul lor specific. Toate aceste link-uri sunt disponibile în depozitul Hugginface pentru Llama3.

Considerații etice și limitări

Deși Llama3 este un instrument puternic, este esențial să recunoaștem limitările și riscurile potențiale ale acestuia. Modelul poate produce răspunsuri inexacte, părtinitoare sau inacceptabile la solicitările utilizatorului. Prin urmare, dezvoltatorii ar trebui să efectueze teste și reglaje de siguranță adaptate aplicațiilor lor specifice ale modelului. Meta recomandă încorporarea soluțiilor Purple Llama în fluxurile de lucru, în special Llama Guard, care oferă un model de bază pentru a filtra solicitările de intrare și de ieșire pentru a suprapune siguranța la nivel de sistem pe deasupra siguranței la nivel de model.

Concluzie

Meta a remodelat peisajul inteligenței artificiale cu introducerea Llama3, un model puternic de limbaj open-source creat de Meta. Având disponibilitatea sa atât în ​​versiunile 8B și 70B pregătite în prealabil, cât și în versiunile reglate cu instrucțiuni, Llama3 prezintă o multitudine de posibilități de inovare. Acest ghid a oferit o explorare aprofundată a capabilităților Llama3 și a modului de accesare a Llama3 cu Flask, subliniind potențialul său de a redefini AI generativă.

Intrebari cu cheie

  • Meta a dezvoltat Llama3, un model de limbaj open-source puternic, disponibil atât în ​​versiunile 8B, cât și 70B, pregătite în prealabil și reglate cu instrucțiuni.
  • Llama3 a demonstrat capabilități impresionante, inclusiv precizie îmbunătățită, adaptabilitate și scalabilitate robustă.
  • Modelul este open-source și complet gratuit, făcându-l accesibil dezvoltatorilor și cercetătorilor cu buget redus.
  • Utilizatorii pot utiliza Llama3 cu transformatoare, utilizând abstracția conductei sau clasele Auto cu funcția generate().
  • Llama3 și Flask le permit dezvoltatorilor să exploreze noi orizonturi în IA generativă, promovând soluții inovatoare precum chatbot-uri și generarea de conținut, depășind granițele interacțiunii om-mașină.

Întrebări Frecvente

Î1. Ce este Llama3?

A. Meta a dezvoltat Llama3, un model de limbaj open-source puternic, disponibil atât în ​​versiunea 8B, cât și în versiunea 70B, pregătită în prealabil și reglată cu instrucțiuni.

Q2. Care sunt caracteristicile cheie ale Llama3?

A. Llama3 a demonstrat capabilități impresionante, inclusiv precizie îmbunătățită, adaptabilitate și scalabilitate robustă. Cercetările și testele au arătat că oferă răspunsuri mai relevante și mai conștiente de context, asigurându-se că fiecare soluție este ajustată fin la nevoile utilizatorului.

Q3. Llama3 este open-source și gratuit și pot folosi Llama3 în scopuri comerciale?

R. Da, Llama3 este open-source și complet gratuit, făcându-l accesibil dezvoltatorilor fără a pierde banca. Deși Llama3 este open-source și este gratuit de utilizat în scopuri comerciale. Cu toate acestea, vă recomandăm să revizuiți termenii și condițiile de licență pentru a asigura conformitatea cu orice reglementări aplicabile.

Q4. Pot regla fin Llama3 pentru cazul meu de utilizare specific?

R. Da, Llama3 poate fi reglat fin pentru cazuri de utilizare specifice prin ajustarea hiperparametrilor și a datelor de antrenament. Acest lucru poate ajuta la îmbunătățirea performanței modelului în anumite sarcini și seturi de date.

Î5. Cum se compară Llama3 cu alte modele lingvistice precum BERT și Roberta?

A. Llama3, un model de limbaj mai avansat antrenat pe un set de date mai mare, depășește BERT și Roberta în diferite sarcini de procesare a limbajului natural.

Media prezentată în acest articol nu este deținută de Analytics Vidhya și este utilizată la discreția Autorului.

Chat cu noi

Bună! Cu ce ​​​​vă pot ajuta?