Hugging Face เปิดตัว Model Integration Contracts กันบั๊กหลุดลง Main

· By: TanasakP

เมื่อวันที่ 30 กรกฎาคม 2026 Transformers ได้เปิดใช้งาน scaled dot-product attention (SDPA) ของ PyTorch สำหรับ T5 ซึ่งส่งผลกระทบข้างเคียงทำให้ decoder ของ UMT5 สามารถเข้าถึง token ในอนาคตได้ บั๊กนี้ทำให้โมเดลแอบดูคำตอบที่ควรจะทำนายในระหว่าง training และค้างอยู่ใน main นานเกือบสองเดือน

จากการทดสอบย้อนรอย (replay) พบว่าโมเดล UMT5 ขนาดเล็กที่รันบน CPU สามารถตรวจพบความผิดปกตินี้ได้ในทุก commit บทความนี้จึงขอแนะนำโมเดลทดสอบรูปแบบใหม่และการทดสอบที่สร้างขึ้นมาเพื่อแก้ปัญหานี้โดยเฉพาะ

ทำไม bug ถึงหลุดไปถึง main

Transformers รองรับโมเดลกว่า 750 ประเภท ทำให้ชุดทดสอบมีขนาดใหญ่มาก โดยมีการทดสอบบน CPU มากกว่า 88,000 รายการบน main และการทดสอบบน GPU อีกกว่า 200,000 รายการต่อวัน ครอบคลุมทั้ง pipelines, training, distributed execution, quantization และ attention kernels

การทดสอบแบบ integration ต้องโหลด checkpoint จริงบนฮาร์ดแวร์จริง ซึ่งใช้ทรัพยากร GPU มหาศาลจนไม่สามารถรันในทุก PR ได้ ทำให้กว่าจะพบ regression บั๊กมักเข้าสู่ main ไปเรียบร้อยแล้ว

แนวทางใหม่คือการสร้าง fixture หรือโมเดลขนาดเล็กที่จำลองโครงสร้างจาก checkpoint จริงแต่มีจำนวน layer น้อยลง ตัวอย่างเช่น fixture ของ UMT5 รุ่นทดลองใช้เนื้อที่เพียง 66 MB เทียบกับของจริงที่ 1,227 MB ช่วยให้รัน "fast integration tests" บน CPU ได้รวดเร็วและราคาถูก โดยช่วยตรวจจับบั๊กได้ก่อนที่ PR จะถูกรวมเข้าสู่ main

ขอแนะนำ Model Integration Contracts

transformers-mic คือมาตรฐานที่เสนอขึ้นสำหรับการทดสอบเหล่านี้ โดย Model Integration Contract (MIC) ประกอบด้วย 3 ส่วนสำคัญ ได้แก่ fixture (โมเดลย่อส่วน), usage path (ตัวอย่างโค้ดใช้งานจริง) และ baselines (ผลลัพธ์ที่ตรวจสอบแล้ว)

สัญญาหนึ่งฉบับจะครอบคลุมหนึ่งสถาปัตยกรรม (architecture) ทำให้ checkpoint ที่เข้ากันได้สามารถใช้ fixture ร่วมกันได้ โดยมีการเผยแพร่ไว้ที่ huggingface-mic

ตัวอย่างเช่น สัญญาของ SmolLM จะทดสอบการสร้างข้อความจาก prompt และเปรียบเทียบ token IDs กับค่าที่บันทึกไว้ ดังนี้:

inputs = tokenizer("The capital of France is", return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=4, do_sample=False)
new_tokens = outputs[:, inputs["input_ids"].shape[1]:]
print(tokenizer.batch_decode(new_tokens, skip_special_tokens=True))

นอกจากนี้ยังตรวจสอบ training loss และค่า gradients เพื่อยืนยันความถูกต้องของขั้นตอนการปรับ weights โดยละเอียดใน usage.md

UMT5 regression

ผลการย้อนรอยด้วย MIC ตลอด 5 เดือนพบว่า fixture ของ UMT5 สามารถตรวจพบ regression ได้ทันทีตั้งแต่วันที่ 30 กรกฎาคม 2026 โดยค่า log-probabilities และ training loss ต่างจาก baseline อย่างชัดเจน

ในการรันบน CI ของ Transformers ขั้นตอนการตรวจสอบสัญญา T5 ใช้เวลาเพียง 13.4 วินาทีบน CPU (ไม่รวมเวลา setup) สามารถดูรายละเอียดได้ที่ ผลการย้อนรอย และ การสาธิต CI

วิธีการย่อส่วนโมเดล

สูตรการสร้าง fixture มี 4 ขั้นตอนหลัก เริ่มจากการย่อส่วน configuration โดยลดขนาด hidden sizes และ heads แต่ยังคงประเภท layer ที่แตกต่างกันไว้ เช่น MoE หรือ sliding attention จากนั้นคงส่วน preprocessing (tokenizer/processor) ไว้เหมือนต้นฉบับทุกประการ

ขั้นตอนต่อมาคือการสร้างและตรวจสอบ weights โดยใช้ seeded random weights หรือการทำ overfitting กับชุดข้อมูลขนาดเล็ก และสุดท้ายคือการแช่แข็ง (freeze) บันทึก snapshot ที่ระบุเวอร์ชันเพื่อนำกลับมาใช้ซ้ำใน CI โดยไม่ต้องสร้างใหม่ทุกครั้ง

ตัวอย่างจาก รายงาน Llama 4 Scout พบว่าสามารถย่อโมเดลจาก 108.6 พันล้านพารามิเตอร์ เหลือเพียง 44.7 ล้านพารามิเตอร์ แต่ยังคงคุณลักษณะสำคัญของสถาปัตยกรรมไว้ได้ครบถ้วน

การสร้าง MICs ด้วย agents

เครื่องมือ CLI tmic ช่วยให้นักพัฒนาสร้างสัญญาได้ง่ายขึ้น โดยใช้ LLM ช่วยร่างโค้ด usage และ manifest ส่วนการวัดค่า baseline จะทำบนฮาร์ดแวร์จริงของผู้ใช้

pip install "transformers-mic[runtime]" "hf-doc-builder @ git+https://github.com/huggingface/doc-builder.git"
hf auth login
tmic run org/model --local-only --fixtures-only --no-history --bill-to ''

เป้าหมายสูงสุดคือการเชื่อมโยงหน้าโมเดลบน Hub เข้ากับ MICs เพื่อให้เหล่านักพัฒนาหรือ AI agent สามารถเริ่มต้นใช้งานจากตัวอย่างที่ผ่านการทดสอบมาแล้วอย่างมั่นใจ ผู้ที่สนใจสามารถร่วมตรวจสอบสัญญาหรือสนับสนุน usage path ได้ที่ พื้นที่ครอบคลุม (coverage space)

Source: Hugging Face Blog
ดูแลงานแปลและเรียบเรียงโดย TanasakP

ความคิดเห็น (0)

เข้าสู่ระบบเพื่อร่วมแสดงความเห็น

สมัครสมาชิก

มาเป็นคนแรกที่แสดงความเห็นกันเลยโบร