วิเคราะห์: การรันโมเดลโอเพนเวทเองบนเซิร์ฟเวอร์ตัวเอง — สมการที่ตัดสินความคุ้มค่า และต้นทุนที่ไม่มีใครตั้งงบไว้ล่วงหน้า
จุดคุ้มทุนระหว่างการใช้ API แบบโฮสต์กับการลงทุน GPU ของตัวเองเป็นคำถามเรื่องอัตราการใช้งาน ไม่ใช่คำถามเชิงอุดมการณ์ มาดูวิธีคำนวณอย่างตรงไปตรงมา พร้อมต้นทุนสี่รายการที่มักหายไปจากการประเมินครั้งแรกเสมอ
คำตอบโดยย่อ
การรันโมเดลโอเพนเวทเองคุ้มกว่าการใช้ API แบบโฮสต์จริงหรือไม่?
คุ้มก็ต่อเมื่อมีอัตราการใช้งานสูงและสม่ำเสมอเท่านั้น การรันเองคือการเปลี่ยนต้นทุนผันแปรต่อโทเคนให้กลายเป็นต้นทุนคงที่รายชั่วโมง จึงจะคุ้มค่าเมื่อตัวเร่งประมวลผลทำงานแทบตลอดเวลา แต่จะขาดทุนหนักเมื่อปล่อยให้ว่างงาน การเปรียบเทียบที่ตรงไปตรงมาต้องคิดต้นทุนทั้งระบบ ทั้งชั่วโมงการใช้ตัวเร่งประมวลผล ระบบสำรอง เวลาทำงานของทีมวิศวกร และงานประเมินผลที่ต้องใช้ยืนยันว่าโมเดลขนาดเล็กกว่านั้นดีพอ แล้วนำไปเทียบกับค่าใช้จ่าย API สำหรับปริมาณการใช้งานเท่ากัน ส่วนเรื่องอธิปไตยของข้อมูล ข้อกำหนดที่ตั้งจัดเก็บข้อมูล และเพดานความหน่วงต่ำสุด เป็นเหตุผลแยกต่างหากที่อาจสนับสนุนการรันเองได้ ไม่ว่าผลการคำนวณจะออกมาอย่างไรก็ตาม
ประเด็นสำคัญ
- การเรียกใช้อินเฟอเรนซ์ผ่านผู้ให้บริการเป็นต้นทุนผันแปร ส่วนการโฮสต์เองเป็นต้นทุนคงที่ การตัดสินใจทั้งหมดจึงขึ้นอยู่กับจุดที่เส้นการใช้งานของคุณตัดผ่านเส้นแบ่งนั้น
- ตัวเร่งประมวลผลที่ว่างงานคือรูปแบบความล้มเหลวที่พบบ่อยที่สุด คลัสเตอร์ที่ออกแบบมารองรับช่วงพีคแต่ใช้งานจริงเฉลี่ยเพียง 15% ก็เท่ากับกำลังจ่ายราคาช่วงพีคเพื่อรองรับทราฟฟิกนอกช่วงพีค
- ค่าใช้จ่ายสี่รายการที่มักหายไปจากการประเมินครั้งแรกแทบทุกครั้ง ได้แก่ ความซ้ำซ้อนของระบบ เวลาของทีมวิศวกร การประเมินผล และวงจรการอัปเกรดที่ไม่มีวันสิ้นสุด
- การจัดกลุ่มคำขอ (batching) และการลดขนาดโมเดล (quantisation) เปลี่ยนสมการต้นทุนได้มากกว่าการเลือกฮาร์ดแวร์เสียอีก ปริมาณงานต่อตัวเร่งประมวลผลเป็นคุณสมบัติของซอฟต์แวร์พอๆ กับที่เป็นคุณสมบัติของชิป
- ข้อกำหนดเรื่องถิ่นที่อยู่ของข้อมูล การทำงานแบบออฟไลน์ และเพดานความหน่วงที่เข้มงวด ล้วนเป็นเหตุผลที่ชอบธรรมในการโฮสต์เอง โดยไม่ต้องพึ่งพาเรื่องต้นทุนเลยแม้แต่น้อย
การถกเถียงเรื่องการโฮสต์ระบบด้วยตนเองมักเต็มไปด้วยข้อโต้แย้งที่ไม่สมเหตุสมผลจากทั้งสองฝ่ายอย่างผิดปกติ ฝ่ายหนึ่งมองว่าเป็นเรื่องชัดเจนว่าการเป็นเจ้าของโครงสร้างพื้นฐานเองย่อมถูกกว่า เพราะค่าน้ำหนักโมเดลเปิดให้ใช้ฟรี อีกฝ่ายก็มองว่าเป็นเรื่องชัดเจนเช่นกันว่าไม่มีใครควรเดินระบบตัวเร่งการประมวลผลเอง เพราะผู้ให้บริการคลาวด์รายใหญ่ย่อมใช้งานทรัพยากรได้คุ้มกว่าที่คุณจะทำได้
ทั้งสองฝ่ายกำลังอธิบายเส้นโค้งเดียวกันจากคนละด้าน การอนุมานผ่านบริการโฮสต์เป็นต้นทุนผันแปร ส่วนการโฮสต์เองเป็นต้นทุนคงที่ และทุกการตัดสินใจในโลกจริงล้วนขึ้นอยู่กับว่าภาระงานนั้นอยู่ตรงไหนเมื่อเทียบกับจุดตัดของต้นทุนทั้งสองแบบ
รูปแบบของการเปรียบเทียบ
เขียนต้นทุนทั้งสองฝั่งให้อยู่ในหน่วยเดียวกัน
API แบบโฮสต์คิดค่าบริการต่อโทเคน การใช้อินพุตสิบล้านโทเคนและเอาต์พุตสองล้านโทเคนต่อวันมีค่าใช้จ่ายที่คาดการณ์ได้ และยอดเรียกเก็บจะเพิ่มหรือลดเป็นเส้นตรงตามปริมาณการใช้งาน หากเป็นช่วงสุดสัปดาห์ที่มีงานน้อย ค่าใช้จ่ายก็ลดลง
การโฮสต์เองมีค่าใช้จ่ายตามจำนวนชั่วโมงที่ใช้ตัวเร่งการประมวลผล ไม่ว่าจะมีคำขอเข้ามาหรือไม่ก็ตาม ค่าเช่า GPU สำหรับศูนย์ข้อมูลรุ่นปัจจุบันจากผู้ให้บริการส่วนใหญ่อยู่ที่ไม่กี่ดอลลาร์ต่อชั่วโมงต่อการ์ด โดยแตกต่างกันมากตามภูมิภาค ระยะเวลาผูกพัน และระดับของผู้ให้บริการ ส่วนฮาร์ดแวร์ที่ซื้อเป็นของตนเองจะเปลี่ยนต้นทุนดังกล่าวเป็นรายจ่ายลงทุน รวมถึงค่าไฟ ระบบระบายความร้อน และค่าเสื่อมราคา ซึ่งเมื่อเฉลี่ยตลอดอายุใช้งานแล้วมักอยู่ในระดับใกล้เคียงกัน ประเด็นสำคัญคือทั้งสองกรณีคิดต้นทุนต่อชั่วโมง ไม่ใช่ต่อโทเคน
ดังนั้น การคำนวณจึงเป็นดังนี้:
ผลที่มักทำให้ทีมคาดการณ์ผิดคือแถวที่สอง คลัสเตอร์ที่จัดขนาดไว้รองรับภาระงานสูงสุด แต่มีอัตราการใช้งานเฉลี่ยเพียง 15% เท่ากับกำลังจ่ายค่ากำลังการประมวลผลระดับสูงสุดตลอดเวลา เพื่อรองรับทราฟฟิกที่เข้ามาเป็นระลอก การเปรียบเทียบราคาต่อโทเคนที่ดูคุ้มค่าเมื่อใช้ทรัพยากรเต็มกำลังจึงคลาดเคลื่อนไปถึงหกเท่าเมื่อเทียบกับการใช้งานเฉลี่ยจริง
ปริมาณงานที่รองรับได้ขึ้นอยู่กับซอฟต์แวร์
ข้อผิดพลาดในการวิเคราะห์ที่พบบ่อยที่สุดคือการมองว่าปริมาณงานที่รองรับได้ถูกกำหนดโดยฮาร์ดแวร์ ทั้งที่จริงแล้วสแตกซอฟต์แวร์สำหรับให้บริการมีอิทธิพลไม่น้อยไปกว่ากัน
การประมวลผลเป็นชุด เป็นปัจจัยหลัก การให้บริการทีละคำขอบนตัวเร่งการประมวลผลขนาดใหญ่ทำให้ทรัพยากรส่วนใหญ่สูญเปล่า ส่วนการประมวลผลเป็นชุดอย่างต่อเนื่อง ซึ่งเปิดให้คำขอใหม่เข้าร่วมชุดที่กำลังประมวลผลอยู่แทนที่จะรอให้ชุดเดิมเสร็จ สามารถเพิ่มปริมาณงานบนการ์ดใบเดิมได้หลายเท่า แบบจำลองต้นทุนสำหรับการโฮสต์เองที่อ้างอิงผลทดสอบแบบทีละคำขอจึงอาจผิดพลาดในระดับเดียวกัน
การควอนไทซ์ เปลี่ยนขนาดของสิ่งที่บรรจุลงในหน่วยความจำได้ การให้บริการค่าน้ำหนักด้วยความแม่นยำแบบ 8 บิตหรือ 4 บิตช่วยลดความต้องการหน่วยความจำได้อย่างมาก จนอาจทำให้โมเดลที่เดิมต้องใช้การ์ดสองใบเหลือเพียงใบเดียว และการใช้การ์ดหนึ่งใบแทนสองใบไม่ได้เพียงลดค่าใช้จ่ายลง 50% แต่ยังขจัดความซับซ้อนด้านการเชื่อมต่อระหว่างอุปกรณ์ไปทั้งหมวด วิธีควอนไทซ์หลังการฝึกสมัยใหม่มักแทบไม่ทำให้คุณภาพลดลงสำหรับงานหลายประเภท แต่คำว่า "มัก" และ "หลายประเภท" มีความสำคัญอย่างยิ่ง คุณต้องตรวจสอบกับชุดประเมินของตนเอง เพราะคุณภาพที่ลดลงแตกต่างกันไปตามลักษณะงาน และคะแนนเฉลี่ยอาจบดบังปัญหาได้
ขนาดของโมเดล เป็นตัวแปรที่ส่งผลมากที่สุด เหตุผลด้านเศรษฐศาสตร์ส่วนใหญ่ของการโฮสต์เองขึ้นอยู่กับการใช้โมเดลที่เล็กพอจะรองรับคำขอพร้อมกันจำนวนมากต่อตัวเร่งการประมวลผลหนึ่งตัว การพัฒนาอย่างต่อเนื่องของระบบนิเวศโมเดลน้ำหนักเปิดในกลุ่มโมเดลขนาดเล็กคือสิ่งที่ทำให้การโฮสต์เองกลายเป็นทางเลือกที่เป็นไปได้สำหรับผลิตภัณฑ์ทั่วไป งานที่จำเป็นต้องใช้โมเดลระดับแนวหน้าจริงๆ จะมีค่าฮาร์ดแวร์แตกต่างออกไปมาก และมีเหตุผลรองรับการโฮสต์เองน้อยกว่ามาก
ต้นทุนสี่รายการที่หายไปจากประมาณการครั้งแรก
ประมาณการเบื้องต้นสำหรับการโฮสต์เองทุกฉบับที่ผู้เขียนเคยเห็นล้วนละเลยรายการเดียวกัน
ระบบสำรองเพื่อความต่อเนื่อง โหนดเดียวเป็นเพียงระบบสาธิต ระบบใช้งานจริงต้องมีอย่างน้อยสองโหนด อยู่ในโดเมนความขัดข้องที่ต่างกัน และต้องเผื่อทรัพยากรสำหรับการเริ่มระบบใหม่แบบทยอยดำเนินการ นี่ไม่ใช่การปรับเพิ่ม 10% แต่มักหมายถึงต้นทุนฮาร์ดแวร์ที่เพิ่มเป็นสองเท่าก่อนจะคำนึงถึงการเติบโตของทราฟฟิกเสียอีก
เวลาของวิศวกร ต้องมีคนกำหนดค่าสแตกสำหรับให้บริการ ปรับพารามิเตอร์การประมวลผลเป็นชุด ตั้งค่าการปรับขนาดอัตโนมัติ เขียนระบบตรวจสอบสถานะ รับมือกับการอัปเกรดไดรเวอร์ที่ทำให้เคอร์เนลมีปัญหา และถูกเรียกตัวเมื่อปริมาณงานที่รองรับได้ทรุดฮวบตอนตีสอง หากคิดต้นทุนรวมของบุคลากรตามความเป็นจริง เวลาทำงานเพียงส่วนหนึ่งของวิศวกรหนึ่งคนต่อปีก็มักมีมูลค่าสูงกว่าค่า GPU ทั้งหมดสำหรับภาระงานขนาดกลาง นี่คือรายการที่ถูกละเลยบ่อยที่สุด และมักเป็นรายการที่ชี้ขาดการตัดสินใจ
การประเมินผล การโฮสต์เองมักหมายถึงการเปลี่ยนไปใช้โมเดลที่เล็กลง ซึ่งทำให้คุณภาพเปลี่ยนไป การยืนยันว่าคุณภาพดังกล่าวยอมรับได้จำเป็นต้องมีชุดประเมิน การทดสอบเปรียบเทียบ และวิจารณญาณในการตีความผลลัพธ์ ทั้งหมดนี้เป็นงานจริงที่ต้องทำก่อนจะประหยัดค่าใช้จ่ายได้ และต้องทำซ้ำทุกครั้งที่อัปเกรดโมเดล
วงจรการอัปเกรดที่ไม่สิ้นสุด API แบบโฮสต์พัฒนาขึ้นโดยที่คุณไม่ต้องลงมือเอง แต่สแตกที่โฮสต์เองจะดีขึ้นก็ต่อเมื่อมีคนทำงาน ตั้งแต่ประเมินโมเดลเปิดรุ่นใหม่ ปรับพารามิเตอร์การให้บริการใหม่ ทดสอบชุดประเมินซ้ำ ไปจนถึงวางแผนย้ายระบบ จึงควรกำหนดงบประมาณไว้เป็นค่าใช้จ่ายประจำ เพราะเป็นงานที่เกิดขึ้นซ้ำ
เมื่อใดที่การโฮสต์เองได้เปรียบอย่างชัดเจน
ทั้งหมดนี้ไม่ได้เป็นข้อโต้แย้งคัดค้านการโฮสต์เอง มีรูปแบบการใช้งานเฉพาะที่การโฮสต์เองเป็นคำตอบที่ถูกต้องอย่างชัดเจน
ปริมาณงานสูง สม่ำเสมอ และคาดการณ์ได้ การจำแนกข้อมูลแบบเป็นชุด ระบบประมวลผลเอกสาร การสร้างเวกเตอร์ฝังตัว คิวตรวจสอบเนื้อหา งานที่ทำงานต่อเนื่องและใช้ตัวเร่งการประมวลผลอย่างเต็มที่ ล้วนเป็นตัวเลือกที่เหมาะที่สุดสำหรับการโฮสต์เอง และการที่งานเหล่านี้จำนวนมากใช้โมเดลขนาดเล็กก็ยิ่งทำให้เหตุผลสนับสนุนหนักแน่นขึ้น
งานที่มีขอบเขตแคบพอสำหรับโมเดลขนาดเล็ก เช่น การจำแนก การดึงข้อมูล การกำหนดเส้นทาง การติดป้ายกำกับแบบมีโครงสร้าง และการแปลภายในขอบเขตเฉพาะ หากโมเดลขนาดเล็กที่เลือกมาอย่างเหมาะสมทำงานได้ด้วยคุณภาพที่ยอมรับได้ ต้นทุนต่อคำขอเมื่อเทียบกับ API ของโมเดลแนวหน้าจะแตกต่างกันอย่างชัดเจน
การทำงานแบบออฟไลน์หรือแยกขาดจากเครือข่าย ไม่มี API ใดพร้อมใช้งานไม่ว่าจะยอมจ่ายเท่าใด การตัดสินใจจึงถูกกำหนดด้วยปัจจัยอื่น
เหตุผลที่ไม่เกี่ยวกับต้นทุน
เหตุผลที่หนักแน่นที่สุดบางประการในการโฮสต์เองไม่ได้ขึ้นอยู่กับการคำนวณทางการเงิน
ข้อกำหนดด้านถิ่นที่อยู่ของข้อมูลและกฎระเบียบ ในกรณีที่ข้อมูลไม่สามารถออกจากเขตอำนาจศาลหรือขอบเขตเครือข่ายได้ การโฮสต์เองมักเป็นสถาปัตยกรรมเดียวที่ปฏิบัติตามข้อกำหนด และยังคงเป็นตัวเลือกที่ถูกต้องแม้มีค่าใช้จ่ายสูงกว่า
ขีดจำกัดขั้นต่ำของความหน่วงที่เคร่งครัด การรับส่งข้อมูลไปกลับผ่านเครือข่ายกับปลายทางแบบโฮสต์มีค่าความหน่วงขั้นต่ำที่การอนุมานในระบบภายในไม่มี สำหรับประสบการณ์แบบโต้ตอบที่มีข้อจำกัดด้านเวลาเข้มงวด เช่น เสียง ระบบช่วยเหลือแบบเรียลไทม์ และการเติมเนื้อหาในโปรแกรมแก้ไข ขีดจำกัดดังกล่าวอาจเป็นข้อกำหนด ไม่ใช่เพียงเรื่องของการเพิ่มประสิทธิภาพ
ความเสถียรของพฤติกรรม โมเดลแบบโฮสต์อาจเปลี่ยนแปลงโดยที่คุณควบคุมไม่ได้ แต่จุดตรวจสอบของโมเดลภายในที่ตรึงเวอร์ชันไว้จะไม่เปลี่ยน สำหรับระบบที่ปรับแต่งอย่างละเอียดตามพฤติกรรมเฉพาะของโมเดล ความเสถียรนี้มีมูลค่าที่ไม่ปรากฏอยู่ในใบแจ้งหนี้ใดๆ
ความเป็นอิสระจากแผนงานของผู้ให้บริการ กำหนดการยุติการสนับสนุน เพดานอัตราการใช้งาน ความพร้อมให้บริการในแต่ละภูมิภาค และข้อกำหนดการใช้บริการ ล้วนเป็นสิ่งที่ผู้อื่นเป็นผู้ตัดสินใจ การเป็นเจ้าของค่าน้ำหนักช่วยขจัดการพึ่งพาดังกล่าว แลกกับการต้องรับผิดชอบทุกอย่างที่เหลือด้วยตนเอง
คำตอบที่ทีมส่วนใหญ่ลงเอย
ในทางปฏิบัติ ระบบใช้งานจริงส่วนใหญ่มักไม่ได้เลือกขั้วใดขั้วหนึ่ง แต่ใช้ การจัดเส้นทางคำขอ โดยให้โมเดลขนาดเล็กที่โฮสต์เองจัดการทราฟฟิกส่วนใหญ่ซึ่งมีปริมาณสูงและเข้าใจลักษณะงานดีแล้ว ส่วนโมเดลแนวหน้าแบบโฮสต์รับมือกับงานส่วนยากที่เหลือ เช่น กรณีที่กำกวม เอกสารขนาดยาว และคำขอที่คุณภาพมีความสำคัญมากกว่าต้นทุน
แนวทางนี้ช่วยประหยัดค่าใช้จ่ายได้เป็นส่วนใหญ่ เพราะทราฟฟิกปริมาณสูงคือแหล่งต้นทุนหลัก ขณะเดียวกันก็ยังรักษาเพดานคุณภาพที่โมเดลขนาดเล็กไม่อาจไปถึงได้ด้วยตนเอง อีกทั้งยังรองรับความขัดข้องได้อย่างราบรื่น หากคลัสเตอร์ภายในล้มเหลว ทราฟฟิกจะถูกส่งกลับไปยัง API ซึ่งมีต้นทุนสูงกว่า แทนที่จะทำให้บริการหยุดชะงัก
สิ่งหนึ่งที่ควรยืนยันให้หนักแน่นคือ การตัดสินใจต้องอาศัยตัวเลขจริง วัดเส้นโค้งอัตราการใช้งานของคุณเอง ทดสอบปริมาณงานโดยเปิดใช้การประมวลผลเป็นชุด คำนวณต้นทุนงานวิศวกรรมตามเงินเดือนจริง และรวมงานประเมินผลไว้ด้วย เมื่อทำเช่นนี้ คำตอบมักชัดเจนขึ้นเอง แต่หากละเลย คุณอาจลงเอยด้วยการปกป้องจุดยืนที่เลือกไว้ตั้งแต่ก่อนจะมีข้อมูลใดๆ
คำถามที่พบบ่อย
- ต้องมีอัตราการใช้งานเท่าใดจึงจะคุ้มค่ากับการโฮสต์เอง
- ไม่มีตัวเลขสากลที่ใช้ได้กับทุกกรณี เพราะขึ้นอยู่กับขนาดโมเดล ประสิทธิภาพของการจัดกลุ่มคำขอ และราคา API ที่นำมาเปรียบเทียบ แต่โครงสร้างโดยรวมค่อนข้างแน่นอน กล่าวคือ การใช้งานในระดับสูงอย่างต่อเนื่องเอื้อต่อการโฮสต์เอง ส่วนทราฟฟิกที่พุ่งเป็นช่วงๆ หรือมีปริมาณต่ำเอื้อต่อการใช้ API และจุดคุ้มทุนมักสูงกว่าที่ทีมงานส่วนใหญ่คาดไว้มาก
- โมเดลโอเพนซอร์สขนาดเล็กช่วยให้ง่ายขึ้นหรือไม่
- ช่วยได้อย่างมาก เหตุผลเชิงเศรษฐศาสตร์ส่วนใหญ่ที่สนับสนุนการโฮสต์เองตั้งอยู่บนพื้นฐานของการใช้โมเดลที่มีขนาดเล็กพอจะรองรับคำขอพร้อมกันจำนวนมากต่อตัวเร่งประมวลผลหนึ่งตัว หากงานของคุณจำเป็นต้องใช้โมเดลระดับแนวหน้าจริงๆ ความต้องการด้านฮาร์ดแวร์จะเพิ่มขึ้นอย่างรวดเร็ว และเหตุผลสนับสนุนการโฮสต์เองก็จะอ่อนลง
- การลดขนาดโมเดล (quantisation) ทำให้สูญเสียความแม่นยำโดยไม่มีต้นทุนใช่หรือไม่
- ไม่ใช่ แต่รูปแบบการลดขนาดโมเดลแบบ 4 บิตและ 8 บิตในปัจจุบันมักให้ผลลัพธ์ใกล้เคียงกับต้นฉบับแทบไม่สูญเสียความแม่นยำในหลายงาน ขณะที่ลดการใช้หน่วยความจำลงได้อย่างมาก ทั้งนี้ต้องตรวจสอบกับชุดข้อมูลประเมินผลของตัวเองเสมอ เพราะความเสื่อมประสิทธิภาพขึ้นอยู่กับลักษณะงาน และค่าเฉลี่ยมักซ่อนปัญหาดังกล่าวไว้
- แล้วการใช้งานแบบผสมผสาน (hybrid) ล่ะ
- รูปแบบไฮบริดคือคำตอบที่ใช้กันทั่วไปในระบบจริง กล่าวคือ ใช้โมเดลขนาดเล็กที่โฮสต์เองรองรับทราฟฟิกปริมาณสูงที่เข้าใจรูปแบบได้ดีอยู่แล้ว ส่วนโมเดลระดับแนวหน้าที่โฮสต์โดยผู้ให้บริการรับมือกับกรณีที่ซับซ้อนซึ่งเป็นส่วนน้อย วิธีนี้ช่วยประหยัดต้นทุนได้เกือบทั้งหมดโดยไม่ต้องเดิมพันทั้งผลิตภัณฑ์ไว้กับสถาปัตยกรรมเดียว
- มีบางกรณีหรือไม่ที่เหตุผลนอกเหนือจากต้นทุนมีน้ำหนักเหนือกว่า
- มีบ่อยครั้ง ข้อมูลที่อยู่ภายใต้กฎระเบียบและห้ามนำออกนอกเขตอำนาจศาล สภาพแวดล้อมที่ตัดขาดจากเครือข่ายภายนอก และแอปพลิเคชันที่มีเพดานความหน่วงเข้มงวด ล้วนเป็นกรณีที่องค์กรเลือกโฮสต์เองแม้ต้นทุนโดยรวมจะด้อยกว่า และนั่นก็ถือเป็นการตัดสินใจที่มีเหตุผลรองรับอย่างเหมาะสม
แหล่งข้อมูล
- vLLM documentation — vLLM
- llama.cpp — ggml
- GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers — arXiv
- API pricing — OpenAI