Core ML — เฟรมเวิร์กแมชชีนเลิร์นนิงจาก Apple ที่ปรับให้เหมาะสำหรับการเรียกใช้โมเดล ML บนอุปกรณ์ iOS, macOS, watchOS และ tvOS โดยตรง แตกต่างจากบริการ ML บนคลาวด์ Core ML ใช้ตัวเร่งฮาร์ดแวร์ของ Apple: Neural Engine, GPU และ CPU เพื่อให้แน่ใจว่ามีความหน่วงต่ำที่สุดเมื่อประมวลผลข้อมูล ตาม Apple Core ML Documentation (2026) เฟรมเวิร์กรองรับโมเดล PyTorch, TensorFlow และ Create ML ในรูปแบบ .mlpackage แบบรวมศูนย์ โดยมีเวลาเฉลี่ยในการอนุมาน 5–50 มิลลิวินาที
ประเด็นสำคัญ
Core ML คือเฟรมเวิร์กแมชชีนเลิร์นนิงที่ Apple เปิดตัวในงาน WWDC 2017 ซึ่งเป็นส่วนหนึ่งของระบบนิเวศการพัฒนาสำหรับ iPhone, iPad, Mac, Apple Watch และ Apple TV Core ML มอบรันไทม์สำหรับการเรียกใช้โมเดล ML บนอุปกรณ์ โดยแยกนักพัฒนาออกจากรายละเอียดของการเพิ่มประสิทธิภาพฮาร์ดแวร์ เฟรมเวิร์กจะเลือกเอนจินการคำนวณที่ดีที่สุดโดยอัตโนมัติ — Neural Engine บนชิป A12+, GPU หรือ CPU — สำหรับแต่ละการทำงานของโมเดล
ข้อได้เปรียบหลัก ของ Core ML คือการบูรณาการอย่างลึกซึ้งกับ Apple Silicon การทำงานของโครงข่ายประสาทเทียมจะดำเนินการบน Neural Engine โดยเฉพาะ ซึ่งไม่โหลดแกนหลักของโปรเซสเซอร์ ตามข้อมูลของ Apple (WWDC 2025) โมเดล Core ML ทำงานเร็วกว่า 6 เท่าเมื่อเทียบกับ TensorFlow Lite บนอุปกรณ์ Android ที่คล้ายกัน
Core ML รองรับงานแมชชีนเลิร์นนิงที่หลากหลาย: การจำแนกภาพ การตรวจจับวัตถุ การแบ่งส่วนความหมาย การประมวลผลภาษาธรรมชาติ การวิเคราะห์เสียง และข้อมูลแบบตาราง เฟรมเวิร์กทำงานกับโมเดลหลายประเภท: โครงข่ายประสาทเทียม (แบบ convolutional, recurrent, transformer), กลุ่มต้นไม้, การถดถอยเชิงเส้น และกระบวนการเกาส์เซียน
Core ML รับโมเดลที่ฝึกแล้วในรูปแบบ .mlpackage เป็นอินพุต คอมไพล์เป็นโค้ดเครื่องที่ปรับให้เหมาะสมสำหรับอุปกรณ์เฉพาะ และเรียกใช้การอนุมานผ่าน API แบบรวมศูนย์ ไปป์ไลน์ทั้งหมด — จากการโหลดโมเดลจนถึงการได้รับผลลัพธ์ — ใช้โค้ด Swift เพียง 3–5 บรรทัด
.mlpackage คือรูปแบบคอนเทนเนอร์ที่ Apple เปิดตัวในปี 2020 เพื่อแทนที่ .mlmodel แบบเก่า แพ็คเกจคือไดเรกทอรีที่ประกอบด้วยไฟล์ Manifest JSON, ไฟล์โมเดลในรูปแบบไบนารี MLProgram, เมตาดาต้า (ผู้แต่ง, เวอร์ชัน, คำอธิบาย) และทรัพยากร เช่น ป้ายชื่อคลาส ตามข้อมูลของ Apple .mlpackage ลดขนาดโมเดลลง 30–50% เมื่อเทียบกับ .mlmodel ผ่านการปรับน้ำหนักให้เหมาะสม
Apple Neural Engine (ANE) คือโปรเซสเซอร์ประสาทเฉพาะที่ built-in ในชิป Apple ตั้งแต่ A12 Bionic (2018) ANE ประมวลผลการดำเนินการเมทริกซ์ได้อย่างมีประสิทธิภาพมากกว่า CPU หลายสิบเท่าที่การใช้พลังงานเท่ากัน ประสิทธิภาพของ ANE เพิ่มขึ้นจาก 5 TOPS บน A12 เป็น 35 TOPS บน M4 Ultra (2025) ทำให้สามารถเรียกใช้โมเดลที่มีพารามิเตอร์หลายพันล้านตัว ANE ถูกใช้ โดยอัตโนมัติสำหรับโมเดล Core ML ทั้งหมดที่มีสถาปัตยกรรมโครงข่ายประสาทเทียม
คุณสมบัติสำคัญของ Core ML คือ การรองรับการควอนไทซ์ โมเดลเป็น FP16 และ INT8 โดยไม่สูญเสียความแม่นยำ การควอนไทซ์ช่วยลดขนาดโมเดลลง 2–4 เท่า และเร่งการอนุมาน 40–60% บน ANE Apple มีเครื่องมือ Xcode Model Quantization สำหรับการเลือกความแม่นยำที่เหมาะสมที่สุดโดยอัตโนมัติ: นักพัฒนาอัปโหลดโมเดล ระบุการสูญเสียคุณภาพที่ยอมรับได้ (โดยปกติ 0.1–0.5%) และ Xcode จะเลือกรูปแบบการแสดงน้ำหนักที่ดีที่สุด
| ชิป | TOPS (ANE) | การอนุมาน ResNet-50 | ปี |
|---|---|---|---|
| A12 Bionic | 5 | 18 มิลลิวินาที | 2018 |
| A14 Bionic | 11 | 9 มิลลิวินาที | 2020 |
| M1 Max | 22 | 4 มิลลิวินาที | 2021 |
| M4 Ultra | 35 | 2 มิลลิวินาที | 2025 |
โมเดล ML ส่วนใหญ่ ถูกสร้างใน PyTorch หรือ TensorFlow และต้องการแปลงเป็นรูปแบบ .mlpackage เพื่อใช้ใน Core ML Apple มีเครื่องมือ coremltools — แพ็คเกจ Python สำหรับแปลง ปรับแต่ง และตรวจสอบความถูกต้องของโมเดล
coremltools คือเครื่องมือทางการของ Apple สำหรับการแปลงโมเดล ML รองรับการนำเข้าจาก PyTorch (ผ่าน torch.onnx หรือโดยตรง), TensorFlow (SavedModel, H5, Frozen Graph) และ ONNX หลังการแปลง สามารถเปิดใช้งานการควอนไทซ์ FP16 หรือ INT8 ซึ่งช่วยลดขนาดโมเดลลง 2–4 เท่าโดยไม่สูญเสียความแม่นยำอย่างมีนัยสำคัญ
มาดูการแปลงโมเดล PyTorch ที่ฝึกแล้วเป็นรูปแบบ Core ML โดยใช้ coremltools เวอร์ชัน 8.0 กระบวนการนี้ใช้ 2–3 ขั้นตอนใน Python
import torch
import coremltools as ct
# กำลังโหลดโมเดล PyTorch ที่ฝึกแล้ว
model = torch.load('model.pth')
model.eval()
# กำลังติดตามโมเดลด้วยอินพุตตัวอย่าง
example_input = torch.randn(1, 3, 224, 224)
traced_model = torch.jit.trace(model, example_input)
# กำลังแปลงเป็น Core ML .mlpackage
mlmodel = ct.convert(
traced_model,
convert_to='mlprogram',
inputs=[ct.TensorType(shape=(1, 3, 224, 224))]
)
mlmodel.save('Model.mlpackage')
โค้ดโหลด โมเดล PyTorch ที่ฝึกแล้ว ทำการติดตาม JIT ด้วยอินพุตตัวอย่าง และแปลงเป็นรูปแบบ mlprogram (รูปแบบไบนารีของ Core ML) .mlpackage ที่ได้สามารถลากไปยัง Xcode และใช้ได้ทันทีในโค้ด Swift
หลังจากการแปลงโมเดล การบูรณาการในแอป iOS ด้วย Swift ทำได้ไม่กี่บรรทัด Xcode จะสร้างคลาส Swift สำหรับโมเดลโดยอัตโนมัติตามเมตาดาต้าของ .mlpackage
มาดูตัวอย่างการจำแนกภาพโดยใช้ Core ML และเฟรมเวิร์ก Vision Vision จะแปลงภาพเป็นขนาดและรูปแบบพิกเซลที่ต้องการโดยอัตโนมัติ
import CoreML
import Vision
// กำลังโหลดโมเดล Core ML
guard let model = try? VNCoreMLModel(
for: MobileNetV2.configuration.model
) else { return }
// กำลังสร้าง VNCoreMLRequest
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results
as? [VNClassificationObservation]
else { return }
// แสดงผลการทำนาย 3 อันดับแรก
for result in results.prefix(3) {
print("\(result.identifier):
\(result.confidence)")
}
}
// กำลังเริ่มประมวลผลภาพ
let handler = VNImageRequestHandler(
url: imageURL
)
try? handler.perform([request])
โค้ด Swift โหลดโมเดล MobileNetV2 ผ่านเฟรมเวิร์ก Vision สร้างคำขอจำแนกประเภท และประมวลผลผลลัพธ์ — อาร์เรย์ของออบเจ็กต์ VNClassificationObservation พร้อมป้ายชื่อคลาสและเปอร์เซ็นต์ความเชื่อมั่น ไปป์ไลน์ทั้งหมดตั้งแต่การโหลดจนถึงการแสดงผลลัพธ์ใช้เวลา 5–50 มิลลิวินาที ขึ้นอยู่กับโมเดล
เพื่อเพิ่มประสิทธิภาพเวลาเริ่มต้น Core ML จะคอมไพล์โมเดลเมื่อใช้งานครั้งแรก โมเดลที่คอมไพล์ล่วงหน้าจะลดการเริ่มต้นเย็นจาก 2–3 วินาทีเหลือ 100–200 มิลลิวินาที แนะนำให้คอมไพล์โมเดลในขั้นตอนการ build ใน Xcode แทนที่จะคอมไพล์เมื่อเปิดแอปครั้งแรก ซึ่งสำคัญโดยเฉพาะสำหรับแอปที่มีโมเดล ML หลายตัว — เช่น การตรวจจับวัตถุ + การจำแนกประเภท + NLP
Core ML และ ML Kit แก้ปัญหา ML บนอุปกรณ์ที่คล้ายกัน แต่เน้นระบบนิเวศที่แตกต่างกัน Core ML บูรณาการอย่างลึกซึ้งกับ Apple Silicon และรองรับเฉพาะแพลตฟอร์ม Apple เท่านั้น ML Kit ของ Google เป็นโซลูชันข้ามแพลตฟอร์มสำหรับ Android และ iOS
| คุณลักษณะ | Core ML | ML Kit |
|---|---|---|
| แพลตฟอร์ม | iOS, macOS, watchOS, tvOS | Android, iOS |
| API ในตัว | ผ่าน Vision, Natural Language | 15+ API ในตัว |
| โมเดลกำหนดเอง | .mlpackage (PyTorch, TF) | TFLite (ผ่านอะแดปเตอร์) |
| การเร่งฮาร์ดแวร์ | ANE, GPU, CPU | GPU (Android), CPU |
| ความง่ายในการเริ่มต้น | ต้องการการแปลงโมเดล | API พร้อมใช้โดยไม่ต้องใช้ Data Science |
| ประสิทธิภาพ | 2–50 มิลลิวินาที (ANE) | 80–200 มิลลิวินาที (CPU/GPU) |
เลือก Core ML หากระบบนิเวศของคุณคือ Apple เท่านั้นและคุณต้องการประสิทธิภาพสูงสุดผ่าน ANE หากต้องการการรองรับข้ามแพลตฟอร์มหรือ API พร้อมใช้โดยไม่ต้องแปลง ML Kit จะใช้งานได้จริงมากกว่า
ในทางปฏิบัติ หลายโปรเจกต์ใช้ทั้งสองเฟรมเวิร์ก: iOS Core ML สำหรับประสิทธิภาพสูง และ ML Kit หรือ TensorFlow Lite บน Android โมเดล PyTorch แบบรวมจะถูกแปลงเป็น .mlpackage สำหรับ Apple และ .tflite สำหรับ Android ซึ่งช่วยรักษาคุณภาพของคุณสมบัติ ML ที่สอดคล้องกันบนทั้งสองแพลตฟอร์ม วิธีนี้ต้องใช้ความพยายาม DevOps เพิ่มขึ้นเล็กน้อย แต่ให้ความครอบคลุมผู้ชมสูงสุด
คำถามที่พบบ่อย
iOS 11+ สำหรับโมเดลพื้นฐาน iOS 14+ สำหรับรูปแบบ .mlpackage Apple Neural Engine ต้องใช้ชิป A12 Bionic หรือใหม่กว่า Core ML รองรับ iPhone, iPad และ Mac ทุกรุ่นตั้งแต่ปี 2017
ได้ ผ่านเครื่องมือ coremltools โมเดล TensorFlow จะถูกแปลงเป็น .mlpackage โดยคงความแม่นยำไว้ รูปแบบที่รองรับรวมถึง TensorFlow 2.x, SavedModel, H5 และ Frozen Graph
.mlpackage คือรูปแบบคอนเทนเนอร์ที่ทันสมัย โครงสร้างเป็นไดเรกทอรีที่มีเมตาดาต้า ไฟล์ไบนารี MLProgram และทรัพยากร มีขนาดกะทัดรัดกว่า .mlmodel แบบเก่า 2–3 เท่าและรองรับการควอนไทซ์
การคำนวณทั้งหมด ดำเนินการบนอุปกรณ์เท่านั้น Core ML ไม่ส่งข้อมูลไปยังเซิร์ฟเวอร์ของ Apple เฟรมเวิร์กทำงานในโหมดเครื่องบินและไม่ต้องการการเชื่อมต่ออินเทอร์เน็ตสำหรับการอนุมาน
Swift เป็นภาษาหลักสำหรับการบูรณาการ Core ML ในแอป iOS/macOS Python ใช้สำหรับการแปลงโมเดลผ่าน coremltools Objective-C ก็รองรับเช่นกันสำหรับความเข้ากันได้ย้อนหลัง
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม