Академический Документы
Профессиональный Документы
Культура Документы
Вам Стоит Использовать Scala Для ML
Вам Стоит Использовать Scala Для ML
использовать
Scala для ML!
Юрий Артамонов
Haulmont
Наш план
1. Что за язык
2. Где тут код писать
3. Какие есть библиотеки
2
Не этот мужик
3
Язык программирования
4
История развития
● Дизайн языка разработан в 2001 (EPFL)
● Автор - Martin Odersky
● 2006 - Scala 2.0
● 2011 - Typesafe Inc.
(сейчас Lightbend Inc.)
5
Кто пользуется этим всем
6
Лучше всего подходит для
● Big Data
● Data Science
● Web Applications
● Distributed Systems
● Concurrency and Parallelism
● Scientific Computations: NLP, Numerical
Computing, Data Visualization
7
Сильная статическая типизация
Динамическая
Слабая Сильная
Статическая
8
Multiplatform
● JVM
● JavaScript - Scala.js
● Native - Scala Native
(LLVM based)
9
Functional + Object Oriented
1. Высокоуровневый язык сочетающий OOP и FP
2. Краткий синтаксис без мусора
3. Статическая типизация и вывод типов
10
Type Inference
● Компилятор выводит
тип переменных
● Тип фиксируется
первым
присваиванием
● IDE это всё понимает!
11
Разные штуки
● Case Classes
● Type Aliases
● Implicit Conversions
● Extension Methods
12
Pattern Matching
● Сравнение по
образцу - switch на
стероидах
● Поддерживает
деконструкцию
● Полезно вместе с
case classes
13
Concurrency & Asynchronous
● Future & Promise
● Async / Await
● Akka !
● java.util.concurrent
14
Scalaz / Tagless Final / ZIO / etc
● Scalaz - для пуристов Читать
● Неразмеченные нечитаемый
код
Конечные
Интепретаторы
● ZIO - хитрый и
Писать
асинхронный IO нечитаемый
код
16
Задачи
● классификация
● кластеризация
● регрессия
● восстановление
плотности
распределения
● ...
17
18
Инструменты
Ну не на листочке же матрицы умножать
19
Чернющий REPL
> sbt console
20
VS Code and Language Server
● Scala syntax
● sbt plugin
● autocompletion
Рефакторинг не
поддерживается :(
21
IntelliJ IDEA + Scala plugin
● sbt / Gradle /
Maven
● Syntax
highlighting
● Inspections
● Refactoring !
● Worksheets
22
IntelliJ IDEA Worksheets
● Интерактивный REPL
● Можно править код
● Интегрирован в IDE !
● Доступны все
библиотеки и код
проекта
23
Интерактивные консоли
● Apache Zeppelin
● Scala Notebook
● Spark Notebook
● Databricks
24
Библиотеки
Как нанести непоправимую пользу окружающим
25
Akka
● Actor model
● Concurrency
● Parallel computations
● Distributed systems
26
Breeze NLP
● Breeze - linear algebra,
numerical computing
and optimization
● Epic - structured text
processor
● Puck - GPU powered
parser
27
ND4J
● ND Arrays - multidimensional arrays
in memory with flat layout
● Off-heap and memory effective
● Native libraries interop
28
Apache Spark
● In-Memory
● Big Data Processing
● Distributed Computations
● DataFrames
● Spark SQL
29
Spark ML
Run ML pipelines on Spark
Check ML guides:
https://spark.apache.org/docs/1.2.2/ml-guide.html
30
Apache PredictionIO
● Machine Learning Server
● Batch Processing
● Real-time
● Predefined Models:
Clustering,
Recommenders,
Regression, NLP, ...
31
Deeplearning4j
● Neural networks - tons of nertworks
● Deep learning
● Image / Data processing
● Optimized performance (OpenBLAS)
● GPU supported
32
Smile
Statistical Machine Intelligence and Learning Engine
● Preprocessing
● Feature selection
● Supervised learning
● Unsupervised learning
● Reinforcement learning
33
Визуализация данных
● Breeze-viz
● Vegas
● Plotly
34
Vegas
35
Задачка #1
Классификация - Smile
Пример:
K-nearest neighbours
36
Задачка #2 - Cloud Load Balancing
Регрессия - Deeplearning4j
37
Scala vs Python
● Статическая типизация
vs динамическая
● Сложность vs простота
● Продакшен vs
прототипы
38
Scala 3 coming soon...
● Intersection & Union
types
● Enumerations
● Null safety
● Opaque types
ETA 2020
39
Вместо заключения
● https://www.scala-exercises.org/
● Functional Programming in Scala (Coursera)
● Big Data Analysis with Scala and Spark (Coursera)
● Programming Reactive Systems (Edx)
40