Xlera8

Bagaimana Mengakses Llama3 dengan Flask?

Pengantar

Dunia AI menjadi lebih seru dengan dirilisnya Llama3! Model bahasa sumber terbuka yang kuat ini, yang dibuat oleh Meta, mengguncang segalanya. Llama3, tersedia dalam varian 8B dan 70B yang telah dilatih sebelumnya dan disesuaikan dengan instruksi, menawarkan beragam aplikasi. Dalam panduan ini, kita akan mengeksplorasi kemampuan Llama3 dan cara mengakses Llama3 dengannya Labu, dengan fokus pada potensinya untuk merevolusi AI Generatif.

Tujuan Pembelajaran

  • Jelajahi arsitektur dan metodologi pelatihan di balik Llama3, temukan data pra-pelatihan yang inovatif dan mencari setelan teknik, penting untuk memahami kinerjanya yang luar biasa.
  • Rasakan implementasi langsung Llama3 melalui Flask, kuasai seni pembuatan teks menggunakan transformator sambil mendapatkan wawasan tentang aspek penting dari pengujian dan penyetelan keselamatan.
  • Analisis kemampuan Llama3 yang mengesankan, termasuk peningkatan akurasi, kemampuan beradaptasi, dan skalabilitas yang kuat, sekaligus mengenali keterbatasan dan potensi risikonya, yang penting untuk penggunaan dan pengembangan yang bertanggung jawab.
  • Terlibat dengan contoh nyata dan kasus penggunaan Llama3, memberdayakan Anda untuk memanfaatkan kekuatannya secara efektif dalam beragam aplikasi dan skenario, sehingga membuka potensi penuhnya di bidang AI Generatif.

Artikel ini diterbitkan sebagai bagian dari Blogathon Ilmu Data.

Daftar Isi

Arsitektur dan Pelatihan Llama3

Lama3 adalah model bahasa auto-regresif yang memanfaatkan arsitektur transformator yang dioptimalkan. Ya, trafo biasa tetapi dengan pendekatan yang ditingkatkan. Versi yang disetel menggunakan penyempurnaan yang diawasi (SFT) dan pembelajaran penguatan dengan umpan balik manusia (RLHF) untuk menyelaraskan dengan preferensi manusia dalam hal kegunaan dan keamanan. Model ini telah dilatih sebelumnya pada korpus luas yang berisi lebih dari 15 triliun token data dari sumber yang tersedia untuk umum, dengan batas waktu masing-masing pada bulan Maret 2023 untuk model 8B dan Desember 2023 untuk model 70B. Data penyempurnaan ini menggabungkan kumpulan data instruksi yang tersedia untuk umum, serta lebih dari 10 juta contoh yang dianotasi oleh manusia.

Llama3 dengan Labu

Kemampuan Llama3 yang Mengesankan

Seperti yang kami catat sebelumnya, Llama3 memiliki desain transformator yang dioptimalkan dan hadir dalam dua ukuran, parameter 8B dan 70B, baik dalam versi yang telah dilatih sebelumnya maupun yang telah disesuaikan dengan instruksi. Tokenizer model ini memiliki kosakata token 128 ribu. Urutan 8,192 token digunakan untuk melatih model. Llama3 telah terbukti sangat mampu melakukan hal berikut:

  • Akurasi yang ditingkatkan: Llama3 telah menunjukkan peningkatan kinerja pada berbagai tugas pemrosesan bahasa alami.
  • Kemampuan beradaptasi: Kemampuan model untuk beradaptasi dengan beragam konteks dan tugas menjadikannya pilihan ideal untuk berbagai aplikasi.
  • Skalabilitas yang kuat: Skalabilitas Llama3 memungkinkannya menangani data dalam jumlah besar dan tugas-tugas kompleks dengan mudah.
  • Kemampuan Pengkodean: Kemampuan pengkodean Llama3 diakui sangat luar biasa dengan 250+ token per detik yang luar biasa. Dibandingkan dengan GPU emas, efisiensi LPU tidak tertandingi, menjadikannya pilihan terbaik untuk menjalankan model bahasa besar.

Keuntungan paling signifikan dari Llama3 adalah sifatnya yang open-source dan gratis, sehingga dapat diakses oleh pengembang tanpa mengeluarkan banyak uang.

llama3 dengan labu

Varian dan Fitur Llama3

Seperti disebutkan sebelumnya, Llama3 menawarkan dua varian utama, masing-masing melayani kasus penggunaan berbeda dengan dua ukuran 8B dan 70B:

  • Model pra-terlatih: Cocok untuk tugas pembuatan bahasa alami. Performanya sedikit lebih umum.
  • Model yang disesuaikan dengan instruksi: Dioptimalkan untuk kasus penggunaan dialog, mengungguli banyak model obrolan sumber terbuka pada tolok ukur industri.

Data dan Tolok Ukur Pelatihan Llama3

Llama3 telah dilatih sebelumnya pada kumpulan luas lebih dari 15 triliun token data yang tersedia untuk umum, dengan batas waktu pada Maret 2023 untuk model 8B dan Desember 2023 untuk model 70B. Data penyempurnaan menggabungkan kumpulan data instruksi yang tersedia untuk umum dan lebih dari 10 juta contoh yang dianotasi oleh manusia (Anda tidak salah dengar!). Model ini telah mencapai hasil yang mengesankan pada benchmark otomatis standar, termasuk MMLU, AGIEval English, CommonSenseQA, dan banyak lagi.

llama3

Kasus Penggunaan dan Contoh Llama3

Llama dapat digunakan seperti lainnya keluarga Lama model yang juga membuatnya sangat mudah digunakan. Pada dasarnya kita perlu memasang trafo dan mempercepat. Kita akan melihat skrip pembungkus di bagian ini. Anda dapat menemukan seluruh cuplikan kode dan notebook untuk dijalankan dengan GPU sini. Saya telah menambahkan buku catatan, aplikasi labu, dan skrip mode interaktif untuk menguji perilaku model. Berikut ini contoh penggunaan Llama3 dengan pipeline:

Bagaimana Mengakses Llama3 dengan Flask?

Sekarang mari kita jelajahi langkah-langkah untuk mengakses Llama3 dengan Flask.

Langkah 1: Siapkan Lingkungan Python

Buat lingkungan virtual (opsional namun disarankan):

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

Instal paket yang diperlukan:

Kami memasang trafo dan mempercepatnya tetapi karena Llama3 masih baru, kami melanjutkan dengan menginstal langsung dari Git Hub.

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

Langkah2: Siapkan File Aplikasi Utama

Buat file Python baru bernama main.py. Di dalamnya, tempelkan kode berikut.

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)

Kode di atas menginisialisasi server web Flask dengan satu rute, /menghasilkan, bertanggung jawab untuk menerima dan memproses pesan pengguna serta mengembalikan respons yang dihasilkan AI.

Langkah3: Jalankan Aplikasi Flask

Jalankan aplikasi Flask dengan menjalankan perintah berikut:

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

Sekarang, Anda seharusnya sudah menjalankan aplikasi Flask http://localhost:5000. Anda dapat menguji API melalui alat seperti Postman atau CURL, atau bahkan menulis halaman frontend HTML sederhana.

Mode Interaktif Menggunakan Transformers AutoModelForCausalLM

Untuk menanyakan model secara interaktif dalam Jupyter Notebook, tempelkan ini ke dalam sel dan jalankan:

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)

Kode di atas akan memungkinkan Anda berinteraksi dengan cepat dan melihat cara kerja model. Temukan seluruh kodenya di sini.

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

Karena kita telah melihat cara kerja model ini, mari kita lihat beberapa panduan keselamatan dan tanggung jawab.

Tanggung Jawab dan Keamanan

Meta telah mengambil serangkaian langkah untuk memastikan pengembangan AI yang bertanggung jawab, termasuk menerapkan praktik terbaik keselamatan, menyediakan sumber daya seperti perlindungan Meta Llama Guard 2 dan Code Shield, dan memperbarui Panduan Penggunaan yang Bertanggung Jawab. Pengembang didorong untuk menyesuaikan dan menerapkan perlindungan ini sesuai dengan kebutuhan mereka, dengan mempertimbangkan manfaat penyelarasan dan kegunaannya untuk kasus penggunaan dan audiens spesifik mereka. Semua tautan ini tersedia di repositori Hugginface untuk Llama3.

Pertimbangan dan Keterbatasan Etis

Meskipun Llama3 adalah alat yang ampuh, penting untuk mengetahui keterbatasan dan potensi risikonya. Model ini mungkin menghasilkan tanggapan yang tidak akurat, bias, atau tidak menyenangkan terhadap permintaan pengguna. Oleh karena itu, pengembang harus melakukan pengujian keamanan dan penyetelan yang disesuaikan dengan aplikasi spesifik model mereka. Meta merekomendasikan untuk menggabungkan solusi Purple Llama ke dalam alur kerja, khususnya Llama Guard, yang menyediakan model dasar untuk memfilter permintaan masukan dan keluaran untuk melapisi keselamatan tingkat sistem di atas keselamatan tingkat model.

Kesimpulan

Meta telah mengubah lanskap kecerdasan buatan dengan diperkenalkannya Llama3, model bahasa sumber terbuka yang kuat yang dibuat oleh Meta. Dengan ketersediaannya dalam versi 8B dan 70B yang telah dilatih sebelumnya dan disesuaikan dengan instruksi, Llama3 menghadirkan banyak kemungkinan untuk inovasi. Panduan ini memberikan eksplorasi mendalam tentang kemampuan Llama3 dan cara mengakses Llama3 dengan Flask, menekankan potensinya untuk mendefinisikan ulang AI Generatif.

Pengambilan Kunci

  • Meta mengembangkan Llama3, model bahasa sumber terbuka canggih yang tersedia dalam versi 8B dan 70B yang telah dilatih sebelumnya dan disesuaikan dengan instruksi.
  • Llama3 telah menunjukkan kemampuan yang mengesankan, termasuk peningkatan akurasi, kemampuan beradaptasi, dan skalabilitas yang kuat.
  • Model ini bersumber terbuka dan sepenuhnya gratis, sehingga dapat diakses oleh pengembang dan peneliti beranggaran rendah.
  • Pengguna dapat menggunakan Llama3 dengan transformator, memanfaatkan abstraksi pipeline atau kelas Otomatis dengan fungsi generate().
  • Llama3 dan Flask memungkinkan pengembang menjelajahi cakrawala baru dalam AI Generatif, mengembangkan solusi inovatif seperti chatbots dan pembuatan konten, serta mendorong batasan interaksi manusia-mesin.

Tanya Jawab Umum (FAQ)

Q1. Apa itu Llama3?

A. Meta mengembangkan Llama3, model bahasa sumber terbuka canggih yang tersedia dalam versi 8B dan 70B yang telah dilatih sebelumnya dan disesuaikan dengan instruksi.

Q2. Apa saja fitur utama Llama3?

A. Llama3 telah menunjukkan kemampuan yang mengesankan, termasuk peningkatan akurasi, kemampuan beradaptasi, dan skalabilitas yang kuat. Penelitian dan pengujian telah menunjukkan bahwa solusi ini memberikan respons yang lebih relevan dan sadar konteks, memastikan bahwa setiap solusi disesuaikan dengan kebutuhan pengguna.

Q3. Apakah Llama3 bersumber terbuka dan gratis dan bisakah saya menggunakan Llama3 untuk tujuan komersial?

J. Ya, Llama3 adalah sumber terbuka dan sepenuhnya gratis, sehingga dapat diakses oleh pengembang tanpa mengeluarkan banyak uang. Meskipun Llama3 bersifat open-source dan gratis digunakan untuk tujuan komersial. Namun, kami menyarankan untuk meninjau syarat dan ketentuan perizinan untuk memastikan kepatuhan terhadap peraturan yang berlaku.

Q4. Bisakah saya menyempurnakan Llama3 untuk kasus penggunaan spesifik saya?

J.Ya, Llama3 dapat disesuaikan untuk kasus penggunaan tertentu dengan menyesuaikan hyperparameter dan data pelatihan. Hal ini dapat membantu meningkatkan performa model pada tugas dan kumpulan data tertentu.

Q5. Bagaimana Llama3 dibandingkan dengan model bahasa lain seperti BERT dan RoBERTa?

A. Llama3, model bahasa yang lebih canggih yang dilatih pada kumpulan data yang lebih besar, mengungguli BERT dan RoBERTa dalam berbagai tugas pemrosesan bahasa alami.

Media yang ditampilkan dalam artikel ini bukan milik Analytics Vidhya dan digunakan atas kebijaksanaan Penulis.

Hubungi kami

Hai, yang di sana! Apa yang bisa saya bantu?