[Tips] LFTPによるデータ転送
はじめに
Turingの基盤AIチームに業務委託として所属している東京科学大学(Institute of Science Tokyo)の藤井です。
本記事では、LLM(Large Language Models)やVLM(Vision Language Models)などの学習で利用するデータセットを複数のデータセンター間で並列転送する際に利用しているLFTPの使用方法について紹介します。AWS S3, GCSなどのCloud Service企業のストレージサービスを利用される場合は、aws s3
コマンドやgcloud
コマンドなどにより並列転送を容易に実現可能ですが、そうでない場合に、数TBスケールのデータを並列転送する際に私が利用しているLFTPについて使用事例を紹介できればと思い、本記事を執筆しています。
想定状況
AWS S3やGoogle CloudのGCSなどを利用されている場合は、各サービスに対応しているデータ転送用コマンドがありますので、そちらを利用することを推奨します。
また、1つ1つのファイルのデータサイズが50GB未満でありhuggingfaceにdatasetとしてデータをupload可能な場合は取り回しの容易さなどから、huggingface-cli upload-large-folder
を利用したデータアップロードを推奨します。
(詳細はこちらをご覧ください)
sftp
コマンドで転送するにはデータサイズが大きすぎて、データ転送に1日以上要してしまい、並列転送を簡単に実現できるCLIツールを探している方に本記事はピッタリの内容になっています。
インストール
sudo
が利用できる場合は、apt get
などでinstall可能です。
大学や研究機関のスパコンでsudo
権限がない場合は以下の方法でインストール可能です。
ソースコードをdownloadします。
cd ~/local
wget http://lftp.yar.ru/ftp/lftp-4.9.2.tar.gz
tar -xzf lftp-4.9.2.tar.gz
cd lftp-4.9.2
build & installを行います。
./configure --prefix=$HOME/local --with-libssh2=$HOME/local --with-openssl=$HOME/local
make
make install
環境変数の設定 (以下を ~/.bashrc
を設定します)
PATH="$HOME/local/bin:$PATH"
.bashrc
を読み込み直せば以下のように利用できるか確認できます。
> lftp --version
LFTP | Version 4.9.2 | Copyright (c) 1996-2020 Alexander V. Lukyanov
使用方法
以下のように ~/.ssh/config
に登録してあるHost名をsftp://
の後に続けて記述します。
すると、転送するための準備が整いました。
> lftp sftp://abci
lftp abci:~>
ローカルのデータをリモートに転送する場合は以下のようにしてください。
lftp abci:~> mirror --reverse --parallel=16 /local/path/to /remote/path/to
`<dataset-name>' at 14417952768 (6%) 5.76M/s eta:9h4m [Sending data]
リモートのデータをローカルに移動するときは--reverse
を外してください。
また--parallel
は並列数を規定しています。CPU core数等を考慮して決めてください。
転送にかかる予想時間が表示されますので、現在の並列数で十分なのか確認することができます。
おわりに
本記事では、LFTPを利用したデータ転送について紹介しました。
データ転送を行う際のTipsとして参考になれば幸いです。
普段は低精度学習やLLMの開発に関する記事、論文を執筆していますので、よろしければそちらも確認いただけますと幸いです。
また私が所属しているTuringではVLMの開発からデプロイまで、幅広い研究開発を行っていますので、そちらもぜひご確認ください。
Discussion