เอ็กซ์เลร่า8

จะเข้าถึง Llama3 ด้วย Flask ได้อย่างไร

บทนำ

โลกของ AI น่าตื่นเต้นยิ่งขึ้นด้วยการเปิดตัว Llama3! โมเดลภาษาโอเพ่นซอร์สอันทรงพลังนี้สร้างโดย Meta กำลังสั่นคลอนสิ่งต่างๆ Llama3 ซึ่งมีจำหน่ายในรุ่นฝึกอบรมล่วงหน้าและปรับแต่งคำสั่ง 8B และ 70B นำเสนอการใช้งานที่หลากหลาย ในคู่มือนี้ เราจะสำรวจความสามารถของ Llama3 และวิธีเข้าถึง Llama3 ด้วย ขวดโดยมุ่งเน้นไปที่ศักยภาพในการปฏิวัติ Generative AI

วัตถุประสงค์การเรียนรู้

  • สำรวจสถาปัตยกรรมและวิธีการฝึกอบรมที่อยู่เบื้องหลัง Llama3 เปิดเผยข้อมูลการฝึกอบรมล่วงหน้าที่เป็นนวัตกรรมและ ปรับจูน เทคนิคที่จำเป็นสำหรับการทำความเข้าใจประสิทธิภาพที่ยอดเยี่ยม
  • สัมผัสประสบการณ์การนำ Llama3 ไปใช้จริงผ่าน Flask ฝึกฝนศิลปะแห่งการสร้างข้อความโดยใช้หม้อแปลงไฟฟ้า ขณะเดียวกันก็รับข้อมูลเชิงลึกเกี่ยวกับแง่มุมที่สำคัญของการทดสอบและปรับแต่งความปลอดภัย
  • วิเคราะห์ความสามารถที่น่าประทับใจของ Llama3 รวมถึงความแม่นยำที่เพิ่มขึ้น ความสามารถในการปรับตัว และความสามารถในการปรับขนาดที่แข็งแกร่ง ขณะเดียวกันก็ตระหนักถึงข้อจำกัดและความเสี่ยงที่อาจเกิดขึ้น ซึ่งมีความสำคัญต่อการใช้งานและการพัฒนาอย่างมีความรับผิดชอบ
  • มีส่วนร่วมกับตัวอย่างในโลกแห่งความเป็นจริงและกรณีการใช้งานของ Llama3 ช่วยให้คุณสามารถใช้ประโยชน์จากพลังของมันได้อย่างมีประสิทธิภาพในแอปพลิเคชันและสถานการณ์ที่หลากหลาย ซึ่งจะช่วยปลดล็อกศักยภาพเต็มรูปแบบในขอบเขตของ Generative AI

บทความนี้เผยแพร่โดยเป็นส่วนหนึ่งของไฟล์ Blogathon วิทยาศาสตร์ข้อมูล

สารบัญ

สถาปัตยกรรมและการฝึกอบรม Llama3

ลามะ3 คือโมเดลภาษาแบบถดถอยอัตโนมัติที่ใช้ประโยชน์จากสถาปัตยกรรมหม้อแปลงที่ได้รับการปรับปรุงให้เหมาะสม ใช่ หม้อแปลงไฟฟ้าธรรมดาแต่มีการปรับปรุงแนวทาง เวอร์ชันที่ได้รับการปรับแต่งนั้นใช้การปรับแต่งแบบละเอียดภายใต้การดูแล (SFT) และการเรียนรู้แบบเสริมกำลังด้วยผลตอบรับของมนุษย์ (RLHF) เพื่อให้สอดคล้องกับความชอบของมนุษย์ในด้านความช่วยเหลือและความปลอดภัย แบบจำลองนี้ได้รับการฝึกอบรมล่วงหน้าบนคลังข้อมูลที่กว้างขวางกว่า 15 ล้านล้านโทเค็นจากแหล่งข้อมูลที่เปิดเผยต่อสาธารณะ โดยมีการตัดยอดในเดือนมีนาคม 2023 สำหรับรุ่น 8B และเดือนธันวาคม 2023 สำหรับรุ่น 70B ตามลำดับ ข้อมูลการปรับแต่งอย่างละเอียดจะรวมชุดข้อมูลคำสั่งที่เปิดเผยต่อสาธารณะ รวมถึงตัวอย่างที่มีคำอธิบายประกอบโดยมนุษย์มากกว่า 10 ล้านตัวอย่าง

Llama3 กับขวด

Llama3 ความสามารถที่น่าประทับใจ

ดังที่เราได้กล่าวไว้ก่อนหน้านี้ Llama3 มีการออกแบบหม้อแปลงที่ได้รับการปรับปรุงให้เหมาะสม และมาในสองขนาด พารามิเตอร์ 8B และ 70B ทั้งในเวอร์ชันฝึกล่วงหน้าและเวอร์ชันปรับแต่งคำสั่ง โทเค็นไนเซอร์ของโมเดลมีคำศัพท์โทเค็น 128K มีการใช้โทเค็น 8,192 ลำดับในการฝึกโมเดล Llama3 ได้รับการพิสูจน์แล้วว่ามีความสามารถอย่างน่าทึ่งดังต่อไปนี้:

  • ความแม่นยำที่เพิ่มขึ้น: Llama3 ได้แสดงประสิทธิภาพที่ดีขึ้นในงานประมวลผลภาษาธรรมชาติต่างๆ
  • ปรับตัว: ความสามารถของแบบจำลองในการปรับให้เข้ากับบริบทและงานที่หลากหลายทำให้เป็นตัวเลือกที่เหมาะสำหรับการใช้งานที่หลากหลาย
  • ความสามารถในการปรับขนาดที่แข็งแกร่ง: ความสามารถในการปรับขนาดของ Llama3 ช่วยให้สามารถจัดการข้อมูลปริมาณมากและงานที่ซับซ้อนได้อย่างง่ายดาย
  • ความสามารถในการเขียนโค้ด: ความสามารถในการเขียนโค้ดของ Llama3 ได้รับการเห็นพ้องกันว่ามีความโดดเด่นไม่แพ้กันด้วยโทเค็นที่น่าทึ่งกว่า 250+ ต่อวินาที แทนที่จะเป็น GPU สีทอง ประสิทธิภาพของ LPU นั้นไม่มีใครเทียบได้ ทำให้เป็นตัวเลือกที่เหนือกว่าสำหรับการใช้งานโมเดลภาษาขนาดใหญ่

ข้อได้เปรียบที่สำคัญที่สุดของ Llama3 คือโอเพ่นซอร์สและลักษณะที่เป็นอิสระ ทำให้นักพัฒนาสามารถเข้าถึงได้โดยไม่เปลืองเงิน

ลามะ 3 พร้อมขวด

ความหลากหลายและคุณสมบัติของ Llama3

ดังที่ได้กล่าวไว้ก่อนหน้านี้ Llama3 มีสองรุ่นหลัก โดยแต่ละรุ่นรองรับกรณีการใช้งานที่แตกต่างกัน โดยมีสองขนาดคือ 8B และ 70B:

  • โมเดลที่ผ่านการฝึกอบรมมาแล้ว: เหมาะสำหรับงานสร้างภาษาธรรมชาติ ประสิทธิภาพทั่วไปมากขึ้นอีกเล็กน้อย
  • โมเดลที่ปรับตามคำสั่ง: ปรับให้เหมาะสมสำหรับกรณีการใช้งานบทสนทนา มีประสิทธิภาพเหนือกว่าโมเดลการแชทแบบโอเพนซอร์สหลายตัวในเกณฑ์มาตรฐานอุตสาหกรรม

ข้อมูลการฝึกอบรม Llama3 และเกณฑ์มาตรฐาน

Llama3 ได้รับการฝึกอบรมล่วงหน้าเกี่ยวกับคลังข้อมูลที่กว้างขวางซึ่งมีโทเค็นข้อมูลที่เปิดเผยต่อสาธารณะมากกว่า 15 ล้านล้านโทเค็น โดยจะมีการตัดยอดในเดือนมีนาคม 2023 สำหรับรุ่น 8B และเดือนธันวาคม 2023 สำหรับรุ่น 70B ข้อมูลการปรับแต่งอย่างละเอียดจะรวมชุดข้อมูลคำสั่งที่เปิดเผยต่อสาธารณะและตัวอย่างคำอธิบายประกอบโดยมนุษย์มากกว่า 10 ล้านตัวอย่าง (คุณได้ยินถูกต้องแล้ว!) โมเดลนี้ได้รับผลลัพธ์ที่น่าประทับใจจากการวัดประสิทธิภาพอัตโนมัติมาตรฐาน รวมถึง MMLU, AGIEval English, CommonSenseQA และอื่นๆ อีกมากมาย

ลามะ3

กรณีการใช้งานและตัวอย่าง Llama3

ลามะก็สามารถใช้ได้เหมือนตัวอื่นๆ ครอบครัวลามะ รุ่นที่ทำให้ใช้งานได้ง่ายมาก โดยพื้นฐานแล้วเราจำเป็นต้องติดตั้งหม้อแปลงและเร่งความเร็ว เราจะเห็นสคริปต์ตัวตัดคำในส่วนนี้ คุณสามารถค้นหาข้อมูลโค้ดทั้งหมดและโน้ตบุ๊กที่จะรันด้วย GPU ได้ ที่นี่ ฉันได้เพิ่มสมุดบันทึก แอปขวด และสคริปต์โหมดโต้ตอบเพื่อทดสอบพฤติกรรมของโมเดล นี่คือตัวอย่างการใช้ Llama3 กับไปป์ไลน์:

จะเข้าถึง Llama3 ด้วย Flask ได้อย่างไร

ให้เราสำรวจขั้นตอนในการเข้าถึง Llama3 ด้วย Flask

ขั้นตอนที่ 1: ตั้งค่าสภาพแวดล้อม Python

สร้างสภาพแวดล้อมเสมือน (เป็นทางเลือก แต่แนะนำ):

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

ติดตั้งแพ็คเกจที่จำเป็น:

เราติดตั้ง Transformer และเร่งความเร็ว แต่เนื่องจาก 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: เตรียมไฟล์แอปพลิเคชันหลัก

สร้างไฟล์ Python ใหม่ชื่อ 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 ด้วยเส้นทางเดียว /สร้างรับผิดชอบในการรับและประมวลผลข้อความของผู้ใช้และการตอบกลับที่สร้างโดย AI

ขั้นตอนที่ 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 Notebook แบบโต้ตอบ ให้วางสิ่งนี้ลงในเซลล์แล้วเรียกใช้:

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 ได้ดำเนินการหลายขั้นตอนเพื่อให้แน่ใจว่าการพัฒนา AI อย่างมีความรับผิดชอบ รวมถึงการนำแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยไปใช้ การจัดหาทรัพยากรเช่น Meta Llama Guard 2 และการป้องกัน Code Shield และการอัปเดตคู่มือการใช้งานอย่างมีความรับผิดชอบ เราสนับสนุนให้นักพัฒนาปรับแต่งและปรับใช้การป้องกันเหล่านี้ตามความต้องการ โดยชั่งน้ำหนักประโยชน์ของการจัดตำแหน่งและความช่วยเหลือสำหรับกรณีการใช้งานและผู้ชมเฉพาะของพวกเขา ลิงก์ทั้งหมดเหล่านี้มีอยู่ในพื้นที่เก็บข้อมูล Hugginface สำหรับ Llama3

ข้อพิจารณาและข้อจำกัดด้านจริยธรรม

แม้ว่า Llama3 จะเป็นเครื่องมือที่ทรงพลัง แต่สิ่งสำคัญคือต้องรับทราบข้อจำกัดและความเสี่ยงที่อาจเกิดขึ้น โมเดลอาจสร้างการตอบสนองที่ไม่ถูกต้อง อคติ หรือน่ารังเกียจต่อข้อความแจ้งของผู้ใช้ ดังนั้น นักพัฒนาควรทำการทดสอบความปลอดภัยและปรับแต่งให้เหมาะกับการใช้งานโมเดลเฉพาะของตน Meta แนะนำให้รวมโซลูชัน Purple Llama เข้ากับเวิร์กโฟลว์ โดยเฉพาะ Llama Guard ซึ่งมีโมเดลพื้นฐานในการกรองอินพุตและเอาท์พุตพร้อมท์เพื่อเพิ่มความปลอดภัยระดับระบบเหนือระดับความปลอดภัยระดับโมเดล

สรุป

Meta ได้เปลี่ยนโฉมภูมิทัศน์ของปัญญาประดิษฐ์ด้วยการเปิดตัว Llama3 ซึ่งเป็นโมเดลภาษาโอเพ่นซอร์สที่ทรงพลังซึ่งสร้างขึ้นโดย Meta ด้วยความพร้อมใช้งานทั้งในเวอร์ชันฝึกล่วงหน้าและเวอร์ชันปรับแต่งคำสั่ง 8B และ 70B Llama3 นำเสนอความเป็นไปได้มากมายสำหรับนวัตกรรม คู่มือนี้ได้ให้การสำรวจเชิงลึกเกี่ยวกับความสามารถของ Llama3 และวิธีการเข้าถึง Llama3 ด้วย Flask โดยเน้นถึงศักยภาพในการกำหนด Generative AI ใหม่

ประเด็นที่สำคัญ

  • Meta พัฒนา Llama3 ซึ่งเป็นโมเดลภาษาโอเพ่นซอร์สที่ทรงพลัง ซึ่งมีทั้งเวอร์ชันฝึกล่วงหน้า 8B และ 70B และเวอร์ชันปรับแต่งคำสั่ง
  • Llama3 ได้แสดงให้เห็นถึงความสามารถที่น่าประทับใจ รวมถึงความแม่นยำที่เพิ่มขึ้น ความสามารถในการปรับตัว และความสามารถในการปรับขนาดที่แข็งแกร่ง
  • โมเดลนี้เป็นโอเพ่นซอร์สและไม่มีค่าใช้จ่ายใดๆ ทั้งสิ้น ทำให้นักพัฒนาและนักวิจัยที่มีงบประมาณต่ำสามารถเข้าถึงได้
  • ผู้ใช้สามารถใช้ Llama3 กับ Transformers โดยใช้ประโยชน์จาก Pipeline Abstraction หรือคลาส Auto ด้วยฟังก์ชัน Generate()
  • Llama3 และ Flask ช่วยให้นักพัฒนาได้สำรวจขอบเขตใหม่ใน Generative AI โดยส่งเสริมโซลูชันที่เป็นนวัตกรรม เช่น แชทบอทและการสร้างเนื้อหา และผลักดันขอบเขตการโต้ตอบระหว่างมนุษย์และเครื่องจักร

คำถามที่พบบ่อย

ไตรมาสที่ 1 Llama3 คืออะไร?

A. Meta พัฒนา Llama3 ซึ่งเป็นโมเดลภาษาโอเพ่นซอร์สที่ทรงพลัง ซึ่งมีให้เลือกทั้งเวอร์ชันฝึกล่วงหน้า 8B และ 70B และเวอร์ชันปรับแต่งคำสั่ง

ไตรมาสที่ 2 คุณสมบัติที่สำคัญของ Llama3 คืออะไร?

A. Llama3 ได้แสดงให้เห็นถึงความสามารถที่น่าประทับใจ รวมถึงความแม่นยำที่เพิ่มขึ้น ความสามารถในการปรับตัว และความสามารถในการปรับขนาดที่แข็งแกร่ง การวิจัยและการทดสอบแสดงให้เห็นว่าให้การตอบสนองที่เกี่ยวข้องและคำนึงถึงบริบทมากขึ้น ทำให้มั่นใจได้ว่าแต่ละโซลูชันได้รับการปรับแต่งอย่างละเอียดตามความต้องการของผู้ใช้

ไตรมาสที่ 3 Llama3 เป็นโอเพ่นซอร์สและฟรี และฉันสามารถใช้ Llama3 เพื่อวัตถุประสงค์ทางการค้าได้หรือไม่

ตอบ ใช่ Llama3 เป็นโอเพ่นซอร์สและไม่มีค่าใช้จ่ายใดๆ ทั้งสิ้น ทำให้นักพัฒนาสามารถเข้าถึงได้โดยไม่เปลืองเงิน แม้ว่า Llama3 จะเป็นโอเพ่นซอร์สและใช้งานฟรีเพื่อวัตถุประสงค์ทางการค้า อย่างไรก็ตาม เราขอแนะนำให้ตรวจสอบข้อกำหนดและเงื่อนไขการให้สิทธิ์ใช้งานเพื่อให้แน่ใจว่าเป็นไปตามกฎระเบียบที่เกี่ยวข้อง

ไตรมาสที่ 4 ฉันสามารถปรับแต่ง Llama3 ให้เหมาะกับกรณีการใช้งานเฉพาะของฉันได้หรือไม่

ตอบได้ คุณสามารถปรับแต่ง Llama3 อย่างละเอียดสำหรับกรณีการใช้งานเฉพาะได้โดยการปรับไฮเปอร์พารามิเตอร์และข้อมูลการฝึกอบรม ซึ่งสามารถช่วยปรับปรุงประสิทธิภาพของแบบจำลองในงานและชุดข้อมูลเฉพาะได้

คำถามที่ 5 Llama3 เปรียบเทียบกับโมเดลภาษาอื่นๆ เช่น BERT และ RoBERTa อย่างไร

A. Llama3 ซึ่งเป็นโมเดลภาษาขั้นสูงที่ได้รับการฝึกบนชุดข้อมูลขนาดใหญ่ มีประสิทธิภาพเหนือกว่า BERT และ RoBERTa ในงานประมวลผลภาษาธรรมชาติต่างๆ

สื่อที่แสดงในบทความนี้ไม่ได้เป็นของ Analytics Vidhya และถูกใช้ตามดุลยพินิจของผู้เขียน

แชทกับเรา

สวัสดี! ฉันจะช่วยคุณได้อย่างไร?