Home Knowledge Base Mobile ML: iOS and Android

Mobile ML: iOS and Android

Mobile ML Frameworks

iOS

FrameworkPurpose
Core MLApple ML inference
Create MLTraining on Mac
VisionComputer vision
Natural LanguageNLP tasks
MetalGPU compute

Android

FrameworkPurpose
TensorFlow LiteGoogle ML framework
ML KitPre-built ML features
NNAPINeural network API
PyTorch MobilePyTorch on Android

Core ML Integration

import CoreML

// Load model
let model = try! MyModel()

// Run inference
let input = MyModelInput(text: "Hello world")
let output = try! model.prediction(input: input)
print(output.label)

TensorFlow Lite Android

import org.tensorflow.lite.Interpreter

val interpreter = Interpreter(loadModelFile())

// Prepare input
val input = floatArrayOf(...)
val output = Array(1) { FloatArray(numClasses) }

// Run inference
interpreter.run(input, output)

Converting Models

To Core ML

import coremltools as ct

# From PyTorch
traced_model = torch.jit.trace(model, example_input)
mlmodel = ct.convert(traced_model, inputs=[ct.TensorType(name="input", shape=(1, 512))])
mlmodel.save("model.mlpackage")

To TensorFlow Lite

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

with open("model.tflite", "wb") as f:
    f.write(tflite_model)

On-Device LLMs

LLM on iOS

// Using llama.cpp Swift bindings
let llama = LlamaModel(path: "model.gguf")
let response = llama.generate("Hello, how are you?", maxTokens: 100)

LLM on Android

// Using llama.android
val llama = LlamaAndroid()
llama.loadModel("/sdcard/model.gguf")
val response = llama.generate("Tell me a joke")

Size Constraints

PlatformTypical Limit
iOS App Store4GB download
Android Play2GB (150MB ideal)
iOS in-appLimited by device

Best Practices

mobileiosandroidon device

Explore 500+ Semiconductor & AI Topics

From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.