LLM และ Emerging ML Tech Stack
ความก้าวหน้าของการพัฒนาใน Large Language Model (LLM) ได้ขยายตัวอย่างรวดเร็วในช่วงหลายเดือนที่ผ่านมา และหนึ่งในโครงเรื่องที่น่าสนใจที่สุดคือการเปลี่ยนแปลงอย่างรวดเร็วไปสู่กลุ่มเทคโนโลยีใหม่เพื่อรองรับรูปแบบการมีส่วนร่วมใหม่ทั้งหมดด้วยโมเดลภาษาเหล่านี้ ในบล็อกโพสต์นี้ เราจะสำรวจการเปลี่ยนแปลงที่เกิดขึ้นในกลุ่มเทคโนโลยี LLM และความหมายสำหรับนักพัฒนา
NLP Tech Stack ที่มีอยู่
จนกระทั่งเมื่อเร็วๆ นี้ นักพัฒนา NLP ได้อาศัยกลุ่มเทคโนโลยีที่ปรับให้เหมาะกับงาน NLP เช่น การจัดประเภทข้อความ การรู้จำเอนทิตีที่มีชื่อ การแยกชื่อเอนทิตี โดยทั่วไปกองเทคโนโลยีนี้ประกอบด้วยไปป์ไลน์การประมวลผลข้อมูลล่วงหน้า ไปป์ไลน์การเรียนรู้ของเครื่อง และฐานข้อมูลต่างๆ เพื่อจัดเก็บการฝังและข้อมูลที่มีโครงสร้าง สถาปัตยกรรมนี้ทำงานได้ดีในการสร้างสามเท่าจำนวนมหาศาล การฝังคำ การฝังประโยค เอาต์พุตแบบลำดับต่อลำดับ ความน่าจะเป็นของรูปแบบภาษา น้ำหนักความสนใจ และอื่นๆ โดยทั่วไปแล้วนักพัฒนาจะจัดเก็บเอาต์พุตที่มีโครงสร้างเหล่านี้ไว้ในฐานข้อมูล ElasticSearch, Postgres หรือ Neo4j ซึ่งจะใช้เป็นกราฟความรู้ที่ผู้ใช้ (หรือบริการ) สามารถสืบค้นได้
สถาปัตยกรรมนี้ทำงานได้ดีสำหรับการสร้างข้อมูลที่มีโครงสร้างที่มีความน่าเชื่อถือสูงซึ่งสามารถนำไปใช้ภายในระบบขององค์กรเพื่อทำให้กระบวนการสำคัญเป็นไปโดยอัตโนมัติ (เช่น จัดประเภทเอกสาร ค้นหาเอนทิตี และความสัมพันธ์ระหว่างเอนทิตี เป็นต้น) อย่างไรก็ตาม พวกเขาพยายามที่จะได้รับการนำไปใช้อย่างแพร่หลายเนื่องจากพวกเขาตั้งต้นได้ช้า (ต้องใช้ข้อมูลที่มีป้ายกำกับจำนวนมากและการปรับแต่งโมเดลเล็กน้อย) มีราคาแพง (บ่อยครั้งที่สถาปัตยกรรมเหล่านี้มีโมเดลมากกว่าสามโหลในไปป์ไลน์/ระบบ) และไปป์ไลน์การส่งผ่านข้อมูลและแบบจำลองนั้นเปราะบางต่อเลย์เอาต์เอกสารและประเภทข้อมูลใหม่
LLM Tech Stack ที่เกิดขึ้นใหม่
ตั้งแต่ฤดูใบไม้ร่วงปี 2022 กลุ่มเทคโนโลยีใหม่ได้เริ่มปรากฏขึ้นซึ่งออกแบบมาเพื่อใช้ประโยชน์จากศักยภาพของ LLM อย่างเต็มที่ ตรงกันข้ามกับกลุ่มเทคโนโลยีก่อนหน้านี้ กลุ่มนี้มีจุดมุ่งหมายเพื่อเปิดใช้งานการสร้างข้อความ ซึ่งเป็นงานที่ LLM สมัยใหม่ทำได้ดีที่สุดเมื่อเทียบกับโมเดลการเรียนรู้ของเครื่องก่อนหน้านี้ สแต็กใหม่นี้ประกอบด้วยสี่เสาหลัก: ไปป์ไลน์การประมวลผลข้อมูลล่วงหน้า จุดสิ้นสุดการฝัง + ร้านค้าเวกเตอร์ จุดสิ้นสุด LLM และเฟรมเวิร์กการเขียนโปรแกรม LLM มีความแตกต่างอย่างมากระหว่างกลุ่มเทคโนโลยีเก่ากับกลุ่มเทคโนโลยีใหม่ ข้อแรก: กลุ่มเทคโนโลยีใหม่ไม่ได้พึ่งพากราฟความรู้ที่เก็บข้อมูลที่มีโครงสร้าง (เช่น สามเท่า) เนื่องจาก LLM เช่น ChatGPT, Claude และ Flan T-5 มีข้อมูลเข้ารหัสมากกว่ารุ่นก่อนหน้าอย่าง GPT 2 มาก ประการที่สอง: กลุ่มเทคโนโลยีที่ใหม่กว่าใช้ตำแหน่งข้อมูล LLM ที่มีอยู่ทั่วไปเป็นแบบจำลอง แทนที่จะเป็นไปป์ไลน์ ML ที่สร้างขึ้นเอง (อย่างน้อยก็เพื่อเริ่มต้น) ซึ่งหมายความว่านักพัฒนาในปัจจุบันใช้เวลาน้อยลงอย่างมากในการฝึกอบรมโมเดลการดึงข้อมูลเฉพาะทาง (เช่น Named Entity Recognition, Relation Extraction และ Sentiment) และสามารถหมุนโซลูชันได้ในเศษเสี้ยวของเวลา (และค่าใช้จ่าย)
ไปป์ไลน์การประมวลผลข้อมูลล่วงหน้า : เสาแรกของสแต็กเทคโนโลยีใหม่ส่วนใหญ่ไม่เปลี่ยนแปลงจากสแต็กเก่า: ไปป์ไลน์การประมวลผลข้อมูลล่วงหน้า ขั้นตอนนี้ประกอบด้วยตัวเชื่อมต่อเพื่อนำเข้าข้อมูลไม่ว่าจะอยู่ที่ใด (เช่น บัคเก็ต S3 หรือ CRM) เลเยอร์การแปลงข้อมูล และตัวเชื่อมต่อดาวน์สตรีม (เช่น ไปยังฐานข้อมูลเวกเตอร์) บ่อยครั้งที่ข้อมูลที่มีค่าที่สุดในการป้อนเข้าสู่ LLM ก็เป็นข้อมูลที่ยากที่สุดที่จะทำงานด้วย (PDFs, PPTXs, HTML เป็นต้น) แต่รวมถึงเอกสารที่ข้อความสามารถเข้าถึงได้ง่าย (เช่น .DOCX เป็นต้น) ซึ่งมีข้อมูลที่ผู้ใช้ทำ 'ไม่ต้องการส่งไปยังจุดสิ้นสุดการอนุมาน (เช่น โฆษณา ต้นแบบทางกฎหมาย ฯลฯ)
ในอดีต ขั้นตอนนี้สร้างขึ้นด้วยมือโดยเฉพาะสำหรับแต่ละแอปพลิเคชันโดยนักวิทยาศาสตร์ข้อมูล ขึ้นอยู่กับประเภทของข้อมูลที่เกี่ยวข้อง พวกเขาอาจใช้โมเดล OCR ที่มีอยู่ทั่วไปและนิพจน์ทั่วไปที่กำหนดเองหลายสิบถึงหลายร้อยรายการเพื่อแปลงและล้างข้อมูลภาษาธรรมชาติสำหรับการประมวลผลในไปป์ไลน์การเรียนรู้ของเครื่องดาวน์สตรีม ที่ Unstructured เรากำลังพัฒนาเครื่องมือโอเพ่นซอร์สเพื่อเร่งขั้นตอนการประมวลผลล่วงหน้านี้ โดยใช้โมเดลการแบ่งส่วนเอกสารการมองเห็นด้วยคอมพิวเตอร์ที่หลากหลาย รวมถึงโมเดล NLP สคริปต์ Python และนิพจน์ทั่วไปเพื่อแยก ล้างข้อมูล และแปลงองค์ประกอบเอกสารที่สำคัญโดยอัตโนมัติ (เช่น บรรทัดแรก ข้อความเนื้อหา ส่วนหัว/ส่วนท้าย รายการ และอื่นๆ)
Embeddings Endpoint และ Vector Store:การใช้ endpoint แบบฝังและที่เก็บเวกเตอร์แสดงถึงวิวัฒนาการที่สำคัญในวิธีการจัดเก็บและเข้าถึงข้อมูล ก่อนหน้านี้การฝังส่วนใหญ่จะใช้กับงานเฉพาะกลุ่ม เช่น การจัดกลุ่มเอกสาร อย่างไรก็ตาม ในสถาปัตยกรรมใหม่ การจัดเก็บเอกสารและการฝังเอกสารในฐานข้อมูลเวกเตอร์ช่วยให้รูปแบบการมีส่วนร่วมที่สำคัญโดยจุดสิ้นสุด LLM (เพิ่มเติมด้านล่าง) ข้อดีหลักประการหนึ่งของสถาปัตยกรรมนี้คือความสามารถในการจัดเก็บการฝังดิบโดยตรง แทนที่จะแปลงเป็นรูปแบบที่มีโครงสร้าง ซึ่งหมายความว่าข้อมูลสามารถจัดเก็บในรูปแบบที่เป็นธรรมชาติ ทำให้สามารถประมวลผลได้เร็วขึ้นและเรียกใช้ข้อมูลได้อย่างมีประสิทธิภาพมากขึ้น นอกจากนี้ วิธีการนี้ยังช่วยให้ทำงานกับชุดข้อมูลขนาดใหญ่ได้ง่ายขึ้น เนื่องจากสามารถลดปริมาณข้อมูลที่ต้องประมวลผลระหว่างการฝึกอบรมและการอนุมาน
การสร้างและจัดเก็บการฝังเอกสารพร้อมกับเอกสารในเวอร์ชัน JSON นั้นสร้างกลไกที่ง่ายสำหรับ LLM ในการเชื่อมต่อกับร้านค้าเวกเตอร์ สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับแอปพลิเคชันที่ต้องการการประมวลผลตามเวลาจริง เช่น แชทบอท ด้วยการลดเวลาที่ต้องใช้ในการดึงข้อมูลให้น้อยที่สุด ระบบจึงสามารถตอบสนองได้รวดเร็วขึ้นและมอบประสบการณ์การใช้งานที่ดีขึ้น ข้อดีอีกประการของการใช้การฝัง (และดัชนีเอกสาร) และที่เก็บเวกเตอร์คือช่วยให้นำเทคนิคต่างๆ ไปใช้ได้ง่ายขึ้น เช่น การเรียนรู้แบบถ่ายโอน เพื่อให้สามารถปรับแต่งได้อย่างมีประสิทธิภาพมากขึ้นและประสิทธิภาพที่ดีขึ้น
LLM Endpoint : เสาหลักที่สามของ Tech Stack ใหม่คือ LLM endpoint นี่คือจุดสิ้นสุดที่รับข้อมูลอินพุตและสร้างเอาต์พุต LLM ตำแหน่งข้อมูล LLM มีหน้าที่รับผิดชอบในการจัดการทรัพยากรของโมเดล รวมถึงหน่วยความจำและการประมวลผล และจัดหาอินเทอร์เฟซที่ปรับขนาดได้และทนทานต่อข้อผิดพลาดสำหรับให้บริการเอาต์พุต LLM ไปยังแอปพลิเคชันดาวน์สตรีม
แม้ว่าผู้ให้บริการ LLM ส่วนใหญ่จะเสนอจุดสิ้นสุดหลายประเภท แต่เราใช้เพื่ออ้างถึงจุดสิ้นสุดการสร้างข้อความ ตามที่กล่าวไว้ข้างต้น นี่คือการปลดล็อกทางเทคโนโลยีใหม่ที่ขับเคลื่อนแอปพลิเคชันที่เกิดขึ้นใหม่จำนวนมาก (เทียบกับไปป์ไลน์ ML แบบดั้งเดิม) เป็นการทำให้เข้าใจง่ายขึ้นเล็กน้อย แต่อินเทอร์เฟซที่จุดสิ้นสุด LLM เหล่านี้เปิดเผยคือฟิลด์ข้อความเป็นอินพุตและฟิลด์ข้อความเป็นเอาต์พุต
กรอบการเขียนโปรแกรม LLM : เสาหลักสุดท้ายของกองเทคโนโลยีใหม่คือกรอบการเขียนโปรแกรม LLM เฟรมเวิร์กเหล่านี้มีชุดเครื่องมือและบทคัดย่อสำหรับสร้างแอปพลิเคชันด้วยโมเดลภาษา ที่ LangChain นี่คือกรอบการทำงานที่เรากำลังดำเนินการสร้าง เฟรมเวิร์กเหล่านี้มีการพัฒนาอย่างรวดเร็ว ซึ่งทำให้ยากต่อการกำหนด ถึงกระนั้น เรากำลังมาบรรจบกับชุดของสิ่งที่เป็นนามธรรม ซึ่งเราจะลงรายละเอียดด้านล่าง
หน้าที่หลักของเฟรมเวิร์กเหล่านี้คือการประสานส่วนประกอบต่างๆ ทั้งหมด ในสแต็กสมัยใหม่จนถึงตอนนี้ ประเภทของส่วนประกอบที่เราพบเห็นคือ: ผู้ให้บริการ LLM (ครอบคลุมในส่วนด้านบน), แบบจำลองการฝัง, vectorstores, ตัวโหลดเอกสาร, เครื่องมือภายนอกอื่นๆ (การค้นหาโดย Google เป็นต้น) ใน LangChain เราหมายถึงวิธีการรวมส่วนประกอบเหล่านี้เข้าด้วยกันเป็นห่วงโซ่ ตัวอย่างเช่น เรามีเชนสำหรับทำ QA บนร้านค้าเวกเตอร์ เชนสำหรับการโต้ตอบกับฐานข้อมูล SQL เป็นต้น
เครือข่ายทั้งหมดเหล่านี้เกี่ยวข้องกับการเรียกใช้โมเดลภาษาในบางจุด เมื่อเรียกใช้โมเดลภาษา ความท้าทายหลักมาจากการสร้างพรอมต์เพื่อส่งผ่านไปยังโมเดลภาษา การแจ้งเตือนเหล่านี้มักเป็นการรวมกันของข้อมูลที่นำมาจากคอมโพเนนต์อื่นๆ บวกกับเทมเพลตพรอมต์พื้นฐาน LangChain มีเทมเพลตพรอมต์เริ่มต้นมากมายสำหรับการเริ่มต้นใช้งานเชนเหล่านี้ แต่เรายังมุ่งเน้นที่การสร้าง LangChainHub ซึ่งเป็นที่สำหรับผู้ใช้ในการแชร์พรอมต์เหล่านี้
คำถามเปิด:
วิธีที่ดีที่สุดในการจัดทำดัชนีข้อมูล:ในตอนนี้ ทุกคนส่วนใหญ่ใช้ vectorstores เป็นวิธีหลักในการจัดทำดัชนีข้อมูลเพื่อให้ LLM สามารถโต้ตอบกับข้อมูลนั้นได้ อย่างไรก็ตาม นี่เป็นเพียงด่านแรกในการกำหนดว่าการโต้ตอบเหล่านี้ควรทำงานอย่างไร พื้นที่ของการสำรวจเชิงรุกคือขอบเขตที่กราฟความรู้ ควบคู่ไปกับดัชนีเอกสารและการฝัง สามารถเพิ่มคุณภาพของการอนุมานจาก LLM ได้ นอกจากนี้ ในอนาคตอันใกล้นี้ องค์กรส่วนใหญ่ยังคงต้องการข้อมูลที่มีโครงสร้างคุณภาพสูง (โดยทั่วไปในฐานข้อมูลแบบกราฟ) เพื่อรวมเข้ากับชุดข้อมูลที่มีอยู่และโซลูชันข่าวกรองธุรกิจ ซึ่งหมายความว่าสำหรับระยะกลาง ผู้ปรับใช้ระดับองค์กรอาจต้องพึ่งพาทั้งฐานข้อมูลเวกเตอร์และกราฟเพื่อขับเคลื่อนแอปพลิเคชันและเวิร์กโฟลว์ที่มีอยู่
การปรับแต่ง / การฝึกอบรมใหม่จะมีลักษณะอย่างไร:ขณะนี้ เฟรมเวิร์กการเขียนโปรแกรม LLM เช่น LangChain กำลังถูกใช้เพื่อรวมข้อมูลของคุณเข้ากับ LLM ที่ได้รับการฝึกฝนล่วงหน้า อีกวิธีในการทำเช่นนี้คือการปรับแต่ง LLM ในข้อมูลของคุณ การปรับแต่งมีข้อดีและข้อเสียบางประการ ในด้านบวก ช่วยลดความจำเป็นในการประสานเสียงจำนวนมาก อย่างไรก็ตาม ข้อเสียคือมีค่าใช้จ่ายสูงและใช้เวลานานกว่าในการแก้ไขให้ถูกต้อง และต้องทำเป็นระยะๆ เพื่อให้ทันสมัยอยู่เสมอ มันน่าสนใจที่จะเห็นว่าการแลกเปลี่ยนเหล่านี้มีวิวัฒนาการอย่างไรเมื่อเวลาผ่านไป
วิธีต่างๆ ในการใช้การฝัง:แม้ว่ารูปแบบการใช้งานหลักจะยังคงเก็บข้อมูลของคุณไว้ในฐานข้อมูลภายนอก แทนที่จะปรับแต่งอย่างละเอียด แต่ก็ยังมีวิธีอื่นๆ ในการรวมเข้ากับ LLM แทนที่จะเป็นวิธีการปัจจุบัน (ซึ่งทั้งหมดเกี่ยวข้องกับการส่งผ่านไปยังพรอมต์ ). วิธีที่น่าตื่นเต้นที่สุดคือRETROซึ่งดึงข้อมูลการฝังสำหรับเอกสาร แต่จากนั้นเข้าร่วมโดยตรงผ่านการฝังเหล่านั้นแทนที่จะส่งข้อความตามพร้อมท์ แม้ว่าโมเดลเหล่านี้ส่วนใหญ่จะใช้ในการตั้งค่าการวิจัย แต่ก็น่าสนใจที่จะดูว่าโมเดลเหล่านี้ทำให้เป็นกระแสหลักหรือไม่ และสิ่งนี้ส่งผลต่อกรอบการเขียนโปรแกรม LLM อย่างไร
บทสรุป
การเปลี่ยนไปสู่กองเทคโนโลยี LLM ใหม่นี้เป็นการพัฒนาที่น่าตื่นเต้นซึ่งจะช่วยให้นักพัฒนาสามารถสร้างและปรับใช้แอปพลิเคชัน NLP ที่มีประสิทธิภาพมากขึ้น สแต็กใหม่มีประสิทธิภาพมากขึ้น ปรับขยายได้ และใช้งานง่ายกว่าสแต็กเก่า และปลดล็อกศักยภาพทั้งหมดของ LLM เราคาดหวังได้ว่าจะได้เห็นนวัตกรรมใหม่ๆ ในพื้นที่นี้มากขึ้นในอีกไม่กี่เดือนและหลายปีข้างหน้า เนื่องจากนักพัฒนายังคงค้นหาวิธีใหม่ๆ ในการควบคุมพลังของ LLM





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)