2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Git LFS からDVC(Data Version Control) に移行した話

2
Last updated at Posted at 2023-10-26

䞻旚

埓来、Git LFSを甚いお機械孊習のデヌタを管理しおきた。最近、その代わりにDVCを䜿うようになったので、その過皋で感じたこずを瀺す。DVCをどう䜿っおいいのか、䜿い方に迷っおいる人の参考になれば幞いです。

Git LFS の状況

  • 機械孊習のデヌタを指定のフォルダ以䞋をファむル単䜍の粒床で管理できるツヌルである。
    • 倉曎があったファむル名を知るこずができるし、テキストファむルの堎合にはdiffを衚瀺するこずもできる。
    • GithubなどでPRの差分をwebブラりザで衚瀺させる堎合には、画像ファむルの倉曎前ず倉曎埌ずを衚瀺させるこずもできる。
  • 「Git LFSは、リポゞトリに実際のファむルではなく、ファむルぞの参照を保存するこずで倧きなファむルを扱いたす」
  • 通垞のGitずの違いは、LFSで管理するファむルをファむルパタヌンで指定しお、そのファむルに぀いおは、ファむルぞの参照を保存するようになっおいたす。
  • github などのgitのサヌビスでは、2 GBを超えるリポゞトリを䜜っおはならない制限がありたす。
  • Git LFSを䜿うこずで、䟋えば *.jpg のファむルはgit lfs track "*.jpg" ずするこずで、LFSに察象にするこずができたす。
  • その結果、Git LFSを䜿うこずで、倧量なデヌタがあっおも2GBの制玄の範囲にリポゞトリを留めるこずができたす。LFSで管理しおいるデヌタは、リポゞトリずは別に容量を消費しおいるのは倉わらない

耇数のデヌタセットからなるデヌタセットの堎合

  • 耇数のデヌタセットからなるデヌタセットの堎合に、git submoduleで管理したこずがある。
  • git submoduleの䜿い方はweb䞊に倚数説明があるのでここでは省略する。
    • git のリポゞトリの䞭に、他のリポゞトリを含めお管理するやり方です。

git submodule, git lfs の䜵甚は耇雑さを高めすぎる。

  • ある機械孊習のデヌタセットをsubmodule で耇数のリポゞトリに分割するず、それぞれのsubmodule での管理ず、submoduleずしおの管理ず、管理䜜業が栌段に増える。
  • 感想
    • 䞀人で管理運甚しおいるリポゞトリだからできた䜜業
    • 耇数名で分業しお登録・改倉䜜業をするには、おすすめしない。

DVCの導入

  • DVCのサむトの䟋題をvideoで芋おどんなこずができるのか、どのような手順で行うのかを芋おみよう。

DVC は䜕をどうするツヌルなのか

  • 察象のフォルダをたずめお管理するツヌル。
  • ある時点のスナップショットをリモヌトフォルダに保存する。
  • そのスナップショットをフォルダに察するmd5sumで状態を芚えおおく(*.dvc)。
  • *.dvcファむル自䜓は、git で管理させる。
  • *.dvcの倀を元に、dvc pull でそのずきのフォルダ構成を、リモヌトフォルダから再構築する。
  • DVC自䜓は、ファむル保存のサヌビスを行っおいない。既存のリモヌトフォルダサヌビスのどれかをナヌザヌが遞択しお利甚する。Google Drive, Google Cloud Storage, AWS(S3)など
  • ちなみに、どの時点のスナップショットでも再珟できるようにしおいるリモヌトのフォルダは、DVCを介しお扱えるようになっおいるので、DVCを介せずにアクセスしおも、意味䞍明の状況になる。

DVCではしないこず

  • ある時点でのdvc、git ぞの登録内容ず、別の時点のdvc, gitぞの登録内容の比范
    • 知りうるのは、sizeずnfilesずhash倀だ。
    • そのため、どのファむルが倉曎になったのかさえ知るこずができない。

DVCをデヌタ管理に利甚する

  • DVCのビデオずDVCの公匏サむトのドキュメントをたどるように蚭定を行うこずで、DVCを利甚したデヌタ管理を導入できた。

個人的に割り切った䜿い方

  • 倉曎は、subfolderの远加を基本ずしよう。
  • subfolderぞのファむルの远加はしない。
  • DVC管理䞋のフォルダ構成の情報は、テキストファむルに自動で保存させる。そのファむルをgit で管理する。
  • そうすれば、gitで芋たずきに、subfolder の状況の倉化がGithub䞊などで確認できる。
  • Github のPRの䞭で、倉曎点に぀いおのヒントを蚘茉し、gitの偎で倉曎状況をたどれるようにする。

DVC 以降の利点

  • 参照するだけの利甚者にずっおの利点
$ git checkout main
$ git pull
$ dvc pull

これだけの䜜業で枈む。
このため、git submodule, git LFS を䜿ったずきの堎合にくらべ手順が単玔になる。

DVC に移行する䞊で必芁な発想の転換

  • 党おの操䜜においお、どこをどう倉曎したずいう差分を衚瀺しお、倉曎点を明瀺的に管理しようず考えを断念しよう。
  • どういう手順で、元画像を加工しお孊習甚の画像に倉換したずか経緯ずかは、DVCで管理するべきではない。
  • あずは利甚するだけになったデヌタだけをsubfolderで远加するだけずいう単玔化をした。
  • dvc add; dvc push ずかをする時点での察象フォルダのファむル構成・ファむルがずにかく正しいずするものである、as-isあるがたたのデヌタ管理であるずいうのを受け止めるこず。
    • 䞍甚意に意図しない倉曎を察象フォルダに察しおしないこず。
    • subfolderやsubfolder䞭のファむルを削陀・砎壊しおいおも、dvcは譊告をしない。

たずめ

  • DVCを䜿うためには、Gitず発想が違うこずを理解する必芁がある。
  • そのこずを理解しお運甚すれば、運甚の手順自䜓はgit submodule, git LFS を䜿うよりははるかに簡単である。
  • git はロヌカルに履歎を持぀ので、git の管理察象が増えれば増えるほど、ロヌカルPCでの領域を圧迫しおしたう。しかし、DVCでは*.dvcファむルをgit で登録させるだけなので、ロヌカルに持぀履歎が少なくなる。
  • そのような違い方を理解すればDVCは䜿いやすい

関連蚘事

DVC(Data Version Control) を䜿っお画像デヌタセットを管理する

DVCでのデヌタの登録を耇数人で行う堎合の泚意 ヌ 手順を間違えるずデヌタを倱える ヌ

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?