317 lines
19 KiB
Markdown
317 lines
19 KiB
Markdown
# AGENTS.md
|
|
|
|
## ภาพรวมโครงการ
|
|
|
|
AI for Beginners เป็นหลักสูตรครอบคลุมระยะเวลา 12 สัปดาห์ ประกอบด้วย 24 บทเรียนที่ครอบคลุมพื้นฐานของปัญญาประดิษฐ์ (AI) โครงการนี้มีบทเรียนเชิงปฏิบัติที่ใช้ Jupyter Notebooks แบบฝึกหัด และห้องปฏิบัติการจริง หลักสูตรครอบคลุมหัวข้อดังนี้:
|
|
|
|
- AI เชิงสัญลักษณ์ด้วยการแทนความรู้และระบบผู้เชี่ยวชาญ
|
|
- เครือข่ายประสาทและการเรียนรู้เชิงลึกด้วย TensorFlow และ PyTorch
|
|
- เทคนิคและสถาปัตยกรรมการมองเห็นด้วยคอมพิวเตอร์
|
|
- การประมวลผลภาษาธรรมชาติ (NLP) รวมถึง transformers และ BERT
|
|
- หัวข้อเฉพาะทาง: อัลกอริทึมทางพันธุกรรม, การเรียนรู้แบบเสริมกำลัง, ระบบหลายตัวแทน
|
|
- จริยธรรม AI และหลักการ AI ที่รับผิดชอบ
|
|
|
|
**เทคโนโลยีหลัก:** Python 3, Jupyter Notebooks, TensorFlow, PyTorch, Keras, OpenCV, Vue.js (สำหรับแอปแบบทดสอบ)
|
|
|
|
**สถาปัตยกรรม:** คลังเนื้อหาการศึกษา พร้อม Jupyter Notebooks ที่จัดระเบียบตามหัวข้อ และแอปแบบทดสอบที่พัฒนาด้วย Vue.js พร้อมการสนับสนุนหลายภาษาอย่างกว้างขวาง
|
|
|
|
## คำสั่งการตั้งค่า
|
|
|
|
### สภาพแวดล้อมการพัฒนาหลัก (Python/Jupyter)
|
|
|
|
หลักสูตรนี้ออกแบบมาให้ทำงานร่วมกับ Python และ Jupyter Notebooks วิธีที่แนะนำคือการใช้ miniconda:
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://github.com/microsoft/ai-for-beginners
|
|
cd ai-for-beginners
|
|
|
|
# Create and activate conda environment
|
|
conda env create --name ai4beg --file environment.yml
|
|
conda activate ai4beg
|
|
|
|
# Start Jupyter Notebook
|
|
jupyter notebook
|
|
# OR
|
|
jupyter lab
|
|
```
|
|
|
|
### ทางเลือก: ใช้ devcontainer
|
|
|
|
```bash
|
|
# Open in VS Code and select "Reopen in Container" when prompted
|
|
# The devcontainer will automatically set up the environment
|
|
```
|
|
|
|
### การตั้งค่าแอปแบบทดสอบ
|
|
|
|
แอปแบบทดสอบเป็นแอป Vue.js แยกต่างหากที่อยู่ใน `etc/quiz-app/`:
|
|
|
|
```bash
|
|
cd etc/quiz-app
|
|
npm install
|
|
npm run serve # Development server
|
|
npm run build # Production build
|
|
npm run lint # Lint and fix files
|
|
```
|
|
|
|
## เวิร์กโฟลว์การพัฒนา
|
|
|
|
### การทำงานกับ Jupyter Notebooks
|
|
|
|
1. **การพัฒนาในเครื่อง:**
|
|
- เปิดใช้งานสภาพแวดล้อม conda: `conda activate ai4beg`
|
|
- เริ่ม Jupyter: `jupyter notebook` หรือ `jupyter lab`
|
|
- ไปที่โฟลเดอร์บทเรียนและเปิดไฟล์ `.ipynb`
|
|
- รันเซลล์แบบโต้ตอบเพื่อทำตามบทเรียน
|
|
|
|
2. **VS Code พร้อมส่วนขยาย Python:**
|
|
- เปิดคลังใน VS Code
|
|
- ติดตั้งส่วนขยาย Python
|
|
- VS Code จะตรวจจับและใช้สภาพแวดล้อม conda โดยอัตโนมัติ
|
|
- เปิดไฟล์ `.ipynb` โดยตรงใน VS Code
|
|
|
|
3. **การพัฒนาในคลาวด์:**
|
|
- **GitHub Codespaces:** คลิก "Code" → "Codespaces" → "Create codespace on main"
|
|
- **Binder:** ใช้ป้าย Binder บน README เพื่อเปิดในเบราว์เซอร์
|
|
- หมายเหตุ: Binder มีทรัพยากรจำกัดและข้อจำกัดการเข้าถึงเว็บบางประการ
|
|
|
|
### การสนับสนุน GPU สำหรับบทเรียนขั้นสูง
|
|
|
|
บทเรียนในภายหลังจะได้รับประโยชน์อย่างมากจากการเร่งความเร็วด้วย GPU:
|
|
|
|
- **Azure Data Science VM:** ใช้ VM ซีรีส์ NC ที่รองรับ GPU
|
|
- **Azure Machine Learning:** ใช้ฟีเจอร์โน้ตบุ๊กพร้อมการประมวลผล GPU
|
|
- **Google Colab:** อัปโหลดโน้ตบุ๊กทีละตัว (มีการสนับสนุน GPU ฟรี)
|
|
|
|
### การพัฒนาแอปแบบทดสอบ
|
|
|
|
```bash
|
|
cd etc/quiz-app
|
|
npm run serve # Hot-reload development server at http://localhost:8080
|
|
```
|
|
|
|
## คำแนะนำการทดสอบ
|
|
|
|
คลังนี้มุ่งเน้นไปที่เนื้อหาการเรียนรู้มากกว่าการทดสอบซอฟต์แวร์ ไม่มีชุดการทดสอบแบบดั้งเดิม
|
|
|
|
### วิธีการตรวจสอบ:
|
|
|
|
1. **Jupyter Notebooks:** รันเซลล์ตามลำดับเพื่อยืนยันว่าโค้ดตัวอย่างทำงานได้
|
|
2. **การทดสอบแอปแบบทดสอบ:** ทดสอบด้วยตนเองผ่านเซิร์ฟเวอร์พัฒนา
|
|
3. **การตรวจสอบการแปล:** ตรวจสอบเนื้อหาที่แปลในโฟลเดอร์ `translations/`
|
|
4. **การตรวจสอบ linting แอปแบบทดสอบ:** `npm run lint` ใน `etc/quiz-app/`
|
|
|
|
### การรันโค้ดตัวอย่าง:
|
|
|
|
```bash
|
|
# Activate environment first
|
|
conda activate ai4beg
|
|
|
|
# Run Python scripts directly
|
|
python lessons/4-ComputerVision/07-ConvNets/pytorchcv.py
|
|
|
|
# Or execute notebooks
|
|
jupyter notebook lessons/3-NeuralNetworks/03-Perceptron/Perceptron.ipynb
|
|
```
|
|
|
|
## รูปแบบโค้ด
|
|
|
|
### รูปแบบโค้ด Python
|
|
|
|
- ใช้รูปแบบมาตรฐาน Python สำหรับโค้ดการศึกษา
|
|
- โค้ดที่ชัดเจนและอ่านง่าย โดยเน้นการเรียนรู้มากกว่าการปรับแต่ง
|
|
- มีคอมเมนต์อธิบายแนวคิดสำคัญ
|
|
- เป็นมิตรกับ Jupyter Notebook: เซลล์ควรเป็นแบบแยกตัวเองได้มากที่สุด
|
|
- ไม่มีข้อกำหนด linting ที่เข้มงวดสำหรับเนื้อหาบทเรียน
|
|
|
|
### JavaScript/Vue.js (แอปแบบทดสอบ)
|
|
|
|
- การตั้งค่า ESLint ใน `etc/quiz-app/package.json`
|
|
- รัน `npm run lint` เพื่อตรวจสอบและแก้ไขปัญหาอัตโนมัติ
|
|
- ใช้รูปแบบ Vue 2.x
|
|
- สถาปัตยกรรมแบบคอมโพเนนต์
|
|
|
|
### การจัดระเบียบไฟล์
|
|
|
|
```
|
|
lessons/
|
|
├── 0-course-setup/ # Setup instructions
|
|
├── 1-Intro/ # Introduction to AI
|
|
├── 2-Symbolic/ # Symbolic AI
|
|
├── 3-NeuralNetworks/ # Neural Networks basics
|
|
├── 4-ComputerVision/ # Computer Vision
|
|
├── 5-NLP/ # Natural Language Processing
|
|
├── 6-Other/ # Other AI techniques
|
|
├── 7-Ethics/ # AI Ethics
|
|
└── X-Extras/ # Additional content
|
|
|
|
etc/
|
|
├── quiz-app/ # Vue.js quiz application
|
|
└── quiz-src/ # Quiz source files
|
|
|
|
translations/ # Multi-language translations
|
|
```
|
|
|
|
## การสร้างและการปรับใช้
|
|
|
|
### เนื้อหา Jupyter
|
|
|
|
ไม่จำเป็นต้องมีขั้นตอนการสร้าง - Jupyter Notebooks ถูกใช้งานโดยตรง
|
|
|
|
### แอปแบบทดสอบ
|
|
|
|
```bash
|
|
cd etc/quiz-app
|
|
|
|
# Development
|
|
npm run serve
|
|
|
|
# Production build
|
|
npm run build # Outputs to etc/quiz-app/dist/
|
|
|
|
# Deploy to Azure Static Web Apps
|
|
# Azure automatically creates GitHub Actions workflow
|
|
# See etc/quiz-app/README.md for detailed deployment instructions
|
|
```
|
|
|
|
### เว็บไซต์เอกสาร
|
|
|
|
คลังนี้ใช้ Docsify สำหรับเอกสาร:
|
|
- `index.html` เป็นจุดเริ่มต้น
|
|
- ไม่จำเป็นต้องสร้าง - ให้บริการโดยตรงผ่าน GitHub Pages
|
|
- เข้าถึงได้ที่: https://microsoft.github.io/AI-For-Beginners/
|
|
|
|
## แนวทางการมีส่วนร่วม
|
|
|
|
### กระบวนการ Pull Request
|
|
|
|
1. **รูปแบบชื่อเรื่อง:** ชื่อเรื่องที่ชัดเจนและอธิบายการเปลี่ยนแปลง
|
|
2. **ข้อกำหนด CLA:** ต้องลงนาม Microsoft CLA (ตรวจสอบอัตโนมัติ)
|
|
3. **แนวทางเนื้อหา:**
|
|
- รักษาโฟกัสการศึกษาและแนวทางที่เป็นมิตรกับผู้เริ่มต้น
|
|
- ทดสอบโค้ดตัวอย่างทั้งหมดในโน้ตบุ๊ก
|
|
- ตรวจสอบให้แน่ใจว่าโน้ตบุ๊กรันได้ตั้งแต่ต้นจนจบ
|
|
- อัปเดตการแปลหากมีการแก้ไขเนื้อหาภาษาอังกฤษ
|
|
4. **การเปลี่ยนแปลงแอปแบบทดสอบ:** รัน `npm run lint` ก่อน commit
|
|
|
|
### การมีส่วนร่วมในการแปล
|
|
|
|
- การแปลเป็นไปโดยอัตโนมัติผ่าน GitHub Actions โดยใช้ co-op-translator
|
|
- การแปลด้วยตนเองอยู่ใน `translations/<language-code>/`
|
|
- การแปลแบบทดสอบอยู่ใน `etc/quiz-app/src/assets/translations/`
|
|
- รองรับภาษา: มากกว่า 40 ภาษา (ดู README สำหรับรายการเต็ม)
|
|
|
|
### พื้นที่การมีส่วนร่วมที่ใช้งานอยู่
|
|
|
|
ดู `etc/CONTRIBUTING.md` สำหรับความต้องการปัจจุบัน:
|
|
- ส่วนการเรียนรู้แบบเสริมกำลังเชิงลึก
|
|
- การปรับปรุงการตรวจจับวัตถุ
|
|
- ตัวอย่างการจดจำเอนทิตีที่มีชื่อ
|
|
- ตัวอย่างการฝึกฝังแบบกำหนดเอง
|
|
|
|
## การตั้งค่าสภาพแวดล้อม
|
|
|
|
### การพึ่งพาที่จำเป็น
|
|
|
|
```bash
|
|
# Core Python packages (from requirements.txt)
|
|
tensorflow==2.17.0
|
|
torch (via conda)
|
|
torchvision (via conda)
|
|
keras==3.5.0
|
|
opencv (via conda)
|
|
scikit-learn
|
|
numpy==1.26
|
|
pandas==2.2.2
|
|
matplotlib==3.9
|
|
jupyter
|
|
```
|
|
|
|
### ตัวแปรสภาพแวดล้อม
|
|
|
|
ไม่จำเป็นต้องมีตัวแปรสภาพแวดล้อมพิเศษสำหรับการใช้งานพื้นฐาน
|
|
|
|
สำหรับการปรับใช้ Azure (แอปแบบทดสอบ):
|
|
- `AZURE_STATIC_WEB_APPS_API_TOKEN` (ตั้งค่าโดยอัตโนมัติโดย Azure)
|
|
|
|
## การแก้ไขข้อบกพร่องและการแก้ปัญหา
|
|
|
|
### ปัญหาทั่วไป
|
|
|
|
**ปัญหา:** การสร้างสภาพแวดล้อม conda ล้มเหลว
|
|
- **วิธีแก้ไข:** อัปเดต conda ก่อน: `conda update conda -y`
|
|
- ตรวจสอบให้แน่ใจว่ามีพื้นที่ดิสก์เพียงพอ (แนะนำ 50GB)
|
|
|
|
**ปัญหา:** ไม่พบ kernel ของ Jupyter
|
|
- **วิธีแก้ไข:**
|
|
```bash
|
|
conda activate ai4beg
|
|
python -m ipykernel install --user --name ai4beg
|
|
```
|
|
|
|
**ปัญหา:** ไม่พบ GPU ในโน้ตบุ๊ก
|
|
- **วิธีแก้ไข:**
|
|
- ตรวจสอบการติดตั้ง CUDA: `nvidia-smi`
|
|
- ตรวจสอบ GPU ของ PyTorch: `python -c "import torch; print(torch.cuda.is_available())"`
|
|
- ตรวจสอบ GPU ของ TensorFlow: `python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"`
|
|
|
|
**ปัญหา:** แอปแบบทดสอบไม่เริ่มต้น
|
|
- **วิธีแก้ไข:**
|
|
```bash
|
|
cd etc/quiz-app
|
|
rm -rf node_modules package-lock.json
|
|
npm install
|
|
npm run serve
|
|
```
|
|
|
|
**ปัญหา:** Binder หมดเวลาหรือบล็อกการดาวน์โหลด
|
|
- **วิธีแก้ไข:** ใช้ GitHub Codespaces หรือการตั้งค่าในเครื่องเพื่อการเข้าถึงทรัพยากรที่ดีกว่า
|
|
|
|
### ปัญหาหน่วยความจำ
|
|
|
|
บทเรียนบางส่วนต้องการ RAM จำนวนมาก (แนะนำ 8GB+):
|
|
- ใช้ VM คลาวด์สำหรับบทเรียนที่ใช้ทรัพยากรมาก
|
|
- ปิดแอปพลิเคชันอื่นเมื่อฝึกโมเดล
|
|
- ลดขนาด batch ในโน้ตบุ๊กหากหน่วยความจำไม่เพียงพอ
|
|
|
|
## หมายเหตุเพิ่มเติม
|
|
|
|
### สำหรับผู้สอนหลักสูตร
|
|
|
|
- ดู `lessons/0-course-setup/for-teachers.md` สำหรับคำแนะนำการสอน
|
|
- บทเรียนเป็นแบบแยกตัวเองและสามารถสอนได้ตามลำดับหรือเลือกเฉพาะบางบท
|
|
- เวลาที่ประมาณการ: 12 สัปดาห์ที่ 2 บทเรียนต่อสัปดาห์
|
|
|
|
### ทรัพยากรคลาวด์
|
|
|
|
- **Azure for Students:** เครดิตฟรีสำหรับนักเรียน
|
|
- **Microsoft Learn:** เส้นทางการเรียนรู้เสริมที่เชื่อมโยงตลอดหลักสูตร
|
|
- **Binder:** ฟรีแต่มีทรัพยากรจำกัดและข้อจำกัดเครือข่ายบางประการ
|
|
|
|
### ตัวเลือกการรันโค้ด
|
|
|
|
1. **ในเครื่อง (แนะนำ):** ควบคุมได้เต็มที่ ประสิทธิภาพดีที่สุด รองรับ GPU
|
|
2. **GitHub Codespaces:** VS Code บนคลาวด์ เข้าถึงได้รวดเร็ว
|
|
3. **Binder:** Jupyter บนเบราว์เซอร์ ฟรีแต่จำกัด
|
|
4. **Azure ML Notebooks:** ตัวเลือกองค์กรพร้อมการสนับสนุน GPU
|
|
5. **Google Colab:** อัปโหลดโน้ตบุ๊กทีละตัว มี GPU ฟรีให้บริการ
|
|
|
|
### การทำงานกับโน้ตบุ๊ก
|
|
|
|
- โน้ตบุ๊กออกแบบมาให้รันทีละเซลล์เพื่อการเรียนรู้
|
|
- โน้ตบุ๊กหลายตัวดาวน์โหลดชุดข้อมูลในการรันครั้งแรก (อาจใช้เวลา)
|
|
- โมเดลบางตัวต้องการ GPU เพื่อเวลาฝึกที่เหมาะสม
|
|
- ใช้โมเดลที่ฝึกไว้ล่วงหน้าเพื่อลดความต้องการการประมวลผล
|
|
|
|
### การพิจารณาด้านประสิทธิภาพ
|
|
|
|
- บทเรียนการมองเห็นด้วยคอมพิวเตอร์ในภายหลัง (CNNs, GANs) ได้รับประโยชน์จาก GPU
|
|
- บทเรียน NLP transformer อาจต้องการ RAM จำนวนมาก
|
|
- การฝึกจากศูนย์มีประโยชน์ทางการศึกษาแต่ใช้เวลานาน
|
|
- ตัวอย่างการเรียนรู้แบบถ่ายโอนช่วยลดเวลาในการฝึก
|
|
|
|
---
|
|
|
|
**ข้อจำกัดความรับผิดชอบ**:
|
|
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ |