Начните работу с Git и подражайте стилю работы реальных инженеров по программному обеспечению и машинному обучению, используя системы контроля версий.

Вы уже используете контроль версий с Git для своих проектов в области науки о данных и машинного обучения? Если вы еще не задумывались об этом, позвольте мне задать вам второй вопрос: на каком этапе вашего пути к науке о данных или машинному обучению вы находитесь?

… возиться с блокнотами Jupyter больше не кажется правильным выбором. - Ив Бутелье.

Этот вопрос я задал себе два месяца назад после получения степени бакалавра биологии и вычислительных наук. За время учебы я прошел в общей сложности 6 курсов по направлению Data Science и машинного обучения. Хотя я решил пару проектов для тех курсов. Чаще всего мы, студенты, придерживались самого простого способа работы над этими проектами. Возился с блокнотами Jupyter до тех пор, пока код и результаты не стали удовлетворительными, а затем отправляем их.

Однако, возвращаясь к вводному вопросу: я спросил себя, хочу ли я работать со знаниями в области науки о данных и машинного обучения, которые я получил во время учебы. Я ответил на этот вопрос утвердительно и решил приостановить учебу и поработать неполный рабочий день над своими проектами в области науки о данных / MLE, чтобы получить работу или попытаться превратить тот или иной проект в стартап. Но сейчас возиться с блокнотами Jupyter больше не кажется правильным выбором.

Я хотел подражать стилю работы инженера по машинному обучению, поэтому решил изучить основы управления версиями с помощью Git и применить его в своих проектах.

Из этой статьи вы узнаете, как следовать этой идее и улучшить свое портфолио еще одним навыком: Контроль версий Git.

Почему Git?

Раньше я работал как любитель, возясь над своим кодом. Что в этом плохого? Что ж, если вы хотите, например, создать проект для своего резюме, чтобы получить работу, вы хотите убедиться, что это достойный проект, который не будет завершен за короткий спринт. Они хотят видеть, что вы можете работать над чем-то большим, чем над небольшими проектами, потому что, если бы они наняли вас, вы бы работали над их продуктами, и это, конечно, тоже немалые проекты. Вы должны показать, что вы кодируете организованным образом, что вы можете планировать, тестировать и развертывать отдельные функции, при этом разрабатывая другие части кода независимо.

Git позволяет вам делать именно это. Поддерживайте несколько разных версий и отслеживайте внесенные вами изменения. 1) мы рассмотрим основы, 2) удаленные репозитории, а затем 3) ветвление.

После каждой темы (1–3) я представлю команды командной строки, чтобы практиковать полученные знания из каждого абзаца.

1. Основы Git

Как Git думает о файлах?

Git воспринимает файлы как серию снимков. Если вам нужна система контроля версий, т.е. Git, чтобы сохранить ваши самые последние изменения, Git в основном делает снимок того, как все ваши файлы выглядят в данный момент, и сохраняет ссылку на этот снимок. Таким образом, Git очень эффективен: если один или несколько файлов не изменились, Git сохраняет ссылку на предыдущую идентичную версию.

Пожалуйста, запомните три состояния

Git имеет три состояния, в которых может находиться файл:

  • изменено: файл изменен, но не зафиксирован.
  • поэтапно: файл изменен и помечен как часть вашего следующего снимка фиксации.
  • зафиксировано: файл надежно хранится в вашей локальной базе данных.

Теперь мы можем визуализировать наши знания следующим образом:

Рабочее дерево (рабочий каталог) - это одна из версий вашего проекта. Вы можете изменить эту версию. Либо это более старая версия из каталога .git, либо она отражает самую последнюю версию, которая была изменена, но не зафиксирована или поставлена.

Промежуточная область - это файл, в котором хранится информация о том, какие файлы будут зафиксированы при следующей фиксации.

Наконец, каталог Git - это место, где Git сохраняет базу данных объектов и метаданные для вашего проекта. Его можно использовать для совместного использования проекта с другими компьютерами и людьми.

Пришло время взглянуть на рабочий процесс Git, поскольку вы ранее изучили основные основы.

Базовый рабочий процесс Git

  1. Вы изменяете свои файлы
  2. Вы добавляете файлы с изменениями в вашу промежуточную область
  3. Вы делаете коммит, который сохраняет файлы так, как будто они находятся в промежуточной области, и постоянно сохраняет этот моментальный снимок в вашем каталоге Git. Теперь мы вызываем те файлы с этими изменениями, т.е. версии, совершенные.

В следующем абзаце представлен пример, позволяющий самостоятельно практиковать полученные знания.

Упражнение 1. Практика основ Git

Прежде всего, мы хотим настроить репозиторий Git, с которым у нас есть связанная промежуточная область и рабочее дерево. У вас есть две возможности. Либо вы работаете над уже существующим проектом. Или вы создаете новый проект.

1.1 Создание нового проекта

Чтобы создать новый проект, создайте каталог на своем локальном компьютере и перейдите в это место, где вы хотите разместить свой проект, вручную или с помощью cd (что означает сменить каталог) .

$ cd /Users/user/my_project (MacOs or Linux)
$ cd C:/Users/user/my_project (Windows)

Затем вы вводите:

$ git init

Это создает для вас локальный репозиторий git. Папка .git. В частности, это будет подкаталог в вашем каталоге my_project.

1.2 Клонирование уже существующего проекта

Другой способ - получить уже существующий проект. Чтобы это произошло, вы просто скопируете URL-адрес удаленного репозитория, обозначенный здесь ‹url›, и введите

$ git clone <url>

Теперь помните, у нас есть три состояния: изменено, поставлено и зафиксировано.

1.3 Этап и фиксация

Мы можем создавать файлы и что-то в них записывать. Они находятся в состоянии «изменено». Чтобы перевести их в состояние «staged», мы можем использовать команду add.

$ git add HelloWorld.py

Наконец, чтобы зафиксировать его в локальном репозитории git, мы пишем:

$ git commit -m 'This message describes what changes I made'

Каждой фиксации требуется сообщение, -m - это флаг, который говорит, что следующая строка является сообщением.

Теперь вы можете продолжать путь в глухие места :)

2. Основы удаленного доступа

Для большинства операций требуются только локальные файлы. Однако, если вы планируете работать с другими коллегами над своим проектом или хотите продемонстрировать свою работу, например, на Github.com, вам необходимо изучить несколько других инструментов для этого.

Удаленные репозитории размещаются на сервере. Одно из очень популярных мест - GitHub. С удаленным репозиторием связаны имя и URL-адрес. Создать удаленный репозиторий очень просто, если у вас есть локальный репозиторий Git.

Упражнение 2 - Создание удаленного репозитория

После того, как вы написали git init и настроили локальный репозиторий, вы также можете связать с ним удаленный репозиторий. Просто выберите имя (origin или main), популярные имена для вашего пульта дистанционного управления, и скопируйте URL-адрес, например, с Github.

git remote add <remoteName> <url>

Это может выглядеть, например, так

git remote add origin https://github.com/myusername/ourproject

Когда вы довольны кодом в своем проекте, вы добавляете его поверх рабочего процесса, который вы изучили в примере 1.

$ git push <remoteName> <localName>

Итого напишешь что-то похожее на это

$ git add HelloWorld.py
$ git commit -m 'This message describes what changes I made'
$ git push origin main

И теперь HelloWorld.py является частью удаленного репозитория на GitHub.

Другие коллеги могут клонировать этот репозиторий, как указано в разделе 1, и работать вместе с вами. Но что, если вы будете работать и пробовать разные вещи. Вот тогда вам, вероятно, понадобится разветвление.

3. Ветвление

Ветвление увеличило бы размер этой статьи, и поэтому в этой популярной статье здесь говорится:



Резюме

Вы пришли с желанием изучить управление версиями, но не знали, с чего начать, а затем прошли вводные объяснения. Вы научились применять полученные знания с помощью небольших упражнений. Вы наверняка можете создать репозиторий и добавлять в него файлы и фиксировать их. Также вам стали знакомы удаленные репозитории. Помните, что удаленные репозитории - это то место, где вы можете поделиться своей работой через Github для своей команды. Если вы все еще жаждете узнать больше, статья о ветвлении выводит ваши знания о контроле версий на другой уровень.

Если вам больше по душе графическое машинное обучение, возможно, вам стоит попробовать:

Пропустить нейронную сеть Грама для графиков



Встраивание узлов для начинающих