วิธีใช้ Hugging Face Transformers ใน Python

Withi Chi Hugging Face Transformers Ni Python



Hugging Face ได้รับการยอมรับว่าเป็นชุมชนปัญญาประดิษฐ์ที่เป็นโอเพ่นซอร์สและนำเสนอเฟรมเวิร์ก เครื่องมือ แบบจำลอง และสถาปัตยกรรมที่สำคัญทั้งหมดที่ช่วยในการสื่อสารหรือฝึกฝนด้วยแบบจำลองภาษา (การประมวลผลภาษาธรรมชาติ) Hugging Face Transformers เป็นสถาปัตยกรรมภาษาที่ช่วยในการจัดเตรียมโมเดลการประมวลผลภาษาที่ฝึกไว้ล่วงหน้าใน Python Transformers เหล่านี้จาก Hugging Face มีชุดข้อมูลและ API แบบเลเยอร์ที่หลากหลายซึ่งช่วยให้โปรแกรมเมอร์สร้างการโต้ตอบกับโมเดลที่ผ่านการฝึกอบรมล่วงหน้าได้อย่างง่ายดายด้วยแพ็คเกจไลบรารี

ไวยากรณ์

ทรานส์ฟอร์มเมอร์ Hugging Face อันล้ำสมัยมีโมเดลที่ผ่านการฝึกอบรมมาแล้วมากมาย โมเดลเหล่านี้สามารถนำไปใช้กับโมเดลภาษาต่างๆ ที่แสดงรายการต่อไปนี้:

  • ตัวแปลงเหล่านี้อาจประมวลผลข้อความในภาษาต่างๆ และสามารถทำงานที่แตกต่างกันในข้อความ เช่น การจัดหมวดหมู่ข้อความ การถามและตอบ การแปลข้อความเป็นภาษาต่างๆ และการสร้างข้อความ
  • เรายังอาจใช้ตัวแปลงเหล่านี้ใน Hugging Face สำหรับงานจำแนกตามการมองเห็น เช่น การตรวจจับวัตถุและงานที่ใช้เสียงพูด เช่น การจัดประเภทผู้พูดหรือการระบุ/รู้จำเสียงพูด

ตัวแปลงจาก Hugging Face ได้แก่ TensorFlow, PyTorch, ONNX เป็นต้น สำหรับไวยากรณ์ของการติดตั้งแพ็คเกจสำหรับตัวแปลงเหล่านี้ เราใช้คำสั่งต่อไปนี้:







$ pip ติดตั้งหม้อแปลง

ตอนนี้ เราพยายามลองตัวอย่างต่างๆ ที่เราใช้โมเดลจาก Hugging Face transformer สำหรับงานประมวลผลภาษาต่างๆ



ตัวอย่างที่ 1: การสร้างข้อความโดยใช้ Hugging Face Transformers

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



เราเริ่มเขียนโค้ดตัวอย่างด้วยการติดตั้งไลบรารี่ของ 'transformers' ในเทอร์มินัล Python ก่อน หากต้องการดาวน์โหลดแพ็คเกจของ Transformer ให้ใช้ 'pip install with the name of the package, i.e. transformer' เมื่อเราดาวน์โหลดและติดตั้งแพ็คเกจหม้อแปลงแล้ว เราดำเนินการต่อโดยนำเข้าแพ็คเกจ 'ไปป์ไลน์' จากหม้อแปลง ไปป์ไลน์ใช้เพื่อประมวลผลข้อมูลก่อนที่จะป้อนไปยังโมเดล





เรานำเข้า 'pprint' จาก pprint แพ็คเกจนี้ได้รับการติดตั้งเพื่อพิมพ์ผลลัพธ์จากโมเดลการสร้างข้อความในรูปแบบที่อ่านง่าย มีโครงสร้าง และมีการจัดรูปแบบที่ดี มิฉะนั้น ถ้าเราใช้ฟังก์ชัน “print()” จะแสดงผลลัพธ์เป็นบรรทัดเดียว ซึ่งรูปแบบไม่ถูกต้องและอ่านง่าย โมเดลการสร้างข้อความช่วยสร้างหรือเพิ่มข้อความเพิ่มเติมให้กับข้อความที่เราจัดเตรียมไว้ให้กับโมเดลเป็นอินพุตในตอนแรก

ในการเรียกโมเดลที่ผ่านการฝึกอบรมจากหม้อแปลง เราใช้ฟังก์ชันไปป์ไลน์ () ซึ่งมีพารามิเตอร์สองตัวเป็นอินพุต อันแรกระบุชื่อของงานที่เลือก และอันที่สองคือชื่อรุ่นจากหม้อแปลง ในสถานการณ์สมมตินี้ งานที่เลือกคือการสร้างข้อความ รูปแบบการฝึกอบรมล่วงหน้าที่เราใช้จากหม้อแปลงคือ 'gpt'



หลังจากใช้ฟังก์ชันไปป์ไลน์ เราตัดสินใจอินพุตที่เราต้องการให้กับโมเดลของเราเพื่อสร้างข้อความเพิ่มเติมสำหรับมัน จากนั้นเราจะส่งข้อมูลนี้ไปยังฟังก์ชัน “task_pipeline()” ฟังก์ชันนี้สร้างเอาต์พุตสำหรับโมเดลโดยรับอินพุต ความยาวสูงสุดของเอาต์พุต และจำนวนประโยคที่เอาต์พุตควรมีเป็นพารามิเตอร์อินพุต

เราป้อนข้อมูลเป็น 'นี่คือรูปแบบภาษา' เรากำหนดความยาวสูงสุดของเอาต์พุตเป็น '30' และจำนวนประโยคในเอาต์พุตเป็น '3' ตอนนี้ เราเรียกฟังก์ชัน pprint() เพื่อแสดงผลที่สร้างขึ้นจากโมเดลของเรา

!pip ติดตั้งหม้อแปลง

จากท่อนำเข้าหม้อแปลงไฟฟ้า
จาก pprint นำเข้า pprint

SELECTED_TASK = 'การสร้างข้อความ'
รุ่น = 'gpt2'
งาน = ไปป์ไลน์ (f'{SELECTED_TASK}', รุ่น = MODEL)

INPUT = 'นี่คือรูปแบบภาษา'
OUT_put = งาน (อินพุต, ความยาวสูงสุด = 30, num_return_sequences=3)

พิมพ์ (OUT_put)

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

ตัวอย่างที่ 2: การจำแนกประเภทข้อความโดยใช้ไปป์ไลน์จาก Transformers

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

ก่อนอื่นเรานำเข้าท่อจากหม้อแปลง จากนั้น เราเรียกฟังก์ชัน “pipeline()” เราส่งชื่อรุ่นซึ่งในกรณีของเราคือ 'การจำแนกข้อความ' ไปยังพารามิเตอร์ เมื่อระบุโมเดลโดยใช้ไปป์ไลน์แล้ว เราอาจตั้งชื่อโมเดลนั้นว่า 'ตัวแยกประเภท' จนถึงจุดนี้ โมเดลเริ่มต้นสำหรับการจำแนกข้อความจะถูกดาวน์โหลดไปยังเครื่องโฮสต์ของเรา ตอนนี้เราสามารถใช้แบบจำลองนี้สำหรับงานของเรา

ดังนั้น นำเข้าหมีแพนด้าเป็น “pd” เราต้องการนำเข้าแพ็คเกจนี้เนื่องจากเราต้องการพิมพ์เอาต์พุตจากโมเดลในรูปแบบของ DataFrame ตอนนี้ เราระบุข้อความที่เราต้องการให้โมเดลของเราเป็นอินพุตเพื่อจัดประเภทเป็นประโยคเชิงบวกหรือประโยคเชิงลบ เราตั้งข้อความว่า “I’m a good guy” เราส่งข้อความนี้ไปยังโมเดล classifier() ที่เราเพิ่งสร้างขึ้นในตัวอย่างนี้ และบันทึกผลลัพธ์ในตัวแปร 'เอาต์พุต'

ในการแสดงผลลัพธ์ เราเรียกคำนำหน้าของ Pandas เช่น pd เป็น “.Dataframe()” และส่งเอาต์พุตจากโมเดลตัวแยกประเภทไปยังฟังก์ชันนี้ ตอนนี้แสดงผลลัพธ์จากโมเดลตัวแยกประเภทตามที่แสดงในตัวอย่างข้อมูลเอาต์พุตต่อไปนี้ โมเดลลักษณนามของเราจัดประเภทข้อความเป็นคลาสเชิงบวก

!pip ติดตั้งหม้อแปลง
จากท่อนำเข้าหม้อแปลงไฟฟ้า
นำเข้าแพนด้าเป็น pd
ลักษณนาม = ไปป์ไลน์ ('การจำแนกข้อความ', รุ่น = 'textattack/distilbert-base-uncased-CoLA')
ข้อความ = 'ฉันเป็นคนดี'
ผลลัพธ์ = ลักษณนาม (ข้อความ)
pprint(ผลลัพธ์)
df = pd.DataFrame (ผลลัพธ์)

บทสรุป

คู่มือนี้ครอบคลุมสถาปัตยกรรมหม้อแปลงไฟฟ้าจาก Hugging Face เราได้พูดถึงห้องสมุด 'ไปป์ไลน์' จากหม้อแปลง Hugging Face จากนั้น ด้วยความช่วยเหลือของห้องสมุดนี้ เราใช้แบบจำลองหม้อแปลงที่ผ่านการฝึกอบรมมาล่วงหน้าสำหรับการสร้างข้อความและการจัดหมวดหมู่