WWDC18 ML Overview

WWDC18 ML Overview

3652e140db258288623a0adf248baec0?s=128

Shinichi Goto

June 15, 2018
Tweet

Transcript

  1. 3.

    ML-related Sessions in WWDC18 • 609 Metal for Accelera0ng Machine

    Learning • 703 Introducing Create ML • 708 What's New in Core ML, Part 1 • 709 What's New in Core ML, Part 2 • 712 A Guide to Turi Create • 713 Introducing Natual Language Framework • 716 Object Tracking in Vision • 717 Vision with Core ML • 719 Core Image: Performance, Prototyping, and Python 3
  2. 4.

    WWDC 18 ML Overview • Core ML 2 • Create

    ML • Turi Create • Metal • Vision / Natural Language 4
  3. 5.

    WWDC 18 ML Overview • Core ML 2 • Create

    ML • Turi Create • Metal • Vision / Natural Language 5
  4. 6.

    WWDC 18 ML Overview • Core ML 2 • Create

    ML • Turi Create • Metal • Vision / Natural Language 6
  5. 7.

    Core ML 2 708 What's New in Core ML, Part

    1ɹɹ709 What's New in Core ML, Part 2 7
  6. 8.

    Core ML (Recap) • Framework to integrate pre-trained models to

    apps • Inference only • Introduced Core ML model format (**.mlmodel) • Xcode automa9cally generates Swi; interface for model • Introduced coremltools 8
  7. 9.

    Core ML problem examples • Model size • Unsupported machine

    learning components • Cannot convert model if it includes components Core ML doesn't support • Model data protec;on • Parameters are not encrypted / can be seen • Why Core ML will not work for your app (most likely) 9
  8. 11.

    Core ML 2 Updates • Smaller • Weights Quan.za.on •

    Faster • Batch predic.on • Customizable • Custom Layer Supports (since iOS 11.) • Custom Model Supports 11
  9. 13.

    13

  10. 14.

    14

  11. 15.

    15

  12. 16.

    Weights Quan-za-on • Tradeoff between size and accuracy • Example

    in WWDC18 • Style Transfer • 6.7MB (32-bit) => 857KB (4-bit) • Without accuracy loss 16
  13. 17.

    How to get quan,zed models • coremltools provides method •

    Post-training quan5za5on • quantize_weights(model, 8, "linear") • Train quan5zed 17
  14. 19.

    if macos_version() < (10, 14): print("WARNING! Unable to return a

    quantized MLModel instance since OS != macOS 10.14 or later") print("Returning quantized model specification instead") return qspec 19
  15. 21.

    Batch // Old: Loop over inputs for i in 0..<

    modelInputs.count { modelOutputs[i] = model.prediction( from: modelInputs[i], options: options ) } // New: Batch predictions // Remove GPU idle time / Keep high-performance modelOutputs = model.predictions( from: modelInputs, options: options ) 21
  16. 22.

    Custom Layer / Model Supports • MLCustomLayer (Since iOS 11.2)

    • Can be used when Core ML doens't support desired neural net layer • MLCustomModel (Since iOS 12.0) • For ML other than neural net 22
  17. 23.

    23

  18. 24.

    Core ML 2 Updates • Smaller • Weights Quan2za2on •

    Faster • Batch predic2on • Customizable • Custom Layer Supports (since iOS 11.2) • Custom Model Supports 24
  19. 25.

    WWDC 18 ML Overview • Core ML 2 • Create

    ML • Turi Create • Metal • Vision / Natural Language 25
  20. 27.

    Create ML • New ML framework for training phase •

    Developers don't need to define ML algorithms • Tasks are limited • Create MLUI • Framework to train classifiers in the UI • GPU accerelated 27
  21. 28.

    Create ML Tasks • Image Classifica.on • Text classifica.on &

    Word tagging • Classical regression, classifica.on Tabular Data 28
  22. 29.

    Create ML Tasks • Image Classifica-on • Text classifica-on &

    Word tagging • Classical regression, classifica-on Tabular Data 29
  23. 30.

    Create ML Tasks • Image Classifica.on => Transfer Learning based

    • Text classifica.on & Word tagging • Classical regression, classifica.on Tabular Data 30
  24. 31.

    31

  25. 32.
  26. 33.

    Transfer Learning Pros on Create ML • Training with smaller

    data • Faster (compared to zero-based training) • Smaller models (e.g. 94.7MB => 83KB ) • Because training is done on top the model that already exists on OS 33
  27. 34.

    import Foundation import CreateML // Specify Data let trainDirectory =

    URL(fileURLWithPath: “/Users/createml/Desktop/Fruits“) let testDirectory = URL(fileURLWithPath: “/Users/createml/Desktop/TestFruits“) // Create Model let model = try MLImageClassifier(trainingData: .labeledDirectories(at: trainDirectory)) // Evaluate Model let evaluation = model.evaluation(on: .labeledDirectories(at: testDirectory)) // Save Model try model.write(to: URL(fileURLWithPath: “/Users/createml/Desktop/FruitClassifier.mlmodel“)) 34
  28. 35.

    // `MLImageClassifier.ModelParameters` var augmentationOptions: MLImageClassifier.ImageAugmentationOptions // `MLImageClassifier.ImageAugmentationOptions` static let blur:

    MLImageClassifier.ImageAugmentationOptions static let exposure: MLImageClassifier.ImageAugmentationOptions static let flip: MLImageClassifier.ImageAugmentationOptions static let noise: MLImageClassifier.ImageAugmentationOptions static let rotation: MLImageClassifier.ImageAugmentationOptions static let shear: MLImageClassifier.ImageAugmentationOptions 35
  29. 36.

    WWDC 18 ML Overview • Core ML 2 • Create

    ML • Turi Create • Metal • Vision / Natural Language 36
  30. 38.

    Turi Create (apple/turicreate) • Python package for crea1ng Core ML

    models • Released in 2017/12 • Developers don't need to define ML algorithms (again) • Apple acquires Turi, a machine learning company | TechCrunch (posted Aug 5, 2016) 38
  31. 39.

    Turi Create: Supported Tasks • Image classifica-on, Object detec-on •

    => Transfer Learning based • Image similarity • Recommender systems • Text classifier • Ac-vity classifica-on • Essen-al tasks (regression, classifica-on, etc.) 39
  32. 40.

    # https://apple.github.io/turicreate/docs/userguide/image_classifier/introduction.html import turicreate as tc data = tc.SFrame('cats-dogs.sframe') train_data,

    test_data = data.random_split(0.8) # Automatically picks the right model based on your data. # Based on Transfer Learning model = tc.image_classifier.create(train_data, target='label') predictions = model.predict(test_data) metrics = model.evaluate(test_data) model.save('mymodel.model') model.export_coreml('MyCustomImageClassifier.mlmodel') 40
  33. 42.

    Turi Create 5.0 • New Task • Style Transfer •

    New Deployments • Recommenders • Vision Feature Print powered models • GPU Accelera@on 42
  34. 43.

    43

  35. 44.

    44

  36. 46.

    Recap • WWDC18 ML overview • Core ML 2 •

    Create ML • Turi Create • Running ML on device has become much more realis?c 46
  37. 47.

    Reference • 703 Introducing Create ML • 708 What's New

    in Core ML, Part 1 • 709 What's New in Core ML, Part 2 • 712 A Guide to Turi Create • Apple Developer DocumentaIon • Turi Create User Guide • Turi Create User Guide • Becoming Human : Understanding the Structure of Neural Networks • SmartNews Engineering Blog : χϡʔϥϧωοτϫʔΫͷྔࢠԽʹ͍ͭͯͷ࠷ۙͷݚڀͷਐలͱɺͦͷॏ ཁੑ 47