บทนำ
โลกของ 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 มีการออกแบบหม้อแปลงที่ได้รับการปรับปรุงให้เหมาะสม และมาในสองขนาด พารามิเตอร์ 8B และ 70B ทั้งในเวอร์ชันฝึกล่วงหน้าและเวอร์ชันปรับแต่งคำสั่ง โทเค็นไนเซอร์ของโมเดลมีคำศัพท์โทเค็น 128K มีการใช้โทเค็น 8,192 ลำดับในการฝึกโมเดล Llama3 ได้รับการพิสูจน์แล้วว่ามีความสามารถอย่างน่าทึ่งดังต่อไปนี้:
- ความแม่นยำที่เพิ่มขึ้น: Llama3 ได้แสดงประสิทธิภาพที่ดีขึ้นในงานประมวลผลภาษาธรรมชาติต่างๆ
- ปรับตัว: ความสามารถของแบบจำลองในการปรับให้เข้ากับบริบทและงานที่หลากหลายทำให้เป็นตัวเลือกที่เหมาะสำหรับการใช้งานที่หลากหลาย
- ความสามารถในการปรับขนาดที่แข็งแกร่ง: ความสามารถในการปรับขนาดของ Llama3 ช่วยให้สามารถจัดการข้อมูลปริมาณมากและงานที่ซับซ้อนได้อย่างง่ายดาย
- ความสามารถในการเขียนโค้ด: ความสามารถในการเขียนโค้ดของ Llama3 ได้รับการเห็นพ้องกันว่ามีความโดดเด่นไม่แพ้กันด้วยโทเค็นที่น่าทึ่งกว่า 250+ ต่อวินาที แทนที่จะเป็น GPU สีทอง ประสิทธิภาพของ LPU นั้นไม่มีใครเทียบได้ ทำให้เป็นตัวเลือกที่เหนือกว่าสำหรับการใช้งานโมเดลภาษาขนาดใหญ่
ข้อได้เปรียบที่สำคัญที่สุดของ Llama3 คือโอเพ่นซอร์สและลักษณะที่เป็นอิสระ ทำให้นักพัฒนาสามารถเข้าถึงได้โดยไม่เปลืองเงิน
ความหลากหลายและคุณสมบัติของ Llama3
ดังที่ได้กล่าวไว้ก่อนหน้านี้ Llama3 มีสองรุ่นหลัก โดยแต่ละรุ่นรองรับกรณีการใช้งานที่แตกต่างกัน โดยมีสองขนาดคือ 8B และ 70B:
- โมเดลที่ผ่านการฝึกอบรมมาแล้ว: เหมาะสำหรับงานสร้างภาษาธรรมชาติ ประสิทธิภาพทั่วไปมากขึ้นอีกเล็กน้อย
- โมเดลที่ปรับตามคำสั่ง: ปรับให้เหมาะสมสำหรับกรณีการใช้งานบทสนทนา มีประสิทธิภาพเหนือกว่าโมเดลการแชทแบบโอเพนซอร์สหลายตัวในเกณฑ์มาตรฐานอุตสาหกรรม
ข้อมูลการฝึกอบรม Llama3 และเกณฑ์มาตรฐาน
Llama3 ได้รับการฝึกอบรมล่วงหน้าเกี่ยวกับคลังข้อมูลที่กว้างขวางซึ่งมีโทเค็นข้อมูลที่เปิดเผยต่อสาธารณะมากกว่า 15 ล้านล้านโทเค็น โดยจะมีการตัดยอดในเดือนมีนาคม 2023 สำหรับรุ่น 8B และเดือนธันวาคม 2023 สำหรับรุ่น 70B ข้อมูลการปรับแต่งอย่างละเอียดจะรวมชุดข้อมูลคำสั่งที่เปิดเผยต่อสาธารณะและตัวอย่างคำอธิบายประกอบโดยมนุษย์มากกว่า 10 ล้านตัวอย่าง (คุณได้ยินถูกต้องแล้ว!) โมเดลนี้ได้รับผลลัพธ์ที่น่าประทับใจจากการวัดประสิทธิภาพอัตโนมัติมาตรฐาน รวมถึง MMLU, AGIEval English, CommonSenseQA และอื่นๆ อีกมากมาย
กรณีการใช้งานและตัวอย่าง 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 โดยส่งเสริมโซลูชันที่เป็นนวัตกรรม เช่น แชทบอทและการสร้างเนื้อหา และผลักดันขอบเขตการโต้ตอบระหว่างมนุษย์และเครื่องจักร
คำถามที่พบบ่อย
A. Meta พัฒนา Llama3 ซึ่งเป็นโมเดลภาษาโอเพ่นซอร์สที่ทรงพลัง ซึ่งมีให้เลือกทั้งเวอร์ชันฝึกล่วงหน้า 8B และ 70B และเวอร์ชันปรับแต่งคำสั่ง
A. Llama3 ได้แสดงให้เห็นถึงความสามารถที่น่าประทับใจ รวมถึงความแม่นยำที่เพิ่มขึ้น ความสามารถในการปรับตัว และความสามารถในการปรับขนาดที่แข็งแกร่ง การวิจัยและการทดสอบแสดงให้เห็นว่าให้การตอบสนองที่เกี่ยวข้องและคำนึงถึงบริบทมากขึ้น ทำให้มั่นใจได้ว่าแต่ละโซลูชันได้รับการปรับแต่งอย่างละเอียดตามความต้องการของผู้ใช้
ตอบ ใช่ Llama3 เป็นโอเพ่นซอร์สและไม่มีค่าใช้จ่ายใดๆ ทั้งสิ้น ทำให้นักพัฒนาสามารถเข้าถึงได้โดยไม่เปลืองเงิน แม้ว่า Llama3 จะเป็นโอเพ่นซอร์สและใช้งานฟรีเพื่อวัตถุประสงค์ทางการค้า อย่างไรก็ตาม เราขอแนะนำให้ตรวจสอบข้อกำหนดและเงื่อนไขการให้สิทธิ์ใช้งานเพื่อให้แน่ใจว่าเป็นไปตามกฎระเบียบที่เกี่ยวข้อง
ตอบได้ คุณสามารถปรับแต่ง Llama3 อย่างละเอียดสำหรับกรณีการใช้งานเฉพาะได้โดยการปรับไฮเปอร์พารามิเตอร์และข้อมูลการฝึกอบรม ซึ่งสามารถช่วยปรับปรุงประสิทธิภาพของแบบจำลองในงานและชุดข้อมูลเฉพาะได้
A. Llama3 ซึ่งเป็นโมเดลภาษาขั้นสูงที่ได้รับการฝึกบนชุดข้อมูลขนาดใหญ่ มีประสิทธิภาพเหนือกว่า BERT และ RoBERTa ในงานประมวลผลภาษาธรรมชาติต่างๆ
การเชื่อมโยง
สื่อที่แสดงในบทความนี้ไม่ได้เป็นของ Analytics Vidhya และถูกใช้ตามดุลยพินิจของผู้เขียน
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- PlatoData.Network Vertical Generative Ai เพิ่มพลังให้กับตัวเอง เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. Web3 อัจฉริยะ ขยายความรู้ เข้าถึงได้ที่นี่.
- เพลโตESG. คาร์บอน, คลีนเทค, พลังงาน, สิ่งแวดล้อม แสงอาทิตย์, การจัดการของเสีย. เข้าถึงได้ที่นี่.
- เพลโตสุขภาพ เทคโนโลยีชีวภาพและข่าวกรองการทดลองทางคลินิก เข้าถึงได้ที่นี่.
- ที่มา: https://www.analyticsvidhya.com/blog/2024/04/how-to-access-llama3-with-flask/