Инструменты разработки data-driven решений
Алексей Комиссаров, Данил Зилов, Полина Кучур
Этот курс представляет собой введение в инструменты и методы, которые необходимы для эффективного анализа данных и программирования. Студенты изучат различные темы, включая работу с интерактивными ноутбуками, управление программным обеспечением и пакетами, использование систем контроля версий, создание и использование API, планирование задач, использование GPU для вычислений и создание Docker контейнеров.
Начиная с основ анализа данных в Google Colab и Hugging Face, курс вводит студентов в мир Linux и управления программным обеспечением. Студенты также научатся использовать Git для контроля версий и Jupyter Notebooks для разработки исследовательских проектов. Продвинутые темы включают создание и использование API, планирование задач с использованием Slurm и других инструментов, а также использование GPU для ускорения вычислений.
В заключение курса студенты изучат основы работы с Docker и Docker Compose, чтобы создавать и управлять контейнерами для развертывания приложений.
Этот курс будет полезен для студентов, которые хотят развивать свои навыки в области анализа данных, разработки программного обеспечения и облачных вычислений. С полученными навыками они смогут эффективно решать задачи в современной IT-индустрии.
Несмотря на то, что курс базовый и не требует предварительных знаний. Прежде чем приступить к изучению этого курса, студентам рекомендуется иметь следующие знания и навыки:
Основы программирования: Студенты должны знать основы программирования, включая понимание переменных, циклов, условных операторов и функций. Знание Python или другого высокоуровневого языка программирования будет полезно.
Работа с данными: Возможность работы с данными, включая чтение, запись и базовый анализ данных, будет очень полезной.
Основы работы с компьютером: Студенты должны быть знакомы с основами работы на компьютере, включая использование операционной системы, установку программного обеспечения и основное понимание файловых систем.
Основные знания работы с терминалом или командной строкой также будут полезны, но не обязательны. В ходе курса студенты получат более глубокие навыки в этих областях.
-
Анализ данных в ноутбуках на примере Google Colab и Hugging Face: Обучение основам работы с интерактивными ноутбуками для анализа данных с использованием Google Colab и примеров из Hugging Face.
-
Базовый Linux для анализа данных: Основы работы с Linux и его инструментами для работы с данными.
-
Установка и настройка программ. Conda. Базовый git: Обучение установке и настройке программного обеспечения, управлению пакетами с помощью Conda и основам системы контроля версий Git.
-
Jupyter Notebooks, продвинутый git. Github и Gitlab: Погружение в работу с Jupyter Notebooks, продвинутые возможности Git и использование платформ для хранения кода Github и Gitlab.
-
Практический подход к созданию своего и использованию стороннего API: Развитие навыков разработки собственного API и использования API сторонних сервисов.
-
Планировщики задач. Slurm. Базовый bash для slurm. Инструменты для создания пайплайнов. Snakemake, luigi и другие: Изучение планировщиков задач, особенностей работы со Slurm, основ bash для работы со Slurm и инструментов для создания пайплайнов, таких как Snakemake и Luigi.
-
Использование GPU для вычислений. Использование GPU на кластере: Изучение особенностей использования GPU для вычислений, в том числе на кластерах.
-
Введение в docker и docker compose: Основы работы с Docker и Docker Compose, инструментами для создания и управления контейнерами для развертывания приложений.
-
Анализ данных в ноутбуках на примере Google Colab и Hugging Face:
- Введение в интерактивные ноутбуки.
- Работа с Google Colab: создание, сохранение и загрузка ноутбуков.
- Использование Hugging Face для изучения различных наборов данных.
- Примеры анализа данных в ноутбуках.
-
Базовый Linux для анализа данных:
- Введение в операционную систему Linux.
- Базовые команды Linux.
- Работа с файловой системой Linux.
- Использование Linux для анализа данных.
-
Установка и настройка программ. Conda. Базовый git:
- Введение в установку программного обеспечения.
- Работа с Conda для управления пакетами.
- Введение в систему контроля версий Git.
- Основы работы с Git: клонирование репозитория, добавление файлов, коммиты.
-
Jupyter Notebooks, продвинутый git. Github и Gitlab:
- Работа с Jupyter Notebooks: создание, сохранение, загрузка ноутбуков.
- Продвинутые возможности Git: ветвление, слияние, решение конфликтов.
- Использование Github и Gitlab для хранения и совместной работы над кодом.
-
Практический подход к созданию своего и использованию стороннего API:
- Введение в API и их использование.
- Создание собственного API.
- Использование API сторонних сервисов.
- Примеры использования API в реальных проектах.
-
Планировщики задач. Slurm. Базовый bash для slurm. Инструменты для создания пайплайнов. Snakemake, luigi и другие:
- Введение в планировщики задач.
- Работа со Slurm.
- Основы bash для работы со Slurm.
- Инструменты для создания пайплайнов: Snakemake, Luigi и другие.
-
Использование GPU для вычислений. Использование GPU на кластере:
- Введение в использование GPU для вычислений.
- Использование GPU на локальной машине.
- Использование GPU на кластере.
- Оптимизация кода для работы с GPU.
-
Введение в Docker и Docker Compose:
- Введение в Docker и контейнеризацию.
- Создание и управление Docker контейнерами.
- Введение в Docker Compose для управления множеством контейнеров.
- Создание и управление проектами с использованием Docker Compose.
В качестве основных источников информации и материалов для курса можно использовать следующие ресурсы:
-
Google Colab и Jupyter Notebooks
-
Hugging Face
-
Linux и Bash
-
Установка программ и Conda
-
Git, Github и Gitlab
-
APIs
-
Планировщики задач и инструменты для создания пайплайнов
-
GPU Programming
-
Docker и Docker Compose
Также может быть полезно использовать онлайн-курсы, такие как Coursera, Udemy, Khan Academy и Edx, для дополнительных материалов по темам, связанным с курсом.
В рамках курса предполагается индивидуальное выполнение 8 домашних работ. Максимальный бал за каждую работу 10 баллов. За просрочку здачи задания начисляется штраф 3 балла от полученных баллов за каждую неделю просрочки.
Каждая домашняя работа в виде теста или минипроекта должна быть сдана в следующую неделю за прослушиванием соответствующей лекции (за исключением последней недели). Во второй части курса сдача, peer-review и проверка работы осуществляется через бота в телеграме.
- Задание 1. TBA
- Задание 2. TBA
- Задание 3. TBA
- Задание 4. TBA
- Задание 5. TBA
- Задание 6. TBA
- Задание 7. TBA
- Задание 8. TBA
Экзамен или финальный зачет в виде теста. Оценка состоит из двух часте 80% из практических заданий, 8 заданий по 10 баллов, 20% экзамен в виде теста с максимальными 20 баллами. Зачёт/не зачёт – зачёт от 60 баллов. Оценка (A-F система) A – 90-100 (отлично) B – 84-89 (хорошо) C – 75-83 (хорошо) D – 67-74 (удовлетворительно) E – 60-66 (удовлетворительно)
После успешного прохождения курса студенты смогут:
- Использовать интерактивные ноутбуки, такие как Google Colab, для анализа данных и изучения наборов данных Hugging Face.
- Использовать базовые команды Linux для анализа данных и управления файловой системой.
- Устанавливать и настраивать программное обеспечение, управлять пакетами с использованием Conda и эффективно использовать систему контроля версий Git.
- Работать с Jupyter Notebooks, использовать продвинутые возможности Git и управлять своими репозиториями кода на Github и Gitlab.
- Создавать собственные API и эффективно использовать API сторонних сервисов.
- Использовать планировщики задач, такие как Slurm, писать скрипты на bash для Slurm и использовать инструменты для создания пайплайнов, такие как Snakemake и Luigi.
- Эффективно использовать GPU для вычислений, в том числе на кластерах, для ускорения обработки данных.
- Создавать и управлять Docker контейнерами с помощью Docker и Docker Compose.
Полученные навыки позволят студентам успешно справляться с задачами в области анализа данных, разработки и использования программного обеспечения, что является ценным активом в современной IT-индустрии.