การสัมภาษณ์ด้วยตนเองสำหรับโมเดลการเข้ารหัส AI
11/21 โครงการนี้ใช้งานยากเกินไปและฉันเป็นผู้ดูแล! ฉันใช้เวลา refactoring สคริปต์สัมภาษณ์การอัปเดตข้อกำหนด TXT และมีคู่มือการประเมินผลใหม่สำหรับการประเมินทั้งรุ่นและ API
11/20 ประเมิน CodeQwen2.5 อีกครั้ง (น้ำหนักใหม่) ประเมิน Mistral-Small-2409 และ Ministral-8B-2410 ประเมิน GPT-4O-20124-11-20
11/13 ประเมิน QWEN2.5 (32B ที่ FP16, GGUF Q8, EXL2 8BPW), OpenCoder (1.5B และ 8B ที่ FP16)
10/26 ประเมิน QWEN2.5 (3B, 7B, 14B FP16 | 14B, 32B, 72B AWQ) และ QWEN-CODER2.5
10/26 อัปเดตการประเมินผลของโมเดล OpenAI, Mistral และมานุษยวิทยาทั้งหมดที่มีอยู่ทั้งหมด
10/25 ประเมินครอบครัว IBM-Granite/Granite-3.0 (8B หนาแน่น, 2B หนาแน่น, 1B MOE, 3B MOE) ต้องหยุดพักสั้น ๆ เนื่องจากการสลับงาน แต่ตอนนี้กำลังทำงานเพื่อติดตามงานในมือดังนั้นปัญหาที่เปิดกว้างหากมีรูปแบบรหัสที่น่าสนใจหรือครอบครัวใหม่ในช่วงเวลา ~ 6 สัปดาห์ที่ผ่านมาฉันพลาด! QWEN2.5 และ LLAMA3.2 จะเปิดตัวในสุดสัปดาห์นี้
9/12 แก้ไขข้อผิดพลาดแบบอนุกรมในผู้ประเมินซึ่งส่งผลเสียต่อผลลัพธ์สี่ประการ: Deepseek-Deepseek-Coder-V2-Lite-Instruct-FP16, IBM-Granite-Granite-8B-Code-Instruct-NF4, Ajibawa-2023- Code-Llama-3-8B, Ollama-Phi3: 3.8b-Mini-Instruct-4K-FP16
9/11 ประเมิน yi-coder-1.5b-chat และ yi-coder-9b-chat (FP16) โดยเฉพาะอย่างยิ่ง 9b นั้นแข็งแกร่งมาก
junior-v2
เป็นชุดหลายภาษา (Python, JavaScript) ของการทดสอบ 12 ครั้งที่สร้างขึ้นสำหรับโครงการนี้เพื่อทดสอบประสิทธิภาพการเข้ารหัส LLM ขนาดเล็ก โครงการนี้ให้ส่วนประกอบที่จำเป็นทั้งหมดเพื่อดำเนินการประเมินนี้
- humaneval
เป็นชุดงูหลามอย่างเดียวของการทดสอบ 164 ครั้งที่ Openai สร้างขึ้น โครงการนี้ให้สคริปต์เทมเพลตเพื่อเตรียมและดำเนินการสัมภาษณ์ Humaneval รวมถึงสคริปต์การสกัดผลลัพธ์เพื่อช่วยผู้ประเมินของพวกเขา ดู https://github.com/openai/human-eval สำหรับข้อมูลเพิ่มเติม
ตอนนี้คำตอบและผลการประเมินผลทั้งหมดรวมอยู่ในที่เก็บนี้! ติดตั้งรีลีสล่าสุดของ StreamLit pip install streamlit==1.23
จากนั้น streamlit run app.py
หรือ streamlit run compare-app.py
เพื่อเรียกใช้ webapps ด้านบนในเครื่อง
- งาน Humaneval/ Development ถูกหยุดชั่วคราวมีโครงการอื่น ๆ ที่อยู่ไกลออกไป
ดู https://github.com/my-other-github-account/llm-humaneval-benchmarks และ https://github.com/abacaj/code-eval สำหรับรายการขนาดใหญ่ของ Humaneval LLM
junior-v2/*.yaml
- คำถามสัมภาษณ์ Junior Coder (เสถียร)senior/*.yaml
- คำถามสัมภาษณ์โค้ดอาวุโส (WIP)prompts/*.txt
- เทมเพลตพรอมต์ LLM สำหรับรุ่นต่างๆprepare.py
ใช้เทมเพลตเพื่อตั้งคำถามการเปลี่ยนเป็นภาษาและแบบจำลองเฉพาะที่เหมาะสมสำหรับการสัมภาษณ์ ดูพรอมต์/ สำหรับการอ้างอิงพร้อมท์ทั้งหมดในกระดานผู้นำ
params/*.json
- การสุ่มตัวอย่างชุดพารามิเตอร์ไฮเปอร์พารามิเตอร์ (ใช้โดยสคริปต์สัมภาษณ์ทั้งหมด)interview-*.py
- สคริปต์สัมภาษณ์ ดูพารามิเตอร์/ สำหรับการอ้างอิงพารามิเตอร์ทั้งหมดในลีดเดอร์บอร์ด
evaluate.py
. py - เรียกใช้การทดสอบสำหรับรหัสที่สร้างขึ้นในกล่องทรายและเกรดแต่ละคำตอบapp.py
-Streamlit Webapp เพื่อสำรวจผลลัพธ์ดู https://huggingface.co/spaces/mike-ravkine/can-ai-code-resultscompare.py
- ทำการเปรียบเทียบระหว่างการประเมินcompare-app.py
-Streamlit Webapp เพื่อสำรวจการเปรียบเทียบดู https://huggingface.co/spaces/mike-ravkine/can-ai-code-comparecompare/*.yaml
- เปรียบเทียบการกำหนดค่าcompare/*.json
- เปรียบเทียบผลลัพธ์ API Runtime | สคริปต์ |
---|---|
Litellm (Openai ฯลฯ ) | interview-litellm.py |
Oobabooga/koboldcpp | interview-oobabooga.py |
การอนุมานการกอด | interview-hfinference.py |
Gradio (HF Spaces) | interview-gradio.py |
ประเภทปริมาณ | สคริปต์ | การพึ่งพาอาศัยกัน |
---|---|---|
GGUF | interview-llamacpp.py | llamacpp หรือ ggml binary |
GPTQ (AUTOGPTQ) | interview-cuda.py | Auto-GPTQ == 0.6.0 |
GPTQ (exllama) | interview-cuda.py | exllama @ 3B013CD53C7D413CF99CA04C7C28DD5C95117C0D |
exl2, gptq (exllama2) | interview-cuda.py | exllamav2 @ 0.0.12 |
HQQ | interview-cuda.py | HQQ @ 0.1.1 |
AWQ, FP16 (VLLM) | interview-cuda.py | vllm == 0.3.0 |
ctranslate2 | interview-cuda.py | ctranslate2> = 3.16.0 |
บาท | interview-cuda.py | Bitsandbytes == 0.41.3 |
FP16 (Transformers) | interview-cuda.py | Transformers == 4.37.2 |
wrapper modal ที่แนะนำคือ interview_modal_cuda11.py
ซึ่งสร้างคอนเทนเนอร์ที่ใช้ cuda11.8 พร้อมกับการพึ่งพาทั้งหมดข้างต้นที่ทำงาน interview_modal_cuda12.py
ยังมีให้ แต่ AutoGPTQ และ CTRANSLATE2 นั้นเข้ากันไม่ได้
น่าเสียดายที่ธรรมชาติของ Modal ไม่อนุญาตให้เลือกบรรทัดคำสั่งของรุ่น Eitehr LLM หรือเครื่องยนต์รันไทม์
ในการเลือกรุ่นให้เปิดสคริปต์และยกเลิกการเลือกบรรทัดที่เลือก. .run_function(download...)
โปรดทราบว่าสามารถเลือกรุ่นเดียวได้ในแต่ละครั้ง หากต้องการเพิ่มโมเดลใหม่ให้ใช้ฟังก์ชั่น download...
ในการเลือกรันไทม์ให้เปิดสคริปต์และไม่สม่ำเสมอหนึ่งในตัวเลือก RUNTIME
โปรดทราบว่าสำหรับ transformers
คุณต้องระบุ QUANT
ด้วย
ชุดคำถามสัมภาษณ์เป็นโฟลเดอร์ของไฟล์. yaml แต่ละคำถามคือคีย์ระดับบนสุด:
SanityList :
Signature : " things() "
Input : " with no inputs "
Output : " a list with three values: the number 5, the string 'foobar', the capital city of Spain "
Fact : " the capital city of Spain is Madrid "
Description : " List function, see if the model can combine input facts with internal knowledge. "
Checks :
input_name :
assert : " f.name "
eq : " things "
ในตัวอย่างนี้ SanityList
เป็นชื่อของคำถามสัมภาษณ์
สี่ฟิลด์แรกถูกใช้โดย prepare.py
เพื่อสร้างการสัมภาษณ์:
Signature
เป็นลายเซ็นฟังก์ชั่นที่ต้องการInput
อธิบายอินพุตฟังก์ชันOutput
อธิบายเอาต์พุตฟังก์ชั่นFact
เป็นทางเลือกและให้บริบทใด ๆ ที่จำเป็นในการปฏิบัติงานอย่างถูกต้อง ตัวแปร 4 ตัวเหล่านี้พร้อมกับ language
( python
หรือ javascript
) ใช้เพื่อขยายเทมเพลตใน prompts/
สองฟิลด์สุดท้ายถูกใช้โดย evaluate.py
เพื่อตัดสินผลลัพธ์:
Description
เป็นคำอธิบายที่มนุษย์อ่านได้ว่าทำไมการทดสอบนี้จึงมีประโยชน์Checks
กำหนดพฤติกรรมที่คาดหวังของผลลัพธ์ การตรวจสอบแต่ละครั้งมีชื่อบางค่า assert
(รหัส Python) และค่า eq
ที่คาดหวัง
วัตถุ F แสดงมุมมอง Sandbox ของฟังก์ชั่น การวิเคราะห์แบบคงที่ดำเนินการบนลายเซ็นฟังก์ชั่นเพื่อแยกฟิลด์ f.name
และ f.args
ในขณะที่ f.call
อนุญาตให้มีการประเมินฟังก์ชั่น
สคริปต์เอาต์พุตทั้งหมดชื่อไฟล์. ndjson โดยอัตโนมัติไปยัง results/
ไดเรกทอรี
แต่ละขั้นตอนจะส่งผลประโยชน์สูงสุดของฟิลด์จากเวทีก่อนหน้านี้ดังนั้นจึงเป็นไปได้ที่จะป้อนการประเมิน/สัมภาษณ์กลับไปสัมภาษณ์ (เพื่อเรียกใช้คำถามอีกครั้ง) หรือกลับไปที่ Eval (เพื่อเรียกใช้การประเมินอีกครั้ง)
results/prepare_{interview}_{languages}_{template}.ndjson
ฟิลด์:
results/interview_{interview}_{languages}_{template}_{templateout}_{params}_{model}_{timestamp}.ndjson
ฟิลด์:
prepare
ความพร้อมทั้งหมด results/eval_{interview}_{languages}_{template}_{templateout}_{params}_{model}_{timestamp}.ndjson
ฟิลด์:
eval
ทั้งหมด