Delta Lakeのdocumentを読んだメモ

Delta Lake

S3, Azure data lake storage, HDFSなどのデータレイクファイルストレージに構築されるOSSのストレージレイヤー。1つのテーブルに対して、ストリーミング・バッチ処理の両方に対応できる。

構造化・非構造化データを単一システムに集約してデータサイロ(他からアクセスできないデータ)を解消する。コスト効率・スケーラビリティの高いレイクハウスを構築する。

Delta Lakeのデータは、オープンなParquet形式で保存される。AuditログやコミットログなどのメタデータJSONで保持する。

ACID transactionが担保されている。

データスワンプ

どこに何があるかわからないようなデータベース。

データスワンプからの脱却

全てのデータの信頼できる単一情報源(Single Source Of Truth)を提供し、信頼性の高い最新のデータを組織で扱えるようにする。

オープンでセキュアなデータ共有

Delta sharingを使うことで、データの場所を問わず、組織内外でのデータ共有を容易にする。

 

データウェアハウス

構造化されたデータが格納されたストレージ。

データレイク

rawデータ、構造化データ、非構造化データをそのまま保存する。AI/MLなどで使用する。

データレイクハウス

データウェアハウスとデータレイクの良いとこどり。データウェアハウスのように構造的にデータを扱えるし、データレイクのように色々なデータを格納でき、スケールする。

 

テーブルの作りかた

Spark SQLDDLを定義する。

テーブルの更新

データの更新も可能(gender="F"をgender="Female"にする、など)。

テーブルのSchemaを変更した場合

テーブルのSchemaを変更した場合、Delta lake上のテーブルを上書きすればOK。

 

疑問

delta lakeの競合となるツールはあるのか?

MLflowのdocumentを読んだメモ

MLflowとは

機械学習のライフサイクル全体で、workflow, artifactを管理できるOSS。様々なMLライブラリで利用することができる。MLのコードに対して、最小限の変更を行うだけで、各data scientistが実行した実験結果を再現できるようになる。

なお、ここでいうartifactはどういう形式でもOK(png, pickled data, parquet etc)。

Component

5つのcomponentからなる。

MLflow tracking

parameter, metrics, env, model artifactなどを管理できる。local file, database, tracking serverなど、様々な形で出力・保存できる。

MLflow models

trainingしたモデルを管理できる。あとからモデルをloadできる。

MLflow model registry

MLflowモデルの承認・品質保証・展開に焦点を当てた集中型のモデルストア・API・UI。実験で良かったモデルにタグをつけたり、registerできる。

MLflow projects

再利用可能なデータサイエンスのコードをパッケージ化できる。Databricks, k8sなどの環境でも実行可能。Dockerファイルにして、k8sで実行するなど。

MLflow recipes

分類・回帰など、一般的なタスク向けモデルを開発するための事前定義されたtemplate。簡単にMLモデルが作れる?

MLflow AI gateway

LLM向けに開発された。APIキーの集中管理が可能。gatewayコマンドラインで起動しておくことで、Python側ではgatewayにリクエストを送るだけで、LLMからリクエストが帰ってくる。

 

ユースケース

  1. 実験管理したいdata scientist
  2. modelパフォーマンスを比較したいMLOps engineer
  3. productionにdeployしたいMLOps engineer
  4. 結果をシェアしたり、容易なparameter変更をしたいdata scientist

LLM

LLMの実験もtrackingできる。prompt, output, version, parameterなど。

その他

databricksのworkspaceでもMLflowを使える。

疑問

  • 各環境における、MLflow運用のベストプラクティス。
  • 例えば、コンテナ内でML学習させていて、それをlocalファイルとして保存しても、消えてしまう。どういう実行環境では、どこにoutputを集約すべきなのか?
  • また、複数人のチームにおいて、各々が勝手にMLflowを使うより、組織的に使った方が管理しやすいだろう。その場合、どういう形で管理すべき?
  • wandbでも似たようなことが出来そうだが、どちらが優れているのか?

 

 

 

 

Hack the box Three Write-upの振り返り

解法メモ

  • nmapで、openになっているport番号を網羅的に探索する。
  • sudo nmap -sV {IP}
  • http(port80)がアクセス可能だったので、IPアドレスを利用してブラウザからアクセス。
  • ブラウザ上で、ドメイン情報を取得できた。
  • gobusterを利用して、サブドメインをbrute force探索(このコマンドはうまく動かなかった)。
  • gobuster vhost -w SecLists/Discovery/DNS/subdomains-top1million-5000.txt -u http://thetoppers.htb
  • s3内に任意コード実行可能なphpファイルを置く。
  • ローカル環境でpythonサーバーを立てる。リモートサーバーから、ローカルサーバーのshを実行させる。
  • ローカル環境からリモートサーバーにアクセス出来るようになったので、flagファイルを見つける。

感想

  • Walkthroughを見ないと解けない。難しい。
  • s3に任意コード実行可能なphpファイルを置いて、無理やりアクセスしてしまう解法が鮮やかだった。すごい。
  • 解法を見て実行できたが、何をやっているか分からない箇所もあった。不明点を調べないと身につかないと思った。
  • 以下のコマンドでflag.txtが簡単に見つけられる。知らなかった。
  • find / -name flag.txt