Core ML: คืออะไร สถาปัตยกรรมเฟรมเวิร์กและการรวมโมเดล

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-07-17 เวลาอ่าน: 10 นาที

Core ML — คือเฟรมเวิร์กแมชชีนเลิร์นนิงจาก Apple ที่ช่วยให้สามารถรวมโมเดล ML ที่ผ่านการฝึกอบรมล่วงหน้าเข้ากับแอปพลิเคชัน iOS, iPadOS, macOS, watchOS และ tvOS ได้โดยตรง เฟรมเวิร์กรองรับโครงข่ายประสาทเทียม ต้นไม้ตัดสินใจ การถดถอยเชิงเส้น และวิธีการแบบ Ensemble รวมถึงการแปลงโมเดลจาก TensorFlow, PyTorch, Keras และ ONNX เป็นรูปแบบเฉพาะของ Apple ตามข้อมูลจาก Apple Machine Learning Research (2025) Core ML ดำเนินการอนุมานบนอุปกรณ์อย่างสมบูรณ์ ทำให้มั่นใจในความเป็นส่วนตัวของข้อมูลและมีความหน่วงน้อยกว่า 10 มิลลิวินาทีสำหรับโมเดลส่วนใหญ่

หัวข้อสำคัญ

  • Core ML — คือเฟรมเวิร์กเฉพาะของ Apple สำหรับการเรียกใช้โมเดล ML บนอุปกรณ์โดยไม่ต้องประมวลผลบนเซิร์ฟเวอร์
  • รองรับการแปลงโมเดลจาก TensorFlow, PyTorch, Keras, ONNX และรูปแบบยอดนิยมอื่น ๆ
  • การอนุมานดำเนินการบน Neural Engine, GPU หรือ CPU โดยเลือกตัวประมวลผลที่เหมาะสมที่สุดโดยอัตโนมัติ
  • เฟรมเวิร์กประกอบด้วยการปรับแต่ง: การควอนไทซ์ (Float16, Int8), การตัดแต่ง, การรวมเลเยอร์เพื่อเพิ่มความเร็ว
  • Core ML 5 (2024) เพิ่มการรองรับ แพ็คเกจ .mlpackage, โครงข่ายประสาทแบบไดนามิก และการเรียนรู้แบบควบคุมบนอุปกรณ์

Core ML คืออะไร?

Core ML — คือองค์ประกอบสำคัญของระบบนิเวศแมชชีนเลิร์นนิงของ Apple ที่เปิดตัวในงาน WWDC 2017 ก่อน Core ML นักพัฒนา iOS ใช้ไลบรารีของบริษัทอื่น (TensorFlow Mobile, Caffe2) หรือโซลูชันที่เขียนขึ้นเองเพื่อเรียกใช้โมเดล ML บนอุปกรณ์ Core ML มอบอินเทอร์เฟซแบบรวมเป็นหนึ่งเดียวสำหรับโมเดลทุกประเภท ตั้งแต่การถดถอยแบบคลาสสิกไปจนถึงโครงข่ายประสาทเทียมเชิงลึก และจัดการการปรับแต่งระดับต่ำให้เหมาะกับอุปกรณ์แต่ละรุ่น

ประวัติการพัฒนา

Core ML เวอร์ชันแรก (2017) รองรับเฉพาะโมเดลแบบคงที่ที่มีขนาดอินพุตคงที่ Core ML 2 (2018) เพิ่มการรองรับ การทำนายแบบแบตช์ และการอัปเดตโมเดลแบบทันที Core ML 3 (2019) นำการเรียนรู้บนอุปกรณ์และการรองรับเลเยอร์โครงข่ายประสาทเทียมใหม่หลายสิบประเภท Core ML 4 (2021) เพิ่มการรองรับโมเดลที่มีหลายเอาต์พุตและการประมวลผลภาพที่ดีขึ้น Core ML 5 (2024) เพิ่มการรองรับโครงข่ายประสาทแบบไดนามิกและการเรียนรู้แบบควบคุมบนอุปกรณ์โดยใช้เลเยอร์ ML ใหม่

ML บนอุปกรณ์: ข้อดี

การดำเนินการแมชชีนเลิร์นนิงบนอุปกรณ์ให้ข้อดีสำคัญสามประการ: ความเป็นส่วนตัว — ข้อมูลไม่ออกจากอุปกรณ์ (สอดคล้องกับข้อกำหนด GDPR และ HIPAA), ความเร็ว — การอนุมานดำเนินการในระดับมิลลิวินาทีโดยไม่มีความหน่วงจากการส่งข้อมูลผ่านเครือข่าย, การทำงานแบบออฟไลน์ — โมเดลทำงานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต ตามรายงาน Apple Privacy Report (2025) การอนุมาน ML มากกว่า 90% บนแพลตฟอร์มของ Apple ดำเนินการบนอุปกรณ์ผ่าน Core ML

สถาปัตยกรรม Core ML และแบ็กเอนดการคำนวณ

สถาปัตยกรรม Core ML — สร้างขึ้นบนหลักการแบบหลายชั้น: ชั้นบนสุดคือ API สำหรับนักพัฒนา (MLModel, MLFeatureProvider, MLPredictionOptions), ชั้นกลางคือโมเดลที่แสดงในรูปแบบ .mlpackage, ชั้นล่างสุดคือแบ็กเอนด์การคำนวณ: Apple Neural Engine (ANE), GPU (Metal Shaders) และ CPU (BNNS, Accelerate framework) Core ML เลือกแบ็กเอนด์ที่ดีที่สุดโดยอัตโนมัติตามประเภทโมเดลและฮาร์ดแวร์ของอุปกรณ์

แบ็กเอนด์อุปกรณ์ประสิทธิภาพ
Neural EngineiPhone Xs+, iPad A12+, Mac M1+สูงสุด (TOPS)
GPU (Metal)อุปกรณ์ Apple ทั้งหมดสูง (การคำนวณแบบขนาน)
CPU (BNNS)อุปกรณ์ Apple ทั้งหมดพื้นฐาน (ความเข้ากันได้)

Apple Neural Engine

Neural Engine (ANE) — คือตัวประมวลผลประสาทเฉพาะทางที่ฝังอยู่ในชิป Apple A12+ และ M1+ ANE ได้รับการปรับแต่งสำหรับการดำเนินการของโครงข่ายประสาทเทียมแบบคอนโวลูชัน (CNN) และตัวคูณเมทริกซ์ด้วยประสิทธิภาพสูงสุด 15.8 TOPS บน A17 Pro และ 38 TOPS บน M4 Core ML จะตรวจสอบโดยอัตโนมัติว่าโมเดลสามารถทำงานบน ANE ได้หรือไม่ และหากได้ก็จะโหลดโมเดลไปที่นั่น หากโมเดลมีการดำเนินการที่ไม่รองรับบน ANE Core ML จะกระจายการคำนวณระหว่าง GPU และ CPU

Metal Performance Shaders

สำหรับการคำนวณบน GPU Core ML ใช้ Metal Performance Shaders Graph (MPSGraph) ซึ่งเป็นเฟรมเวิร์กสำหรับสร้างและดำเนินการกราฟการคำนวณบน GPU MPSGraph นำกราฟโครงข่ายประสาทจาก Core ML และคอมไพล์เป็น Metal Shaders ที่ปรับแต่งเฉพาะสำหรับสถาปัตยกรรม GPU แต่ละรุ่น (GPU A17 แบบ 7 คอร์ หรือ GPU M4 Ultra แบบ 40 คอร์) การปรับแต่งอัตโนมัติของ MPSGraph รวมถึงการรวมเลเยอร์ การกำจัดการดำเนินการที่ซ้ำซ้อน และการเลือกรูปแบบข้อมูลที่เหมาะสมที่สุด

ประเภทโมเดลและรูปแบบที่รองรับ

Core ML รองรับโมเดลแมชชีนเลิร์นนิงทุกประเภทหลัก แบ่งออกเป็นสามหมวดหมู่: โครงข่ายประสาทเทียม (CNN แบบคอนโวลูชัน, RNN/LSTM แบบเวียนกลับ, ทรานส์ฟอร์เมอร์), โมเดลแบบ Ensemble (Random Forest, Gradient Boosting, XGBoost, Decision Trees) และ โมเดลการถดถอย (การถดถอยเชิงเส้น, SVM, CRF) โมเดลแต่ละประเภทมีโปรโตคอลย่อย MLModelType ของตัวเอง และ Core ML จะเลือกแบ็กเอนด์และรูปแบบการดำเนินการที่เหมาะสมโดยอัตโนมัติ

เลเยอร์โครงข่ายประสาทที่รองรับ

Core ML รองรับ เลเยอร์โครงข่ายประสาทมากกว่า 150 ชนิด: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrent (LSTM/GRU/SimpleRNN), Transformers (MultiHeadAttention, LayerNorm), เลเยอร์เฉพาะ Metal สำหรับเลเยอร์ที่ไม่รองรับ Core ML มีกลไก custom layer — ความสามารถในการเขียนเลเยอร์ที่กำหนดเองด้วย Metal Shading Language หรือ Swift

swift
let model = try MLModel(contentsOf: modelURL)
let input = try MLMultiArray(shape: [1, 224, 224, 3], dataType: .float32)
let prediction = try model.prediction(from: input)

รูปแบบไฟล์โมเดล

ก่อนปี 2021 Core ML ใช้รูปแบบ .mlmodel — ไฟล์ไบนารีที่เก็บน้ำหนักและเมตาดาต้าของโมเดลทั้งหมด ตั้งแต่ Xcode 13 และ Core ML 4 Apple ได้นำเสนอรูปแบบใหม่ .mlpackage — โครงสร้างแบบแพ็คเกจที่ใช้ไดเรกทอรี ประกอบด้วยโมเดล เมตาดาต้า คำอธิบายอินพุต/เอาต์พุต และไฟล์ก่อนและหลังการประมวลผลในรูปแบบ JSON mlpackage รองรับการกำหนดเวอร์ชันด้วย git ซึ่งช่วยให้การพัฒนาทีมง่ายขึ้น การแปลง .mlmodel เป็น .mlpackage ทำได้ด้วยยูทิลิตี้ Xcode Model Compiler หรือสคริปต์ coremltools ใน Python

การแปลงโมเดลเป็น Core ML

การแปลง โมเดลจากเฟรมเวิร์กภายนอกเป็น Core ML ดำเนินการด้วยไลบรารี coremltools บน Python coremltools รองรับการนำเข้าโมเดลจาก TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, โมเดล traced/scripted), Keras (H5), ONNX และโมเดลที่สร้างด้วย Create ML ขั้นตอนการแปลงมาตรฐานประกอบด้วยสามขั้นตอน: โหลดโมเดลในรูปแบบต้นฉบับ, แปลงเป็น MIL (Model Intermediate Language) — การแสดงภายในของ Core ML, และส่งออกเป็น .mlpackage

python
import coremltools as ct

model = ct.converters.pytorch.convert(
    source = "model.pt",
    inputs = [ct.TensorType(shape=(1, 3, 224, 224))]
)
model.author = "IT Sectr"
model.short_description = "Image classifier"
model.save("MyModel.mlpackage")

การตรวจสอบโมเดลหลังการแปลง

หลังการแปลงจำเป็นต้องตรวจสอบ ความแม่นยำของโมเดล โดยเปรียบเทียบการทำนายของโมเดลดั้งเดิมและโมเดล Core ML ที่แปลงแล้วบนข้อมูลชุดเดียวกัน ค่าเบี่ยงเบนที่ยอมรับได้คือไม่เกิน 1e-3 (0.1%) สำหรับ Float32 และ 1e-2 (1%) สำหรับ Float16/Int8 coremltools มียูทิลิตี้ ct.utils.compare_models() สำหรับการเปรียบเทียบอัตโนมัติ หากค่าเบี่ยงเบนเกินเกณฑ์ อาจมีปัญหาเกี่ยวกับการดำเนินการที่ไม่รองรับ — ต้องแทนที่ด้วย custom layers หรือทำให้โมเดลง่ายขึ้น

การเพิ่มประสิทธิภาพ Core ML

การเพิ่มประสิทธิภาพ โมเดล Core ML คือกระบวนการลดขนาดโมเดลและเพิ่มความเร็วในการอนุมานโดยสูญเสียความแม่นยำเล็กน้อย Apple มีเครื่องมือปรับแต่งหลายอย่างที่รวมอยู่ใน coremltools และ Xcode: การควอนไทซ์ (ลดความแม่นยำของน้ำหนัก), การตัดแต่ง (ลบนิวรอนที่มีนัยสำคัญน้อย), การกำจัดเลเยอร์ที่ซ้ำซ้อน และการรวมเลเยอร์เพื่อลดกราฟการคำนวณ

การควอนไทซ์เป็น Float16 และ Int8

การควอนไทซ์ ช่วยลดขนาดโมเดลประมาณ 2 เท่า (Float16) หรือ 4 เท่า (Int8) เมื่อเทียบกับ Float32 Core ML รองรับโหมดการควอนไทซ์สามแบบ: การควอนไทซ์หลังการฝึกอบรม (PTQ) พร้อมชุดข้อมูลสอบเทียบ, ระหว่างการแปลงผ่าน coremltools และการฝึกอบรมแบบคำนึงถึงการควอนไทซ์ (QAT) สำหรับโมเดลคอมพิวเตอร์วิทัศน์ส่วนใหญ่ PTQ เป็น Float16 ทำให้สูญเสียความแม่นยำน้อยกว่า 0.5% ในขณะที่ความเร็วในการอนุมานเพิ่มขึ้นเป็นสองเท่า

การตรวจโปรไฟล์โมเดลใน Xcode

Xcode มีเครื่องมือ Core ML Model Profiler ที่ช่วยวัดประสิทธิภาพของโมเดลบนอุปกรณ์ต่าง ๆ ในโปรแกรมจำลองหรือบนอุปกรณ์จริง โปรไฟลเลอร์แสดงเวลาดำเนินการของแต่ละเลเยอร์ การโหลดแบ็กเอนด์ (ANE/GPU/CPU) การใช้หน่วยความจำสูงสุด และจุดคอขวดของโมเดล ตามข้อมูล Apple Performance Optimization Guide โมเดลมากกว่า 80% มีอย่างน้อยหนึ่งเลเยอร์ที่ทำงานช้ากว่าเลเยอร์อื่นอย่างมีนัยสำคัญ (ความผิดปกติของเลเยอร์) ซึ่งสามารถปรับแต่งได้โดยการแทนที่หรือรวมเลเยอร์

ตัวอย่างการรวม Core ML

พิจารณา การรวม โมเดล Core ML ที่ผ่านการฝึกอบรมเข้ากับแอปพลิเคชัน iOS ใน Swift หลังจากเพิ่มไฟล์ .mlpackage ลงในโปรเจกต์ Xcode (โดยการลากและวางหรือผ่าน Swift Package Manager) Xcode จะสร้างคลาสโมเดลใน Swift โดยอัตโนมัติ ซึ่งรวมถึงอินพุตและเอาต์พุตแบบกำหนดชนิด นักพัฒนาไม่จำเป็นต้องแยกวิเคราะห์อินพุตด้วยตนเอง — คลาสที่สร้างขึ้นจะรับ UIImage, MLMultiArray, String หรือประเภทอื่น ๆ ตามเมตาดาต้าของโมเดล

swift
import CoreML
import Vision

guard let model = try? VNCoreMLModel(
    for: MyImageClassifier().model
) else { return }

let request = VNCoreMLRequest(model: model) { request, error in
    guard let results = request.results
        as? [VNClassificationObservation]
    else { return }

    if let topResult = results.first {
        print("Class: \(topResult.identifier)")
        print("Confidence: \(topResult.confidence)")
    }
}

let handler = VNImageRequestHandler(
    cgImage: image.cgImage!,
    options: [:]
)
try handler.perform([request])

การจัดการข้อผิดพลาดและ Fallback

เมื่อรวม Core ML จำเป็นต้องเตรียม การจัดการข้อผิดพลาด: โมเดลอาจไม่โหลดเนื่องจากความไม่เข้ากันกับอุปกรณ์ (เวอร์ชัน iOS เก่าเกินไป) หน่วยความจำไม่เพียงพอ หรือไฟล์โมเดลเสียหาย แนะนำให้ใช้ตรรกะแบบ fallback: หากโมเดลไม่โหลดในรูปแบบ Int8 ที่ควอนไทซ์แล้ว ให้โหลดเวอร์ชัน Float16 และหากไม่โหลดอีกก็ให้โหลด Float32 ตามข้อมูล Apple Crash Analytics การล่มของแอปพลิเคชัน ML มากกว่า 5% เกิดจากการโหลดโมเดลที่ไม่ถูกต้อง

Core ML vs Create ML: ต่างกันอย่างไร

Core ML และ Create ML — เป็นเครื่องมือสองอย่างที่เสริมกันในระบบนิเวศ ML ของ Apple Core ML ทำหน้าที่เรียกใช้โมเดลบนอุปกรณ์ (การอนุมาน) ในขณะที่ Create ML ทำหน้าที่ฝึกอบรมโมเดล (การเทรน) โมเดลที่สร้างใน Create ML จะถูกส่งออกในรูปแบบ Core ML (.mlpackage) เพื่อนำไปรวมในแอปพลิเคชัน หากเปรียบเทียบกับการพัฒนาเว็บ Core ML คือเบราว์เซอร์ (การทำงาน) และ Create ML คือ IDE สำหรับเขียนโค้ด (การฝึกอบรม)

พารามิเตอร์Core MLCreate ML
วัตถุประสงค์การดำเนินการโมเดล (การอนุมาน)การอบรมโมเดล (การเทรน)
แพลตฟอร์มiOS, iPadOS, macOS, watchOS, tvOSmacOS (เท่านั้น)
รูปแบบ.mlpackage (บริโภค).mlpackage (สร้าง)
โค้ดSwift / Objective-C APIUI (Xcode) หรือ Swift API
ผู้ใช้นักพัฒนาแอปพลิเคชันนักพัฒนา / นักทางข้อมูล

คำถามที่พบบ่อย

Core ML คืออะไร?

Core ML — คือเฟรมเวิร์กแมชชีนเลิร์นนิงของ Apple สำหรับการเรียกใช้โมเดล ML ที่ผ่านการฝึกอบรมล่วงหน้าบนอุปกรณ์ iOS, iPadOS, macOS, watchOS และ tvOS รองรับโครงข่ายประสาทเทียม ต้นไม้ตัดสินใจ และการถดถอย โดยเลือกแบ็กเอนด์การคำนวณที่เหมาะสมที่สุดโดยอัตโนมัติ (Neural Engine, GPU หรือ CPU)

Core ML แตกต่างจาก TensorFlow อย่างไร?

TensorFlow — คือเฟรมเวิร์กอเนกประสงค์สำหรับการฝึกอบรมและเรียกใช้โมเดลบนเซิร์ฟเวอร์และอุปกรณ์มือถือ Core ML — คือเอนจินเฉพาะทางสำหรับการเรียกใช้ (ไม่ใช่การฝึกอบรม) โมเดลบนอุปกรณ์ Apple เท่านั้น ด้วยประสิทธิภาพสูงสุดผ่านการปรับแต่งสำหรับฮาร์ดแวร์เฉพาะ (ANE, GPU, Metal) TensorFlow Mobile ไม่ได้รับการสนับสนุนบน iOS อีกต่อไป — Apple แนะนำ Core ML สำหรับงาน ML ทั้งหมดบนแพลตฟอร์มของตน

แปลงโมเดล PyTorch เป็น Core ML ได้อย่างไร?

การแปลงทำได้ด้วยไลบรารี coremltools ใน Python: ส่งออกโมเดล PyTorch เป็น TorchScript (torch.jit.trace) จากนั้นใช้ ct.converters.pytorch.convert() เพื่อสร้าง .mlpackage coremltools จะจับคู่เลเยอร์ของ PyTorch กับเลเยอร์ที่ Core ML รองรับโดยอัตโนมัติและปรับแต่งกราฟสำหรับ ANE

Core ML ทำงานบน iPhone ทุกรุ่นหรือไม่?

Core ML ทำงานบน iPhone ทุกรุ่นที่ใช้ iOS 11 ขึ้นไป อย่างไรก็ตาม ประสิทธิภาพขึ้นอยู่กับฮาร์ดแวร์: iPhone 5s/6 — CPU เท่านั้น (การอนุมานช้า), iPhone 8/X — GPU (Metal), iPhone Xs ขึ้นไป — Neural Engine (ประสิทธิภาพสูงสุดถึง 15.8 TOPS บน A17 Pro) เพื่อประสิทธิภาพที่ดีที่สุด แนะนำให้กำหนด iOS 12+ เป็นเวอร์ชันขั้นต่ำ

โมเดล Core ML ใช้รูปแบบไหน?

รูปแบบปัจจุบันคือ .mlpackage (ไดเรกทอรีที่ประกอบด้วยโมเดล เมตาดาต้า และคำอธิบายอินพุต/เอาต์พุต) รูปแบบเดิมคือ .mlmodel (ไฟล์ไบนารีเดี่ยว) Xcode จะแปลง .mlmodel เป็น .mlpackage โดยอัตโนมัติเมื่อคอมไพล์ แต่สำหรับโปรเจกต์ใหม่แนะนำให้ใช้ .mlpackage โดยตรง

สรุป

  • Core ML — คือเฟรมเวิร์กมาตรฐานของ Apple สำหรับแมชชีนเลิร์นนิงบนอุปกรณ์ ทำงานบนทุกแพลตฟอร์มในระบบนิเวศ
  • รองรับการแปลงจาก TensorFlow, PyTorch, Keras และ ONNX ผ่านไลบรารี coremltools ใน Python
  • การอนุมานดำเนินการบน Neural Engine (iPhone Xs+), GPU (Metal) หรือ CPU โดยเลือกแบ็กเอนด์อัตโนมัติ
  • การควอนไทซ์เป็น Float16 และ Int8 ช่วยลดขนาดโมเดล 2-4 เท่า โดยสูญเสียความแม่นยำน้อยที่สุด
  • Create ML สร้างโมเดลสำหรับ Core ML ส่วน Core ML ทำหน้าที่เรียกใช้เท่านั้น — เป็นเครื่องมือคนละอย่าง
  • รูปแบบ .mlpackage แทนที่ .mlmodel เดิม โดยรองรับ การกำหนดเวอร์ชันและเมตาดาต้าใน JSON
  • ตัวโปรไฟลเลอร์ Core ML ใน Xcode ช่วยระบุ จุดคอขวดของโมเดลและปรับแต่งโดยการแทนที่เลเยอร์

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม