Unstable-Singularity-Detector: ท้าทายปัญหายากของพลศาสตร์ของไหลอายุ 100 ปี (โอเพนซอร์สที่สร้างซ้ำงานวิจัยของ DeepMind ได้ครบถ้วน)
(github.com/Flamehaven)TL;DR
งานวิจัย “การตรวจจับซิงกูลาริตีในของไหล” ของ DeepMind (2024) ไม่มีโค้ดเผยแพร่
จึงมีการสร้างซ้ำแบบ ครบถ้วนตั้งแต่ต้นจนจบโดยอาศัยแค่งานวิจัย
ตอนนี้ได้เปิดเผย pipeline ที่ใช้งานได้จริง ซึ่งสร้างรายงาน PDF ได้ภายใน 7 วินาที
💥 ปัญหา: โรคเรื้อรังของงานวิจัย AI
DeepMind (2024)
“Discovering new solutions to century-old problems in fluid dynamics”
สรุปเนื้อหา
- โจทย์ยากที่มีมานานกว่า 100 ปี: ของไหลสามารถระเบิดในเวลาจำกัดได้หรือไม่?
- ใช้ Physics-Informed Neural Network (PINN) เพื่อตรวจจับซิงกูลาริตี (singularity)
- การคำนวณความแม่นยำสูงมาก (10⁻¹³) และการฝึกหลายขั้นตอนที่ซับซ้อน
ปัญหา
- ❌ ไม่เปิดเผยโค้ด
- ❌ วิธีสร้างซ้ำไม่ชัดเจน
- ❌ มีแต่สมการจึงไม่สามารถนำไปรันได้
ผลลัพธ์คือ นักวิจัยทั่วโลกทำได้เพียง “อ่านแล้วก็ยอมแพ้”
✅ วิธีแก้: โครงการสร้างซ้ำแบบเปิดที่เป็นอิสระ
🚀 Unstable Singularity Detector
อิมพลีเมนเทชันโอเพนซอร์สที่เป็นอิสระโดยสมบูรณ์ และไม่เกี่ยวข้องกับ DeepMind
โดยอาศัยเฉพาะสมการและระเบียบวิธีที่เปิดเผยในงานวิจัย
สร้างซ้ำการตรวจสอบซิงกูลาริตีในพลศาสตร์ของไหลครบตั้งแต่ต้นจนจบ
💡 แนวคิด: ทำไมโปรเจกต์นี้จึงสำคัญ
เผยแพร่งานวิจัย → ไม่มีโค้ด → สร้างซ้ำไม่ได้ → งานวิจัยหยุดชะงัก
ข้อความของโปรเจกต์นี้:
“เปลี่ยนวิทยาศาสตร์ที่มีแต่งานวิจัย ให้กลายเป็นเครื่องมือที่นำไปใช้งานได้”
แก่นแท้ของวิทยาศาสตร์แบบเปิดคือความสามารถในการสร้างซ้ำ (Reproducibility)
งานวิจัยที่ไม่มีโค้ดคือวิทยาศาสตร์ที่ไม่สมบูรณ์ครึ่งหนึ่ง
🎓 ใครจะใช้บ้าง?
- 🧠 นักวิจัยด้านพลศาสตร์ของไหล — ใช้ตรวจสอบและต่อยอดงานวิจัย
- 🔬 นักพัฒนา PINN / SciML — อ้างอิงการปรับเหมาะสมความแม่นยำสูง
- 🎓 นักศึกษาปริญญาโทเอก / นักเรียน — ใช้ฝึกอิมพลีเมนต์งานวิจัย
- 🤖 นักวิจัย AI — ตระหนักถึงปัญหา “งานวิจัยไร้โค้ด”
- 🧑🏫 ผู้สอน — ใช้เป็นสื่อฝึกปฏิบัติในคลาส PINN
🚀 เริ่มต้นได้ภายใน 5 นาที
git clone https://github.com/Flamehaven/unstable-singularity-detector.git
cd unstable-singularity-detector
pip install -r requirements.txt
python examples/e2e_full_ipm.py
ผลลัพธ์:
- แสดง log การลู่เข้าแบบเรียลไทม์
- สร้าง
results/ipm_full_demo/ipm_full_report.pdf - รายงาน PDF 3 หน้า (กราฟการลู่เข้า + ประวัติการฝึก + metric)
🎯 หลักฐานว่าใช้งานได้จริง
v1.3.2 — Complete E2E Pipelines (“Show Me It Works” Release)
1️⃣ IPM (Incompressible Porous Media)
python examples/e2e_full_ipm.py --grid-size 16
# หลัง 7.3 วินาที → สร้างรายงาน PDF + metric JSON อัตโนมัติ
초기조건: sin(πx)sin(πy)sin(πz)
- เงื่อนไขตั้งต้น: sin(πx)sin(πy)sin(πz)
- Lambda funnel: ลู่เข้าใน 1 รอบการวนซ้ำ
- residual: 1e-3 → 1e-7 (ดีขึ้น 1000 เท่า)
- เอาต์พุต: รายงาน PDF 3 หน้า (กราฟการลู่เข้า + metric)
2️⃣ 2D Boussinesq (การพาความร้อน)
python examples/e2e_boussinesq_2d.py --grid-size 64
- ตรวจสอบการอนุรักษ์พลังงาน (residual 5e-8)
- สร้างรายงาน PDF อัตโนมัติ
3️⃣ สมการความร้อน 1D (ตรวจสอบด้วยผลเฉลยเชิงวิเคราะห์)
pytest tests_e2e/test_heat_equation_1d.py -v
# 7/7 tests PASSED
- ผลเฉลยเชิงวิเคราะห์: u = exp(-π²t)sin(πx)
- ความคลาดเคลื่อนของผลเฉลยเชิงตัวเลข: < 0.04
- residual ของ PDE: < 0.05
🔍 ตารางตรวจสอบเทียบกับงานวิจัย
| คอมโพเนนต์ | อ้างอิงจากงานวิจัย | วิธีตรวจสอบ | ผลลัพธ์ | สถานะ |
|---|---|---|---|---|
| สูตรทำนาย Lambda | Fig 2e | เปรียบเทียบเชิงตัวเลขโดยตรง | คลาดเคลื่อน <1% | ✅ |
| Funnel Inference | Sec 3.2 | ทดสอบการลู่เข้า | ลู่เข้าใน 1–2 รอบ | ✅ |
| การฝึกแบบหลายขั้นตอน | Sec 3.3 | ติดตาม residual | ทำได้ถึง 10⁻⁷ | ✅ |
| Gauss–Newton | Eq 7–8 | benchmark ความแม่นยำ | 10⁻¹³ | ✅ |
| เงื่อนไขขอบเขต | Sec 2.3 | Dirichlet BC | คลาดเคลื่อน < 10⁻¹⁰ | ✅ |
| การแปลงแบบคล้ายตนเอง | Fig 3 | แปลงพิกัด | อิมพลีเมนต์เสร็จแล้ว | ✅ |
✅ อัตราการตรวจสอบเสร็จสมบูรณ์: 100% (ทุกสูตรที่เปิดเผยในงานวิจัย)
🛠️ จุดเด่นทางเทคนิค
นวัตกรรมหลัก
-
การฝึกที่อิงตามเป้าหมายความแม่นยำ
# Stage 1: Adam warmup → 1e-6 # Stage 2: Fourier features → 1e-9 # Stage 3: Gauss–Newton → 1e-12 -
เพิ่มประสิทธิภาพการใช้หน่วยความจำ
- การประมาณ Hessian แบบ Rank-1 → O(P²) → O(P)
- ประหยัดหน่วยความจำ 1000 เท่า
-
EMA Smoothing
H_t = β * H_{t-1} + (1 - β) * (JᵀJ)_t -
ระบบตรวจสอบอัตโนมัติ
- ผ่านการทดสอบ 111/113 (ข้าม 2 GPU)
- ผสาน GitHub Actions CI/CD แบบสมบูรณ์
📊 ตัวอย่างการใช้งานจริง
from unstable_singularity_detector import UnstableSingularityDetector
detector = UnstableSingularityDetector(equation_type="ipm")
lambda_0 = detector.predict_next_unstable_lambda(current_order=0)
print(f"Predicted: {lambda_0:.10f}")
# Output: 1.0285722760 (คลาดเคลื่อนจากค่าของงานวิจัย 0.000%)
🧩 pipeline ทั้งหมด (สรุปใน 10 บรรทัด)
from examples.e2e_full_ipm import FullIPMPipeline
from pathlib import Path
pipeline = FullIPMPipeline(output_dir=Path("results/my_experiment"), grid_size=32)
pipeline.run()
# หลัง 7 วินาที สร้างรายงาน PDF และ JSON
📈 สถานะโปรเจกต์ (v1.3.2)
| รายการ | ตัวเลข |
|---|---|
| โค้ด | 15,000+ lines |
| การทดสอบ | 111/113 ผ่าน (98.2%) |
| เอกสาร | 2,500+ lines |
| คอมมิต | 150+ |
| ไลเซนส์ | MIT |
| Python | 3.8+ |
| dependency หลัก | PyTorch, NumPy, SciPy |
🔐 ความโปร่งใสและข้อจำกัด
ความเป็นอิสระที่ชัดเจน
- เป็นโครงการวิจัยส่วนบุคคลที่ไม่เกี่ยวข้องกับ DeepMind
- ใช้เฉพาะสมการจากงานวิจัยที่เปิดเผย
- ไลเซนส์ MIT
- เปิดเผยข้อจำกัดทั้งหมด
ข้อจำกัดปัจจุบัน
- การละเมิดปริมาณอนุรักษ์: IPM 128% (ข้อจำกัดด้านขนาดของเครือข่าย)
- ความคลาดเคลื่อนของ Lambda: Boussinesq 42% (มีแผนปรับแก้เชิงประจักษ์)
- ความแม่นยำ: เน้นเดโม (ไม่ใช่สำหรับ production)
💬 ยินดีรับฟีดแบ็ก
มาร่วมกันเปลี่ยน “โลกที่มีแต่งานวิจัยแต่ไม่มีโค้ด” ไปด้วยกัน
Made with 🔬 by independent researchers, for open science
ยังไม่มีความคิดเห็น