Repozytoria i programowanie oparte na magistrali

Ukończone

Wielu analityków danych preferuje pracę z językiem Python lub R w celu zdefiniowania obciążeń uczenia maszynowego. Możesz mieć notesy lub skrypty Jupyter, aby przygotować dane lub wytrenować model.

Praca nad wszystkimi elementami zawartości kodu staje się łatwiejsza podczas korzystania z kontroli źródła. Kontrola źródła to praktyka zarządzania kodem i śledzenia wszelkich zmian w kodzie wprowadzanych przez zespół.

Jeśli pracujesz z narzędziami DevOps, takimi jak Azure DevOps lub GitHub, kod jest przechowywany w tak zwanym repozytorium lub repozytorium.

Repozytorium

Podczas konfigurowania struktury MLOps inżynier uczenia maszynowego prawdopodobnie utworzy repozytorium. Niezależnie od tego, czy używasz usługi Azure Repos w usłudze Azure DevOps, czy repozytoriów GitHub, oba repozytoria git służą do przechowywania kodu.

Ogólnie istnieją dwa sposoby zakresu repozytorium:

  • Monorepo: Zachowaj wszystkie obciążenia uczenia maszynowego w tym samym repozytorium.
  • Wiele repozytoriów: utwórz oddzielne repozytorium dla każdego nowego projektu uczenia maszynowego.

Które podejście preferuje Twój zespół, zależy od tego, kto powinien uzyskać dostęp do jakich zasobów. Jeśli chcesz zapewnić szybki dostęp do wszystkich zasobów kodu, monorepos mogą lepiej odpowiadać wymaganiom twojego zespołu. Jeśli chcesz przyznać użytkownikom dostęp tylko do projektu, jeśli aktywnie nad nim pracują, twój zespół może wolisz pracować z wieloma repozytoriami. Należy pamiętać, że zarządzanie kontrolą dostępu może spowodować większe obciążenie.

Tworzenie struktury repozytorium

Niezależnie od wybranego podejścia najlepszym rozwiązaniem jest uzgodnienie standardowej struktury folderów najwyższego poziomu dla projektów. Na przykład w wszystkich repozytoriach mogą znajdować się następujące foldery:

  • .cloud: zawiera kod specyficzny dla chmury, taki jak szablony do utworzenia obszaru roboczego usługi Azure Machine Learning.
  • .ad/.github: zawiera artefakty usługi Azure DevOps lub GitHub, takie jak potoki YAML w celu zautomatyzowania przepływów pracy.
  • src: zawiera dowolny kod (skrypty języka Python lub R) używane na potrzeby obciążeń uczenia maszynowego, takich jak wstępne przetwarzanie danych lub trenowanie modelu.
  • docs: zawiera wszystkie pliki markdown lub inną dokumentację używaną do opisywania projektu.
  • pipelines: zawiera definicje potoków usługi Azure Machine Learning.
  • tests: zawiera testy jednostkowe i integracyjne używane do wykrywania usterek i problemów w kodzie.
  • notebooks: zawiera notesy Jupyter używane głównie do eksperymentowania.

Uwaga

Dane szkoleniowe nie powinny być uwzględniane w repozytorium. Dane powinny być przechowywane w bazie danych lub usłudze Data Lake. Usługa Azure Machine Learning może mieć bezpośredni dostęp do bazy danych lub usługi Data Lake, przechowując informacje o połączeniu jako magazyn danych.

Dzięki standardowej strukturze używanej przez każdy projekt analitycy danych i inni współpracownicy łatwiej będzie znaleźć kod, nad którymi muszą pracować.

Napiwek

Znajdź więcej najlepszych rozwiązań dotyczących struktury projektów nauki o danych.

Aby dowiedzieć się, jak pracować z repozytoriami jako analityk danych, dowiesz się więcej na temat programowania opartego na magistrali.

Programowanie oparte na magistrali

Większość projektów programistycznych używa usługi Git jako systemu kontroli źródła, który jest używany zarówno przez usługę Azure DevOps, jak i usługę GitHub.

Główną zaletą korzystania z usługi Git jest łatwa współpraca w kodzie, a także śledzenie wszelkich wprowadzonych zmian. Ponadto można dodać bramy zatwierdzania, aby upewnić się, że tylko zmiany, które zostały przejrzyone i zaakceptowane, zostaną wprowadzone do kodu produkcyjnego.

W celu wykonania powyższych działań usługa Git korzysta z programowania opartego na magistrali, co umożliwia tworzenie gałęzi.

Kod produkcyjny jest hostowany w gałęzi głównej. Za każdym razem, gdy ktoś chce wprowadzić zmianę:

  1. Pełną kopię kodu produkcyjnego można utworzyć, tworząc gałąź.
  2. W utworzonej gałęzi wprowadzasz wszelkie zmiany i testujesz je.
  3. Gdy zmiany w gałęzi będą gotowe, możesz poprosić kogoś o przejrzenie zmian.
  4. Jeśli zmiany zostaną zatwierdzone, scalisz gałąź utworzoną z repozytorium głównym, a kod produkcyjny zostanie zaktualizowany w celu odzwierciedlenia zmian.

Diagram przepływu pracy programowania opartego na magistrali.