Skip to content

Cartesian-School/introduction-to-julia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License: MIT Julia Jupyter Notebook Linux Windows FreeBSD

Introduction-to-Julia

Learn the language basics in this 12-part course

Julia_mini

Основы Julia. Слияние Простоты и Мощи

🚀 13 Уроков в блокнотах Jupyter




Основано на работе Андреаса Ноака Йенсена (MIT & JuliaComputing)
С обновлениями, дополнениями и переводом Сергея Соболевского



1️⃣ Julia – революция в вычислениях

Julia появилась в 2012 году благодаря четырём разработчикам:

  • Джефф Безансон

  • Стефан Карпински

  • Вирал Би Шах

  • Алан Эдельман


Какова была их цель? - Создать язык программирования, который:

  • Был бы таким же лёгким, как Python 🐍

  • Работал бы так же быстро, как C

  • Обладал бы динамичностью Ruby 💎

  • Имел бы математические возможности MATLAB 📊

  • Поддерживал бы метапрограммирование, как Lisp 🧠


🔹 Julia = Простота + Скорость + Гибкость

Julia сочетает интерпретируемость Python и производительность C/Fortran благодаря JIT-компиляции через LLVM.


📌 Что делает её мощной?

  1. JIT-компиляция (Just-In-Time) – высокая скорость выполнения

  2. Гибкость: динамическая и строгая типизация

  3. Множественная диспетчеризация (Multiple Dispatch)

  4. Отличная работа с массивами (Zero-based copy-on-write)

  5. Масштабируемость: от ноутбука до суперкомпьютеров

  6. Глубокая интеграция с Python, C, R, MATLAB

  7. Машинное обучение (Flux.jl, MLJ.jl, Turing.jl)


Экосистема Julia содержит более 10 000 пакетов, зарегистрированных в Общем реестре, что означает, что поиск нужного пакета может быть сложной задачей.

К счастью, существуют сервисы, которые могут помочь ориентироваться в экосистеме, в том числе:

  • JuliaHub — a JuliaHub service that includes search of all registered open source package documentation, code search, and navigation by tags/keywords.

  • Julia Packages — просматривайте пакеты Julia, фильтруйте по категориям и сортируйте их по популярности, дате создания или последнего обновления. Также поддерживается просмотр пакетов разработчиков.

  • Julia.jl — систематизация пакетов Julia, созданная вручную (информация о категориях для JuliaPackages также является производной от этой).

<br



2️⃣ JIT-компиляция: Julia быстрее Python

Julia использует JIT-компиляцию через LLVM, что позволяет выполнять код сопоставимо с C/Fortran.

📌 Сравнение скорости выполнения (Python vs Julia)

# Цикл в Python import time def sum_python(n): s = 0 for i in range(n): s += i return s start = time.time() sum_python(10**7) print("Python time:", time.time() - start)
# Julia быстрый JIT-компилированный код function sum_julia(n) s = 0 for i in 1:n s += i end return s end @time sum_julia(10^7) # JIT-компиляция + выполнение @time sum_julia(10^7) # Только выполнение (в разы быстрее)

Julia гораздо быстрее, чем Python! 🏎💨



3️⃣ Машинное обучение в Julia

Julia активно развивается в области машинного обучения, предоставляя мощные библиотеки для нейронных сетей, вероятностных моделей и AutoML.

📌 Основные библиотеки для ML в Julia

Библиотека Описание
Flux.jl Глубокое обучение (аналог PyTorch)
MLJ.jl Классическое ML (аналог Scikit-Learn)
Turing.jl Байесовские модели и вероятностное программирование
Zygote.jl Автоматическое дифференцирование
DataFrames.jl Работа с табличными данными (аналог pandas)
CUDA.jl Запуск нейросетей на GPU (аналог TensorFlow GPU)


4️⃣ Глубокое обучение в Julia с Flux.jl

Flux.jl – главная библиотека для нейросетей в Julia.
Поддерживает глубокие нейросети, сверточные сети, рекуррентные сети и трансформеры.

🔹 Пример: Создание нейросети

using Flux # Определяем модель model = Chain( Dense(28*28, 128, relu), Dense(128, 64, relu), Dense(64, 10), softmax ) # Функция потерь loss(x, y) = Flux.Losses.crossentropy(model(x), y) # Оптимизатор Adam opt = ADAM(0.001) # Тренировка Flux.train!(loss, params(model), [(rand(28*28), rand(10))], opt)

Flux.jl похож на PyTorch, но намного проще!



5️⃣ Julia против Python для машинного обучения

Фактор Julia Python
Скорость 🏎 Почти как C 🐢 Медленный (интерпретируемый)
JIT-компиляция ✅ Есть (LLVM) ❌ Нет (только Numba)
Глубокое обучение Flux.jl, MLJ.jl PyTorch, TensorFlow
Масштабируемость ✅ Отличная (GPU, распределённые вычисления) ⚠️ Ограниченная (GIL)
Совместимость ✅ Вызов C/Python/R ✅ Совместим с C, R
Множественная диспетчеризация ✅ Да ❌ Нет

💡 Выводы:
Julia быстрее, легче, мощнее, но Python пока более популярен.



6️⃣ AutoML и Probabilistic ML в Julia

📌 MLJ.jl: Альтернатива Scikit-Learn

MLJ.jl – мощная библиотека для классического машинного обучения.

using MLJ # Загружаем датасет data, schema = @load_iris # Разделение на train/test train, test = partition(eachindex(data.species), 0.7) # Выбираем модель (RandomForest) DecisionTree = @load DecisionTreeClassifier pkg=DecisionTree model = DecisionTree(max_depth=3) # Создаем машину обучения mach = machine(model, select(data, Not(:species)), data.species) # Обучаем модель fit!(mach, rows=train) # Делаем предсказания y_pred = predict(mach, rows=test)

MLJ.jl – аналог Scikit-Learn, но мощнее и быстрее.



7️⃣ GPU-ускорение в Julia

Julia поддерживает CUDA прямо из коробки.

📌 Для работы на GPU используйте CUDA.jl:

using CUDA # Создаём массив на GPU X = cu(rand(1000, 1000)) # Ускоряем вычисления на GPU Y = X .^ 2

Julia может ускорять матричные операции в 100 раз!



8️⃣ Julia в индустрии машинного обучения

Julia активно используется в исследовательских центрах и компаниях:

  • NASA – моделирование космических аппаратов
  • MIT – анализ больших данных
  • BlackRock – финансовые модели


🎯 Подведём итог:

🔹 Julia объединяет простоту Python и скорость C
🔹 Flux.jl – мощный инструмент для глубокого обучения
🔹 MLJ.jl – альтернатива Scikit-Learn в Julia
🔹 Julia работает на GPU и суперкомпьютерах
🔹 Будущее машинного обучения за Julia!

💡 Julia – это язык будущего для AI, ML и High-Performance Computing! 🚀




Important

🚫 Ethical Restrictions

This work may not be used in:

  • Military applications or systems
  • Surveillance technologies
  • Any activity violating human rights



📬 Contact

Siergej Sobolewski

Email

GitHub

Website