Table of Contents

จุดเริ่มต้นของความสำเร็จ ChatGPT

เมื่อปลายปีที่แล้ว มีการปล่อยตัว แชทบอท ออกมาเรียกเสียงฮือฮา สะเทือนวงการเทคโนโลยี และกลายเป็นกระแสไวรัลอย่างรวดเร็ว นั่นก็คือ ChatGPT

ChatGPT รูปแบบหนึ่งของ GPT-3.5 ถูกพัฒนามาจาก GPT (Generative Pre-training Transformer) language model โดย OpenAI ได้รับการออกแบบมาโดยเฉพาะสำหรับแอปพลิเคชันแชทบอท ทำให้สามารถสร้างการตอบสนองที่เหมือนมนุษย์ต่อการป้อนข้อมูลของผู้ใช้แบบเรียลไทม์ ซึ่งนอกจากความสามารถด้านการสนทนาแล้ว ChatGPT ยังสามารถทำงานด้านการประมวลผลภาษาธรรมชาติอื่น ๆ ได้อีกหลากหลาย เช่น การแปล การสรุป และการวิเคราะห์ความรู้สึก

ในบทความนี้ เราจะมาพูดถึง Generative Pre-training Transformer หรือ GPT ซึ่งเป็นหนึ่งในโมเดลพื้นฐานที่สำคัญที่สุดในการทำความเข้าใจภาษา

ก่อนอื่นขอพูดถึง Language model เพื่อให้เข้าใจได้ง่ายขึ้นก่อน Language model เป็นงานการประมวลผลภาษาธรรมชาติ (Natural language processing: NLP) ที่ใช้ศาสตร์ของสถิติ และความน่าจะเป็นในการหาลำดับคำที่เกิดขึ้นในประโยค โดยวิเคราะห์จากเนื้อความของบริบทเพื่อการทำนายคำถัดไป โดยงานหลักของ NLP เป็นไปตามรูปแบบของ self-supervised pre-training a corpus on the language model architecture ตามด้วยการทำ fine-tuning ในแต่ละงานเฉพาะ

Generative Pre-training Transformer คือ language generation model ที่พัฒนาโดย OpenAI ซึ่ง GPT-3 เป็นรุ่นที่ 3 ของ GPT series ที่ถูกปล่อยออกมาอย่างเป็นทางการ

ตระกูลของโมเดลของ GPT มีความแตกต่างกันในด้านของความจุ และราคา อีกทั้งเรายังสามารถที่จะปรับแต่งโมเดลพื้นฐานสำหรับการใช้งานในกรณีเฉพาะด้านด้วย fine-tuning อีกด้วย อย่างที่ได้กล่าวไว้ในตอนแรกว่าโมเดล GPT-3 มีความสามารถในการทำความเข้าใจ และสร้างภาษาธรรมชาติได้ โดยหลัก ๆ จะมีอยู่ 4 รุ่น ที่แตกต่างกัน เหมาะสำหรับงานที่แตกต่างกัน เรามาดูกันว่า 4 รุ่นนี้มีอะไรบ้าง

  1. Davinci

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

ใช้งานได้ดี : Complex intent, cause and effect, summarization for audience

โมเดลที่ถูกปล่อยมาล่าสุด : text-davinci-003

  • Curie

Curie มีพลังงานมาก และยังมีความเร็วมากด้วย ขณะที่ Davinci มีความสามารถมากกว่าในการวิเคราะห์ข้อความที่ซับซ้อน แต่ Curie จะค่อนข้างมีความสามารถสำหรับงานที่แตกต่างกันเล็กน้อย เช่น การจำแนกความรู้สึก และการสรุป Curie ค่อนข้างใช้งานได้ดีในการตอบคำถาม และดำเนินการ Q & A เป็น chatbot บริการทั่วไป

ใช้งานได้ดี : Language translation, complex classification, text sentiment, summarization

โมเดลที่ถูกปล่อยมาล่าสุด : text-curie-001

  • Babbage

Babbage สามารถทำงานที่มีความตรงไปตรงมา เช่น การจัดหมวดหมู่อย่างง่าย นอกจากนี้ยังมีความสามารถในการจัดลำดับ Semantic Search ว่าเอกสารตรงกับข้อความค้นหาได้ดีเพียงใด

ใช้งานได้ดี : Moderate classification, semantic search classification

โมเดลที่ถูกปล่อยมาล่าสุด : text-babbage-001

  • Ada

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

ใช้งานได้ดี : Parsing text, simple classification, address correction, keywords

โมเดลที่ถูกปล่อยมาล่าสุด : text-ada-001

อ้างอิง https://beta.openai.com/docs/models

Fine-tuning วิธีการปรับแต่งโมเดลให้เหมาะสมกับการใช้งาน

ต่อเนื่องจากบทความก่อนหน้านี้ ที่เราได้พูดถึง GPT-3 และการเกริ่นถึง Fine-tuning บ้างแล้ว บทความนี้เราจะมาเน้นที่การทำ Fine-tuning กันบ้าง

Fine-tuning คือกระบวนการฝึกโมเดลภาษา เพื่อจดจำรูปแบบการข้อมูลนำเข้า และผลลัพธ์โดยเฉพาะ ซึ่งสามารถนำไปใช้กับงาน NLP ที่กำหนดเองใด ๆ ก็ได้ โดยที่เราต้องใส่ดข้อมูลที่กำหนดเองของเราลงไป เพื่อให้โมเดลสามารถสรุปผลลัพธ์ให้เหมาะสมกับงานเฉพาะของเราได้

GPT-3 ได้รับการฝึกฝนล่วงหน้าด้วยข้อความจำนวนมากจากอินเทอร์เน็ต GPT-3 สามารถทำความเข้าใจว่างานใดที่กำลังพยายามทำอยู่ และทำให้เกิดผลสำเร็จ แม้จะได้รับ prompt เพียงเล็กน้อย นั่นคือ “few-shot learning”

โดยขั้นตอนของการทำ Fine-tuning มีดังนี้

  1. การเตรียมข้อมูล และอัปโหลดข้อมูลการฝึกฝน

สำหรับข้อมูลในการฝึกสอนนั้น จำเป็นต้องเป็นไฟล์ JSONL โดยที่แต่ละบรรทัดจะเป็นคู่ของ prompt-completion ดังตัวอย่างข้างล่าง

{“prompt”: “<prompt text>”, “completion”: “<ideal generated text>”}

{“prompt”: “<prompt text>”, “completion”: “<ideal generated text>”}

{“prompt”: “<prompt text>”, “completion”: “<ideal generated text>”}

เราสามารถใช้ CLI data preparation tool เครื่องมือสำหรับการเตรียมข้อมูลที่จะทำให้สะดวกสบายในการแปลงข้อมูลของเราให้อยู่ในรูปแบบไฟล์ JSONL

การออกแบบ prompt และ completion สำหรับ fine-tuning นั้นจะแตกต่างกับ prompt ที่ใช้กับโมเดลพื้นฐาน (Davinci, Curie, Babbage และ Ada) ตัวอย่างการฝึกแต่ละตัวอย่าง โดยทั่วไปจะประกอบด้วยตัวอย่างอินพุตเดียว และเอาต์พุตที่เกี่ยวข้อง โดยไม่จำเป็นต้องให้คำแนะนำโดยละเอียด หรือรวมหลายตัวอย่างไว้ใน prompt เดียวกัน

Data formatting

สำหรับการทำ fine-tuning จำเป็นจะต้องมีชุดข้อมูลตัวอย่างในการฝึก ซึ่งแต่ละชุดจะประกอบด้วย single input (“prompt”) และ associated output (“completion”) โดยมีข้อกำหนดดังนี้

  • แต่ละ prompt ควรลงท้ายด้วยตัวคั่นคงที่ เพื่อทำให้โมเดลรู้ว่า prompt สิ้นสุดจุดไหน ตัวคั่นอย่างง่ายที่ใช้โดยทั่วไปคือ \n\n###\n\n และที่สำคัญตัวคั่นไม่ควรปรากฏที่อื่นใน prompt ใด ๆ
  • แต่ละ completion ควรเริ่มต้นด้วยเว้นวรรค และควรจบด้วยตัวคั่นคงที่อาจเป็น \n, ### หรืออื่น ๆ

CLI data preparation tool

เครื่องมือนี้ช่วยในการเตรียมข้อมูล โดยมีข้อกำหนด คือต้องมี prompt และ completion เราสามารถส่งไฟล์ CSV, TSV, XLSX, JSON หรือ JSONL ได้เลย และจะได้ผลลัพธ์เป็นไฟล์ JSONL ที่พร้อมสำหรับ fine-tuning โดยใช้คำสั่ง

openai tools fine_tunes.prepare_data -f <LOCAL_FILE>

  • สร้างโมเดล fine-tuned

หลังจากที่ทำการเตรียมข้อมูลเรียบร้อยแล้ว แต่ก่อนจะสร้าง fine tune model จำเป็นจะต้องมี OPENAI API KEY ก่อน

เราจะใช้ OpenAI CLI:

openai api fine_tunes.create -t <TRAIN_FILE_ID_OR_PATH> -m <BASE_MODEL>

โดยที่ BASE_MODEL คือชื่อของโมเดลพื้นฐานเริ่มต้น (ada, babbage, curie หรือ davinci) และเราสามารถปรับแต่งชื่อโมเดล fine-tuned ได้โดยใช้ suffix parameter

งาน fine-tuning ทุกอย่างเริ่มต้นจากโมเดลพื้นฐาน ซึ่งมีค่าเริ่มต้นเป็น Curie การเลือกโมเดลจะส่งผลต่อทั้งประสิทธิภาพ และราคาในการรันโมเดล fine-tuned หลังจากที่คุณเริ่มงาน fine-tune อาจต้องใช้เวลาสักระยะจึงจะเสร็จสมบูรณ์ ขึ้นอยู่กับโมเดลและขนาดชุดข้อมูล ซึ่งหากเปิดเหตุการณ์การรันถูกขัดจังหวะ เราสามารถดำเนินการต่อได้โดยเรียกใช้

openai api fine_tunes.follow -i <YOUR_FINE_TUNE_JOB_ID>

  • ใช้งานโมเดล fine-tuned

เมื่อขั้นตอนที่ 2 สำเร็จ โมเดล Fine tuned ที่เราสร้างจะไปปรากฏในช่อง model ของ playground เราสามารถระบุโมเดลนี้เป็นพารามิเตอร์ของ API

Reference : ChatGPT Fusion

Chat GPT Service by Fusion

ใช้ ChatGPT ในองค์กร ผ่าน MS Team Fusion มีบริการ Config GPT สำหรับใช้ภายในองค์กร ภายใต้ Azure Service มั่นใจได้ 100 % ว่าข้อมูลที่คุยกับระบบ GPT จะไม่ถูกนำออกไปใช้ภายนอกบริษัท

รายละเอียดการให้บริการ

  • เปิด Service Cognitive Service ( OpenAI 4.0)
  • Connect MS Team
  • Short memory
  • Security Config
  • log history เก็บข้อมูลการคุยในรูปแบบ Database

ใช้เวลา Config หลังจากเปิด Service เรียบร้อยภายใน 2 วัน สามารถควบคุมงบประมาณได้ 100 %
Security Detail https://learn.microsoft.com/…/cogni…/openai/data-privacy

ChatGPT

Reference

Facebook
X
LinkedIn

Popular Blog posts