Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Вам стоит использовать Scala в машинном обучении

Вам стоит использовать Scala в машинном обучении

Yuriy Artamonov

June 08, 2019
Tweet

More Decks by Yuriy Artamonov

Other Decks in Programming

Transcript

  1. Наш план 1. Что за язык 2. Где тут код

    писать 3. Какие есть библиотеки 2 И где то там про Machine Learning ещё будет
  2. История развития • Дизайн языка разработан в 2001 (EPFL) •

    Автор - Martin Odersky • 2006 - Scala 2.0 • 2011 - Typesafe Inc. (сейчас Lightbend Inc.) 5
  3. Лучше всего подходит для • Big Data • Data Science

    • Web Applications • Distributed Systems • Concurrency and Parallelism • Scientific Computations: NLP, Numerical Computing, Data Visualization 7
  4. Functional + Object Oriented 1. Высокоуровневый язык сочетающий OOP и

    FP 2. Краткий синтаксис без мусора 3. Статическая типизация и вывод типов 10
  5. Type Inference • Компилятор выводит тип переменных • Тип фиксируется

    первым присваиванием • IDE это всё понимает! 11
  6. Pattern Matching • Сравнение по образцу - switch на стероидах

    • Поддерживает деконструкцию • Полезно вместе с case classes 13
  7. Concurrency & Asynchronous • Future & Promise • Async /

    Await • Akka ! • java.util.concurrent 14
  8. Scalaz / Tagless Final / ZIO / etc • Scalaz

    - для пуристов • Неразмеченные Конечные Интепретаторы • ZIO - хитрый и асинхронный IO Это не наш случай! 15 Читать нечитаемый код Писать нечитаемый код
  9. 18

  10. VS Code and Language Server • Scala syntax • sbt

    plugin • autocompletion Рефакторинг не поддерживается :( 21
  11. IntelliJ IDEA + Scala plugin • sbt / Gradle /

    Maven • Syntax highlighting • Inspections • Refactoring ! • Worksheets 22
  12. IntelliJ IDEA Worksheets • Интерактивный REPL • Можно править код

    • Интегрирован в IDE ! • Доступны все библиотеки и код проекта 23
  13. Breeze NLP • Breeze - linear algebra, numerical computing and

    optimization • Epic - structured text processor • Puck - GPU powered parser 27
  14. ND4J • ND Arrays - multidimensional arrays in memory with

    flat layout • Off-heap and memory effective • Native libraries interop 28
  15. Apache Spark • In-Memory • Big Data Processing • Distributed

    Computations • DataFrames • Spark SQL 29
  16. Spark ML Run ML pipelines on Spark Check ML guides:

    https://spark.apache.org/docs/1.2.2/ml-guide.html 30
  17. Apache PredictionIO • Machine Learning Server • Batch Processing •

    Real-time • Predefined Models: Clustering, Recommenders, Regression, NLP, ... 31
  18. Deeplearning4j • Neural networks - tons of nertworks • Deep

    learning • Image / Data processing • Optimized performance (OpenBLAS) • GPU supported 32
  19. Smile Statistical Machine Intelligence and Learning Engine • Preprocessing •

    Feature selection • Supervised learning • Unsupervised learning • Reinforcement learning 33
  20. Scala 3 coming soon... • Intersection & Union types •

    Enumerations • Null safety • Opaque types ETA 2020 39
  21. Вместо заключения • https://www.scala-exercises.org/ • Functional Programming in Scala (Coursera)

    • Big Data Analysis with Scala and Spark (Coursera) • Programming Reactive Systems (Edx) 40