พื้นที่เก็บข้อมูลอย่างเป็นทางการของคู่มือวิศวกร LLM โดย Paul Iusztin และ Maxime Labonne
เป้าหมายของหนังสือเล่มนี้คือการสร้างระบบที่ใช้ LLM แบบ end-to-end ของคุณเองโดยใช้แนวปฏิบัติที่ดีที่สุด:
คุณสามารถดาวน์โหลดและใช้โมเดลที่ผ่านการฝึกอบรมขั้นสุดท้ายได้บน Hugging Face
หากต้องการติดตั้งและรันโปรเจ็กต์ในเครื่อง คุณต้องมีการอ้างอิงต่อไปนี้
เครื่องมือ | เวอร์ชัน | วัตถุประสงค์ | ลิงค์การติดตั้ง |
---|---|---|---|
เปียนวี | ≥2.3.36 | Python หลายเวอร์ชัน (ไม่บังคับ) | คู่มือการติดตั้ง |
หลาม | 3.11 | สภาพแวดล้อมรันไทม์ | ดาวน์โหลด |
บทกวี | ≥1.8.3 | การจัดการแพ็คเกจ | คู่มือการติดตั้ง |
นักเทียบท่า | ≥27.1.1 | การบรรจุหีบห่อ | คู่มือการติดตั้ง |
AWS CLI | ≥2.15.42 | การจัดการระบบคลาวด์ | คู่มือการติดตั้ง |
คอมไพล์ | ≥2.44.0 | การควบคุมเวอร์ชัน | ดาวน์โหลด |
รหัสยังใช้และขึ้นอยู่กับบริการคลาวด์ต่อไปนี้ คุณไม่จำเป็นต้องทำอะไรในตอนนี้ เราจะแนะนำคุณในส่วนการติดตั้งและการปรับใช้เกี่ยวกับวิธีการใช้งาน:
บริการ | วัตถุประสงค์ |
---|---|
กอดใบหน้า | ทะเบียนโมเดล |
ดาวหาง ML | ตัวติดตามการทดลอง |
บทวิเคราะห์ | การติดตามอย่างทันท่วงที |
เซนเอ็มแอล | เลเยอร์ออร์เคสตราและอาร์ติแฟกต์ |
AWS | การคำนวณและการจัดเก็บข้อมูล |
MongoDB | ฐานข้อมูล NoSQL |
คิวดรานท์ | ฐานข้อมูลเวกเตอร์ |
การดำเนินการ GitHub | ไปป์ไลน์ CI/CD |
ในคู่มือวิศวกร LLM บทที่ 2 จะแนะนำคุณเกี่ยวกับเครื่องมือแต่ละอย่าง บทที่ 10 และ 11 ให้คำแนะนำทีละขั้นตอนเกี่ยวกับวิธีตั้งค่าทุกสิ่งที่คุณต้องการ
นี่คือภาพรวมของไดเร็กทอรี:
.
├── code_snippets/ # Standalone example code
├── configs/ # Pipeline configuration files
├── llm_engineering/ # Core project package
│ ├── application/
│ ├── domain/
│ ├── infrastructure/
│ ├── model/
├── pipelines/ # ML pipeline definitions
├── steps/ # Pipeline components
├── tests/ # Test examples
├── tools/ # Utility scripts
│ ├── run.py
│ ├── ml_service.py
│ ├── rag.py
│ ├── data_warehouse.py
llm_engineering/
เป็นแพ็คเกจ Python หลักที่ใช้ฟังก์ชัน LLM และ RAG เป็นไปตามหลักการออกแบบที่ขับเคลื่อนด้วยโดเมน (DDD):
domain/
: หน่วยงานและโครงสร้างธุรกิจหลักapplication/
: ตรรกะทางธุรกิจ โปรแกรมรวบรวมข้อมูล และการใช้งาน RAGmodel/
: การฝึกอบรมและการอนุมาน LLMinfrastructure/
: การผสานรวมบริการภายนอก (AWS, Qdrant, MongoDB, FastAPI) ตรรกะของโค้ดและขั้นตอนการนำเข้ามีดังนี้: infrastructure
→ model
→ application
→ domain
pipelines/
: ประกอบด้วยไปป์ไลน์ ZenML ML ซึ่งทำหน้าที่เป็นจุดเริ่มต้นสำหรับไปป์ไลน์ ML ทั้งหมด ประสานงานการประมวลผลข้อมูลและขั้นตอนการฝึกโมเดลของวงจรการใช้งาน ML
steps/
: ประกอบด้วยขั้นตอน ZenML แต่ละขั้นตอน ซึ่งเป็นส่วนประกอบที่นำมาใช้ซ้ำได้สำหรับการสร้างและปรับแต่งไปป์ไลน์ ZenML ขั้นตอนดำเนินงานเฉพาะ (เช่น การโหลดข้อมูล การประมวลผลล่วงหน้า) และสามารถรวมกันภายในไปป์ไลน์ ML
tests/
: ครอบคลุมการทดสอบตัวอย่างบางส่วนที่ใช้เป็นตัวอย่างภายในไปป์ไลน์ CI
tools/
: สคริปต์ยูทิลิตี้ที่ใช้ในการเรียกไปป์ไลน์ ZenML และรหัสการอนุมาน:
run.py
: สคริปต์จุดเริ่มต้นเพื่อรันไปป์ไลน์ ZenMLml_service.py
: เริ่มเซิร์ฟเวอร์การอนุมาน REST APIrag.py
: สาธิตการใช้งานโมดูลการดึงข้อมูล RAGdata_warehouse.py
: ใช้เพื่อส่งออกหรือนำเข้าข้อมูลจากคลังข้อมูล MongoDB ผ่านไฟล์ JSON configs/
: ไฟล์การกำหนดค่า ZenML YAML เพื่อควบคุมการทำงานของไปป์ไลน์และขั้นตอนต่างๆ
code_snippets/
: ตัวอย่างโค้ดอิสระที่สามารถดำเนินการได้อย่างอิสระ
เริ่มต้นด้วยการโคลนที่เก็บและนำทางไปยังไดเร็กทอรีโปรเจ็กต์:
git clone https://github.com/PacktPublishing/LLM-Engineers-Handbook.git
cd LLM-Engineers-Handbook
ต่อไป เราต้องเตรียมสภาพแวดล้อม Python ของคุณและการขึ้นต่อกันที่อยู่ติดกัน
โปรเจ็กต์นี้ต้องการ Python 3.11 คุณสามารถใช้การติดตั้ง Python ทั่วโลกหรือตั้งค่าเวอร์ชันเฉพาะโปรเจ็กต์โดยใช้ pyenv
ตรวจสอบเวอร์ชัน Python ของคุณ:
python --version # Should show Python 3.11.x
pyenv --version # Should show pyenv 2.3.36 or later
pyenv install 3.11.8
python --version # Should show Python 3.11.8
python --version
# Output: Python 3.11.8
บันทึก
โปรเจ็กต์นี้มีไฟล์ .python-version
ซึ่งจะตั้งค่าเวอร์ชัน Python ที่ถูกต้องโดยอัตโนมัติเมื่อคุณอยู่ในไดเร็กทอรีโปรเจ็กต์
โครงการใช้บทกวีเพื่อการจัดการการพึ่งพา
poetry --version # Should show Poetry version 1.8.3 or later
poetry env use 3.11
poetry install --without aws
poetry run pre-commit install
สิ่งนี้จะ:
ในฐานะผู้จัดการงานของเรา เรารันสคริปต์ทั้งหมดโดยใช้ Poe the Poet
poetry shell
poetry poe ...
หากคุณประสบปัญหากับ poethepoet
คุณยังคงสามารถเรียกใช้คำสั่งโปรเจ็กต์ได้โดยตรงผ่าน Poetry มีวิธีดังนี้:
pyproject.toml
poetry run
ด้วยคำสั่งพื้นฐาน แทน:
poetry poe local-infrastructure-up
ใช้คำสั่งโดยตรงจาก pyproject.toml:
poetry run < actual-command-from-pyproject-toml >
หมายเหตุ: คำสั่งโครงการทั้งหมดถูกกำหนดไว้ในส่วน [tool.poe.tasks] ของ pyproject.toml
ตอนนี้ มากำหนดค่าโปรเจ็กต์ในเครื่องของเราด้วยข้อมูลรับรองและโทเค็นที่จำเป็นทั้งหมดเพื่อเรียกใช้โค้ดในเครื่อง
หลังจากที่คุณติดตั้งการขึ้นต่อกันทั้งหมดแล้ว คุณต้องสร้างและกรอกไฟล์ .env
ด้วยข้อมูลประจำตัวของคุณเพื่อโต้ตอบกับบริการอื่น ๆ อย่างเหมาะสมและดำเนินโครงการ การตั้งค่าข้อมูลรับรองที่ละเอียดอ่อนในไฟล์ .env
ถือเป็นแนวทางปฏิบัติด้านความปลอดภัยที่ดี เนื่องจากไฟล์นี้จะไม่มีการคอมมิตกับ GitHub หรือแชร์กับบุคคลอื่น
cp .env.example .env # The file must be at your repository's root!
.env
เพื่อเริ่มต้นกัน ต่อไปนี้เป็นการตั้งค่าบังคับที่เราต้องทำเมื่อทำงานในพื้นที่: หากต้องการตรวจสอบสิทธิ์ API ของ OpenAI คุณต้องกรอก OPENAI_API_KEY
env var ด้วยโทเค็นการตรวจสอบสิทธิ์
OPENAI_API_KEY = your_api_key_here
→ ลองอ่านบทช่วยสอนนี้เพื่อเรียนรู้วิธีการจัดหาจาก OpenAI
หากต้องการตรวจสอบสิทธิ์ Hugging Face คุณต้องกรอก HUGGINGFACE_ACCESS_TOKEN
env var ด้วยโทเค็นการตรวจสอบสิทธิ์
HUGGINGFACE_ACCESS_TOKEN = your_token_here
→ ลองอ่านบทช่วยสอนนี้เพื่อเรียนรู้วิธีการจัดหาจาก Hugging Face
หากต้องการตรวจสอบสิทธิ์ Comet ML (จำเป็นเฉพาะระหว่างการฝึก) และ Opik คุณต้องกรอก COMET_API_KEY
env var ด้วยโทเค็นการตรวจสอบสิทธิ์ของคุณ
COMET_API_KEY = your_api_key_here
→ ลองอ่านบทช่วยสอนนี้เพื่อเรียนรู้วิธีรับตัวแปร Comet ML จากด้านบน คุณยังสามารถเข้าถึงแดชบอร์ดของ Opik ได้โดยใช้ ?ลิงก์นี้
เมื่อปรับใช้โปรเจ็กต์บนคลาวด์ เราต้องตั้งค่าเพิ่มเติมสำหรับ Mongo, Qdrant และ AWS หากคุณแค่ทำงานในพื้นที่ ค่าเริ่มต้นของ env vars เหล่านี้จะใช้งานได้ทันที คำแนะนำการใช้งานโดยละเอียดมีอยู่ในบทที่ 11 ของคู่มือวิศวกร LLM
เราต้องเปลี่ยน DATABASE_HOST
env var ด้วย URL ที่ชี้ไปยังคลัสเตอร์ MongoDB บนคลาวด์ของคุณ
DATABASE_HOST = your_mongodb_url
→ ลองอ่านบทช่วยสอนนี้เพื่อเรียนรู้วิธีสร้างและโฮสต์คลัสเตอร์ MongoDB ได้ฟรี
เปลี่ยน USE_QDRANT_CLOUD
เป็น true
, QDRANT_CLOUD_URL
ด้วย URL ที่ชี้ไปยังคลัสเตอร์ Cloud Qdrant ของคุณ และ QDRANT_APIKEY
ด้วยคีย์ API
USE_QDRANT_CLOUD = true
QDRANT_CLOUD_URL = your_qdrant_cloud_url
QDRANT_APIKEY = your_qdrant_api_key
→ ลองดูบทช่วยสอนนี้เพื่อเรียนรู้วิธีสร้างคลัสเตอร์ Qdrant ฟรี
เพื่อให้การตั้งค่า AWS ของคุณทำงานได้อย่างถูกต้อง คุณต้องติดตั้ง AWS CLI บนเครื่องภายในของคุณและกำหนดค่าอย่างเหมาะสมกับผู้ใช้ที่เป็นผู้ดูแลระบบ (หรือผู้ใช้ที่มีสิทธิ์เพียงพอในการสร้างทรัพยากร SageMaker, ECR และ S3 ใหม่ การใช้ผู้ใช้ที่เป็นผู้ดูแลระบบจะ ทำให้ทุกอย่างตรงไปตรงมามากขึ้น)
บทที่ 2 ให้คำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการติดตั้ง AWS CLI สร้างผู้ใช้ที่เป็นผู้ดูแลระบบบน AWS และรับคีย์การเข้าถึงเพื่อตั้งค่าตัวแปรสภาพแวดล้อม AWS_ACCESS_KEY
และ AWS_SECRET_KEY
หากคุณมีผู้ใช้ผู้ดูแลระบบ AWS อยู่แล้ว คุณต้องกำหนดค่า env vars ต่อไปนี้ในไฟล์ .env
ของคุณ:
AWS_REGION=eu-central-1 # Change it with your AWS region.
AWS_ACCESS_KEY=your_aws_access_key
AWS_SECRET_KEY=your_aws_secret_key
โดยทั่วไปข้อมูลรับรอง AWS จะถูกเก็บไว้ใน ~/.aws/credentials
คุณสามารถดูไฟล์นี้ได้โดยตรงโดยใช้คำสั่ง cat
หรือคำสั่งที่คล้ายกัน:
cat ~ /.aws/credentials
สำคัญ
ตัวเลือกการกำหนดค่าเพิ่มเติมมีอยู่ใน settings.py ตัวแปรใดๆ ในคลาส Settings
สามารถกำหนดค่าได้ผ่านไฟล์ . .env
เมื่อรันโปรเจ็กต์ในเครื่อง เราจะโฮสต์ฐานข้อมูล MongoDB และ Qdrant โดยใช้ Docker นอกจากนี้ เซิร์ฟเวอร์ทดสอบ ZenML ยังมีให้บริการผ่านแพ็คเกจ Python
คำเตือน
คุณต้องติดตั้ง Docker (>= v27.1.1)
เพื่อความสะดวกในการใช้งาน คุณสามารถเริ่มต้นโครงสร้างพื้นฐานการพัฒนาท้องถิ่นทั้งหมดด้วยคำสั่งต่อไปนี้:
poetry poe local-infrastructure-up
นอกจากนี้คุณยังสามารถหยุดเซิร์ฟเวอร์ ZenML และคอนเทนเนอร์ Docker ทั้งหมดได้โดยใช้คำสั่งต่อไปนี้:
poetry poe local-infrastructure-down
คำเตือน
เมื่อทำงานบน MacOS ก่อนที่จะเริ่มเซิร์ฟเวอร์ ให้ส่งออกตัวแปรสภาพแวดล้อมต่อไปนี้: export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
มิฉะนั้น การเชื่อมต่อระหว่างเซิร์ฟเวอร์ภายในเครื่องและไปป์ไลน์จะใช้งานไม่ได้ - รายละเอียดเพิ่มเติมในฉบับนี้ สิ่งนี้จะกระทำตามค่าเริ่มต้นเมื่อใช้ Poe the Poet
เริ่ม RESTful API แบบเรียลไทม์ของการอนุมาน:
poetry poe run-inference-ml-service
สำคัญ
ไมโครเซอร์วิส LLM ซึ่งเรียกโดย RESTful API จะทำงานหลังจากปรับใช้ LLM กับ AWS SageMaker เท่านั้น
URL แดชบอร์ด: localhost:8237
ข้อมูลรับรองเริ่มต้น:
username
: ค่าเริ่มต้นpassword
:→ เรียนรู้เพิ่มเติมเกี่ยวกับการใช้และการตั้งค่า ZenML
URL API ที่เหลือ: localhost:6333
URL แดชบอร์ด: localhost:6333/dashboard
→ เรียนรู้เพิ่มเติมเกี่ยวกับการใช้และการตั้งค่า Qdrant ด้วย Docker
URI ฐานข้อมูล: mongodb://llm_engineering:[email protected]:27017
ชื่อฐานข้อมูล: twin
ข้อมูลรับรองเริ่มต้น:
username
: llm_engineeringpassword
: llm_engineering→ เรียนรู้เพิ่มเติมเกี่ยวกับการใช้และการตั้งค่า MongoDB ด้วย Docker
คุณสามารถค้นหาคอลเลกชัน MongoDB ของคุณโดยใช้ ปลั๊กอิน IDEs MongoDB ของคุณ (ซึ่งคุณต้องติดตั้งแยกต่างหาก) โดยคุณจะต้องใช้ URI ฐานข้อมูลเพื่อเชื่อมต่อกับฐานข้อมูล MongoDB ที่โฮสต์ภายในคอนเทนเนอร์ Docker: mongodb://llm_engineering:[email protected]:27017
สำคัญ
ทุกอย่างที่เกี่ยวข้องกับการฝึกอบรมหรือการรัน LLM (เช่น การฝึกอบรม การประเมินผล การอนุมาน) สามารถทำงานได้เฉพาะเมื่อคุณตั้งค่า AWS SageMaker ตามที่อธิบายไว้ในส่วนถัดไปเกี่ยวกับโครงสร้างพื้นฐานระบบคลาวด์
ที่นี่เราจะนำเสนอวิธีการปรับใช้โปรเจ็กต์กับ AWS และบริการไร้เซิร์ฟเวอร์อื่นๆ อย่างรวดเร็ว เราจะไม่ลงรายละเอียด (ตามที่ทุกอย่างนำเสนอในหนังสือ) แต่จะชี้ให้เห็นเฉพาะขั้นตอนหลักที่คุณต้องดำเนินการเท่านั้น
ขั้นแรก ให้ติดตั้งการพึ่งพา Python ของคุณอีกครั้งกับกลุ่ม AWS:
poetry install --with aws
บันทึก
บทที่ 10 ให้คำแนะนำทีละขั้นตอนในส่วน "การใช้งานไมโครเซอร์วิส LLM โดยใช้ AWS SageMaker"
ณ จุดนี้ เราคาดหวังให้คุณติดตั้ง AWS CLI และ AWS CLI ของคุณและ env vars ของโปรเจ็กต์ (ภายในไฟล์ .env
) ได้รับการกำหนดค่าอย่างเหมาะสมกับผู้ใช้ผู้ดูแลระบบ AWS
เพื่อให้มั่นใจถึงแนวปฏิบัติที่ดีที่สุด เราต้องสร้างผู้ใช้ AWS ใหม่ซึ่งจำกัดเฉพาะการสร้างและการลบทรัพยากรที่เกี่ยวข้องกับ AWS SageMaker เท่านั้น สร้างมันขึ้นมาโดยการรัน:
poetry poe create-sagemaker-role
โดยจะสร้างไฟล์ sagemaker_user_credentials.json
ที่รากของพื้นที่เก็บข้อมูลของคุณด้วยค่า AWS_ACCESS_KEY
และ AWS_SECRET_KEY
ใหม่ของคุณ แต่ก่อนที่จะเปลี่ยนข้อมูลประจำตัว AWS ใหม่ของคุณ ให้รันคำสั่งต่อไปนี้เพื่อสร้างบทบาทการดำเนินการด้วย (เพื่อสร้างโดยใช้ข้อมูลประจำตัวผู้ดูแลระบบของคุณ)
หากต้องการสร้างบทบาทการดำเนินการ IAM ที่ AWS SageMaker ใช้เพื่อเข้าถึงทรัพยากร AWS อื่นๆ ในนามของเรา ให้ดำเนินการดังต่อไปนี้:
poetry poe create-sagemaker-execution-role
โดยจะสร้างไฟล์ sagemaker_execution_role.json
ที่รากของพื้นที่เก็บข้อมูลของคุณด้วยค่า AWS_ARN_ROLE
ใหม่ของคุณ เพิ่มลงในไฟล์ . .env
ของคุณ
เมื่อคุณอัปเดตค่า AWS_ACCESS_KEY
, AWS_SECRET_KEY
และ AWS_ARN_ROLE
ในไฟล์ .env
แล้ว คุณจะสามารถใช้ AWS SageMaker ได้ โปรดทราบว่าขั้นตอนนี้มีความสำคัญอย่างยิ่งในการตั้งค่า AWS ให้เสร็จสมบูรณ์
เราเริ่มต้นไปป์ไลน์การฝึกอบรมผ่าน ZenML โดยดำเนินการดังต่อไปนี้:
poetry poe run-training-pipeline
ซึ่งจะเริ่มโค้ดการฝึกโดยใช้การกำหนดค่าจาก configs/training.yaml
โดยตรงใน SageMaker คุณสามารถเห็นภาพผลลัพธ์ได้ในแดชบอร์ดของ Comet ML
เราเริ่มต้นไปป์ไลน์การประเมินผลผ่าน ZenML โดยเรียกใช้สิ่งต่อไปนี้:
poetry poe run-evaluation-pipeline
ซึ่งจะเริ่มโค้ดการประเมินโดยใช้การกำหนดค่าจาก configs/evaluating.yaml
โดยตรงใน SageMaker คุณสามารถเห็นภาพผลลัพธ์ได้ในชุดข้อมูล *-results
ที่บันทึกไว้ในโปรไฟล์ Hugging Face ของคุณ
หากต้องการสร้างจุดสิ้นสุดการอนุมาน AWS SageMaker ให้รัน:
poetry poe deploy-inference-endpoint
หากต้องการทดสอบ ให้รัน:
poetry poe test-sagemaker-endpoint
หากต้องการลบ ให้รัน:
poetry poe delete-inference-endpoint
ไปป์ไลน์ ML อาร์ติแฟกต์ และคอนเทนเนอร์ถูกปรับใช้กับ AWS โดยใช้ประโยชน์จากคุณสมบัติการปรับใช้ของ ZenML ดังนั้น คุณต้องสร้างบัญชีด้วย ZenML Cloud และปฏิบัติตามคำแนะนำในการปรับใช้ ZenML Stack กับ AWS มิฉะนั้น เราจะให้คำแนะนำทีละขั้นตอนใน บทที่ 11 ส่วน การปรับใช้ไปป์ไลน์ของ LLM Twin บนคลาวด์ เกี่ยวกับสิ่งที่คุณต้องทำ
เราใช้ประโยชน์จากตัวเลือกแบบไร้เซิร์ฟเวอร์ของ Qdrant และ MongoDB เมื่อปรับใช้โปรเจ็กต์ ดังนั้น คุณสามารถปฏิบัติตามบทช่วยสอนของ Qdrant และ MongoDB เกี่ยวกับวิธีการสร้างคลัสเตอร์ freemium สำหรับแต่ละคลัสเตอร์ หรืออ่าน บทที่ 11 ส่วน การปรับใช้ไปป์ไลน์ของ LLM Twin บนคลาวด์ และปฏิบัติตามคำแนะนำทีละขั้นตอนของเรา
เราใช้ GitHub Actions เพื่อใช้งานไปป์ไลน์ CI/CD ของเรา หากต้องการใช้งานของคุณเอง คุณต้องแยกพื้นที่เก็บข้อมูลของเราและตั้งค่า env vars ต่อไปนี้เป็นความลับของการดำเนินการในพื้นที่เก็บข้อมูลที่แยกออกของคุณ:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_ECR_NAME
AWS_REGION
นอกจากนี้ เรายังให้คำแนะนำเกี่ยวกับวิธีการตั้งค่าทุกอย่างใน บทที่ 11 ส่วน การเพิ่ม LLMOps ให้กับ LLM Twin
คุณสามารถเห็นภาพผลลัพธ์บนแดชบอร์ดที่โฮสต์ด้วยตนเองหากคุณสร้างบัญชี Comet และตั้งค่า COMET_API_KEY
env var อย่างถูกต้อง เนื่องจาก Opik ขับเคลื่อนโดย Comet คุณจึงไม่ต้องตั้งค่าอะไรอีกใน Comet:
ไปป์ไลน์ ML ทั้งหมดจะได้รับการจัดการเบื้องหลังโดย ZenML มีข้อยกเว้นบางประการเมื่อรันยูทิลิตี้สคริปต์ เช่น การส่งออกหรือการนำเข้าจากคลังข้อมูล
ไปป์ไลน์ ZenML เป็นจุดเริ่มต้นสำหรับกระบวนการส่วนใหญ่ตลอดทั้งโปรเจ็กต์นี้ อยู่ใต้ pipelines/
โฟลเดอร์ ดังนั้น เมื่อคุณต้องการทำความเข้าใจหรือแก้ไขจุดบกพร่องของเวิร์กโฟลว์ การเริ่มต้นด้วยไปป์ไลน์ ZenML จึงเป็นแนวทางที่ดีที่สุด
หากต้องการดูไปป์ไลน์ที่ทำงานและผลลัพธ์:
Pipelines
feature_engineering
)feature_engineering_run_2024_06_20_18_40_24
)ตอนนี้ เรามาสำรวจไปป์ไลน์ทั้งหมดที่คุณสามารถใช้ได้กันดีกว่า ตั้งแต่การรวบรวมข้อมูลไปจนถึงการฝึกอบรม เราจะนำเสนอตามลำดับปกติเพื่อดำเนินโครงการ LLM ตั้งแต่ต้นจนจบ
รันการรวบรวมข้อมูล ETL:
poetry poe run-digital-data-etl
คำเตือน
คุณต้องมี Chrome (หรือเบราว์เซอร์ที่ใช้ Chromium อื่น) ติดตั้งอยู่บนระบบของคุณเพื่อให้โปรแกรมรวบรวมข้อมูล LinkedIn และ Medium ทำงานได้ (ซึ่งใช้ Selenium ภายใต้ประทุน) ขึ้นอยู่กับเวอร์ชัน Chrome ของคุณ Chromedriver จะได้รับการติดตั้งโดยอัตโนมัติเพื่อเปิดใช้งานการสนับสนุน Selenium อีกทางเลือกหนึ่งคือเรียกใช้ทุกอย่างโดยใช้อิมเมจ Docker ของเรา หากคุณไม่ต้องการติดตั้ง Chrome ตัวอย่างเช่น หากต้องการรันไปป์ไลน์ทั้งหมดที่รวมกัน คุณสามารถเรียกใช้ poetry poe run-docker-end-to-end-data-pipeline
โปรดทราบว่าสามารถปรับแต่งคำสั่งเพื่อรองรับไปป์ไลน์อื่นได้
หากคุณไม่ได้ติดตั้งเบราว์เซอร์ที่ใช้ Chromium และไม่ต้องการใช้ Docker ด้วยเหตุผลอื่นใดก็ตาม คุณมีสองตัวเลือกในการหลีกเลี่ยงปัญหา Selenium นี้:
chromedriver_autoinstaller.install()
จาก application.crawlers.base และการเรียกแบบคงที่อื่นๆ ที่ตรวจสอบไดรเวอร์ Chrome และซีลีเนียม หากต้องการเพิ่มลิงก์เพิ่มเติมเพื่อรวบรวม ให้ไปที่ configs/digital_data_etl_[author_name].yaml
และเพิ่มลงในช่อง links
นอกจากนี้ คุณสามารถสร้างไฟล์ใหม่ทั้งหมดและระบุไฟล์ในขณะรันไทม์ได้ เช่น: python -m llm_engineering.interfaces.orchestrator.run --run-etl --etl-config-filename configs/digital_data_etl_[your_name].yaml
รันไปป์ไลน์วิศวกรรมคุณลักษณะ:
poetry poe run-feature-engineering-pipeline
สร้างชุดข้อมูลคำสั่ง:
poetry poe run-generate-instruct-datasets-pipeline
สร้างชุดข้อมูลการตั้งค่า:
poetry poe run-generate-preference-datasets-pipeline
เรียกใช้การบีบอัดทั้งหมดที่กล่าวมาข้างต้นลงในไปป์ไลน์เดียว:
poetry poe run-end-to-end-data-pipeline
ส่งออกข้อมูลจากคลังข้อมูลไปยังไฟล์ JSON:
poetry poe run-export-data-warehouse-to-json
นำเข้าข้อมูลไปยังคลังข้อมูลจากไฟล์ JSON (โดยค่าเริ่มต้น จะนำเข้าข้อมูลจากไดเรกทอรี data/data_warehouse_raw_data
):
poetry poe run-import-data-warehouse-from-json
ส่งออกสิ่งประดิษฐ์ ZenML ไปยัง JSON:
poetry poe run-export-artifact-to-json-pipeline
สิ่งนี้จะส่งออกสิ่งประดิษฐ์ ZenML ต่อไปนี้ไปยังโฟลเดอร์ output
เป็นไฟล์ JSON (จะใช้เวอร์ชันล่าสุด):
คุณกำหนดค่าอาร์ติแฟกต์ที่จะส่งออกได้โดยปรับแต่งไฟล์การกำหนดค่า configs/export_artifact_to_json.yaml
ดำเนินการไปป์ไลน์การฝึกอบรม:
poetry poe run-training-pipeline
รันไปป์ไลน์การประเมิน:
poetry poe run-evaluation-pipeline
คำเตือน
เพื่อให้ใช้งานได้ ตรวจสอบให้แน่ใจว่าคุณได้กำหนดค่า AWS SageMaker อย่างถูกต้องตามที่อธิบายไว้ในการตั้งค่าโครงสร้างพื้นฐานระบบคลาวด์ (สำหรับการใช้งานจริง)
เรียกโมดูลการดึงข้อมูล RAG ด้วยแบบสอบถามทดสอบ:
poetry poe call-rag-retrieval-module
เริ่ม RESTful API แบบเรียลไทม์ของการอนุมาน:
poetry poe run-inference-ml-service
เรียก RESTful API แบบเรียลไทม์ของการอนุมานด้วยแบบสอบถามทดสอบ:
poetry poe call-inference-ml-service
โปรดจำไว้ว่าคุณสามารถตรวจสอบการติดตามพร้อมท์บน Opik ได้
คำเตือน
เพื่อให้บริการอนุมานทำงานได้ คุณต้องติดตั้งไมโครเซอร์วิส LLM กับ AWS SageMaker ตามที่อธิบายไว้ในส่วนการตั้งค่าโครงสร้างพื้นฐานระบบคลาวด์
ตรวจสอบหรือแก้ไขปัญหาขุยของคุณ:
poetry poe lint-check
poetry poe lint-fix
ตรวจสอบหรือแก้ไขปัญหาการจัดรูปแบบของคุณ:
poetry poe format-check
poetry poe format-fix
ตรวจสอบรหัสเพื่อดูข้อมูลประจำตัวที่รั่วไหล:
poetry poe gitleaks-check
รันการทดสอบทั้งหมดโดยใช้คำสั่งต่อไปนี้:
poetry poe test
ตามขั้นตอนการตั้งค่าและการใช้งานที่อธิบายไว้ข้างต้น สมมติว่าโครงสร้างพื้นฐานภายในเครื่องและคลาวด์ใช้งานได้และ .env
ได้รับการเติมเต็มตามที่คาดไว้ ให้ทำตามขั้นตอนถัดไปเพื่อเรียกใช้ระบบ LLM ตั้งแต่ต้นทางถึงปลายทาง:
รวบรวมข้อมูล: poetry poe run-digital-data-etl
คุณสมบัติการคำนวณ: poetry poe run-feature-engineering-pipeline
ชุดข้อมูลคำสั่งการคำนวณ: poetry poe run-generate-instruct-datasets-pipeline
ชุดข้อมูลการจัดตำแหน่งการตั้งค่าการคำนวณ: poetry poe run-generate-preference-datasets-pipeline
สำคัญ
จากนี้ไป เพื่อให้ขั้นตอนเหล่านี้ใช้งานได้ คุณจะต้องตั้งค่า AWS SageMaker อย่างถูกต้อง เช่น การเรียกใช้ poetry install --with aws
และการกรอกตัวแปรสภาพแวดล้อมและการกำหนดค่าที่เกี่ยวข้องกับ AWS
SFT ปรับแต่ง Llamma 3.1: poetry poe run-training-pipeline
สำหรับ DPO ให้ไปที่ configs/training.yaml
เปลี่ยน finetuning_type
เป็น dpo
และรัน poetry poe run-training-pipeline
อีกครั้ง
ประเมินแบบจำลองที่ได้รับการปรับแต่งอย่างละเอียด: poetry poe run-evaluation-pipeline
สำคัญ
จากนี้ไป เพื่อให้ขั้นตอนเหล่านี้ใช้งานได้ คุณจะต้องตั้งค่า AWS SageMaker อย่างถูกต้อง เช่น การเรียกใช้ poetry install --with aws
และการกรอกตัวแปรสภาพแวดล้อมและการกำหนดค่าที่เกี่ยวข้องกับ AWS
เรียกเฉพาะโมดูลการดึงข้อมูล RAG: poetry poe call-rag-retrieval-module
ปรับใช้ไมโครเซอร์วิส LLM Twin กับ SageMaker: poetry poe deploy-inference-endpoint
ทดสอบไมโครเซอร์วิส LLM Twin: poetry poe test-sagemaker-endpoint
เริ่มเซิร์ฟเวอร์ RAG จากต้นทางถึงปลายทาง: poetry poe run-inference-ml-service
ทดสอบเซิร์ฟเวอร์ RAG: poetry poe call-inference-ml-service
หลักสูตรนี้เป็นโครงการโอเพ่นซอร์สที่เผยแพร่ภายใต้ใบอนุญาต MIT ดังนั้น ตราบใดที่คุณเผยแพร่ใบอนุญาตของเราและรับทราบผลงานของเรา คุณสามารถลอกแบบหรือแยกโครงการนี้ได้อย่างปลอดภัย และใช้เป็นแหล่งแรงบันดาลใจสำหรับสิ่งที่คุณต้องการ (เช่น โครงการในมหาวิทยาลัย โครงการระดับวิทยาลัย โครงการส่วนตัว ฯลฯ)