Skip to content

本課題では扱わない重要技術

Toma Kakizaki edited this page Mar 14, 2024 · 5 revisions

環境構築系

✏️Poetry

  • Poetryは、PythonのパッケージおよびPythonの開発環境を管理するツールです。
  • Pythonの公式パッケージ管理ツールpipに代わる新しい選択肢として注目されています。
Poetryの主な特徴
  1. プロジェクトの初期化:poetry newコマンドで簡単にプロジェクトを作成できます。

  2. 依存パッケージの管理:poetry addコマンドで必要なパッケージをインストールできます。依存関係を自動的に解決し、互いに干渉しないよう分離された仮想環境を作成します。

  3. ビルドとパッケージ化:poetry buildコマンドでソースディストリビューションやWheel形式のパッケージを作成できます。

  4. pyproject.toml:従来のrequirements.txtに代わり、プロジェクトの設定をpyproject.tomlに集約できます。

Poetryを使う利点
  1. 依存パッケージの管理が簡単:依存関係を自動解決し、環境を分離するので管理が容易です。

  2. 再現性が高い:pyproject.tomlにすべての設定が集約されているため、異なる環境でも同じ状態を再現しやすくなります。

  3. pip/virtualenvを置き換え可能:pipやvirtualenvの機能を包括するため、これらを使う必要がなくなります。

  4. パッケージングが簡単:ソースディストリビューションやWheel形式のパッケージを簡単に作成できます。

Poetryを使うことで、Pythonの開発環境構築とパッケージ管理が簡略化され、生産性が向上すると期待されています。今後、Poetryの利用が広がっていくことが予想されます。

参考記事

🌾rye

  • Ryeは、Poetry同様にPythonのパッケージおよび開発環境を管理するツールです。
  • Poetryよりも新しいツールで、より軽量で使いやすいことを目指しています。
  • 現在ではPoetryよりも知名度はないですが、注目されているツールです。
Ryeの主な特徴
  1. プロジェクトの初期化:rye newコマンドで簡単にプロジェクトを作成できます。

  2. 依存パッケージの管理:rye addコマンドで必要なパッケージをインストールできます。依存関係を解決し、仮想環境を作成します。

  3. ビルドとパッケージ化:rye buildコマンドでソースディストリビューションやWheel形式のパッケージを作成できます。

  4. pyproject.toml:Poetryと同様に、プロジェクトの設定をpyproject.tomlに集約できます。

Ryeを使う利点
  1. シンプルで軽量:Poetryに比べてより軽量で、コアの機能に特化しているため、シンプルです。

  2. 高速:依存関係の解決や環境作成が高速です。

  3. pip/virtualenvとの互換性:pipやvirtualenvと互換性があり、既存のツールと組み合わせて使えます。

  4. サブコマンドがわかりやすい:サブコマンドが直感的で覚えやすいです。

Ryeは比較的新しいツールですが、シンプルさと高速さが特徴です。一方でPoetryに比べると機能が制限されている側面もあります。プロジェクトの規模や要件に応じて、PoetryかRyeかを選択することになります。

参考記事

AI・ML系

🤗HugingFace

  • HuggingFaceは、自然言語処理(NLP)および機械学習(ML)のモデルを簡単に構築、トレーニング、デプロイできるオープンソースのライブラリおよびプラットフォームです。
HuggingFaceの主な特徴
  1. モデルハブ:事前トレーニングされた多数のNLPおよびMLモデルを提供するハブがあります。BERTやGPT-2などの有名モデルをダウンロードして使用できます。

  2. transformersライブラリ:PyTorchやTensorFlowなどの主要な深層学習ライブラリと連携できるNLPライブラリです。モデルの構築、トレーニング、ファインチューニングなどが可能です。

  3. トークナイザー:テキストを事前トレーニングされたモデルに合わせてトークン化するツールが用意されています。

  4. モデル可視化:トレーニングされたモデルの内部を可視化し、動作を理解しやすくします。

5, モデルデプロイ:トレーニングしたモデルをWebサービスとしてデプロイできます。

HuggingFaceを使う利点
  1. 事前トレーニングモデルの活用:高性能な事前トレーニングモデルを簡単に利用でき、時間とコストを大幅に節約できます。

  2. 開発効率の向上:機能豊富なtransformersライブラリにより、NLPモデルの開発が効率化されます。

  3. モデル共有と再現性:トレーニングしたモデルをモデルハブで簡単に共有・公開できます。

  4. 実験の再現性が高くなります。:Web対応が手軽で、開発したモデルをWebサービスとしてすぐにデプロイできます。

HuggingFaceは、高度なNLP/ML機能を提供しながら、開発の手間を大幅に軽減するフレームワークです。企業や研究機関で広く利用されています。 AI系の企業の共同研究PJTでも、頻繁に使用する機会があるでしょう。

参考記事

📈Weight & Bias

  • Weight&Biasは、機械学習・深層学習モデルの開発を支援するツールです。
  • モデルの構築、トレーニング、評価、実験管理などのプロセス全体を一元的に管理できます。
Weight&Biasの主な特徴
  1. 実験の追跡と視覚化:ハイパーパラメータ、モデルのアーキテクチャ、トレーニングの進捗状況などを一元的に追跡できます。損失関数のグラフや、モデルの予測結果などを視覚化できます。

  2. データセットのバージョン管理:トレーニングに使用したデータセットをバージョン管理し、再現性を確保できます。

  3. モデルのバージョン管理と共有:トレーニングしたモデルをWeight&Biasにアップロードし、共有できます。

  4. コラボレーション機能:チームメンバーとモデル、実験の詳細、結果を共有し、コラボレーションが可能です。

  5. 多くのライブラリと連携:PyTorch、TensorFlow、Keras、scikit-learnなどの主要ライブラリと連携できます。

Weight&Biasを使う利点
  1. 実験の再現性が高い:ハイパーパラメータやデータセット、モデルの構成などを一元管理できるので、再現性が高くなります。

  2. 実験結果の可視化が簡単:豊富な視覚化機能で、実験の進捗や結果を効率的に追跡できます。

  3. チームコラボレーションが円滑:実験の共有や議論ができ、チーム開発が促進されます。

  4. 生産性の向上:実験の管理が一元化されるため、開発者は本質的な作業に集中できます。

Weight&Biasは、MLモデル開発プロセスの生産性を大幅に高め、高い再現性と可視化機能を備えているため、企業や研究機関での利用が広がっています。

参考記事

開発系

🐍フォーマッタ・リンタ

  • フォーマッタ(formatter)とは

    • フォーマッタは、ソースコードの体裁(インデント、スペース、改行など)を自動的に整形するツールです。
    • Python標準のツールとしてblack、yapfなどがあります。
  • リンタ(linter)とは

    • リンタは、ソースコードのスタイルや構文エラー、バグの可能性などを静的に解析し、指摘してくれるツールです。
    • Python標準のツールとしてflake8、pylintなどがあります。
フォーマッタ・リンタの利点
  1. コード品質の向上:整形されたコードは可読性が高く、バグを防ぐことができます。リンタでコードの問題点を事前に検知できます。

  2. コーディングスタイルの統一:チーム開発時に、全員が同じスタイルでコードを書くことができます。また、コードレビューの手間が軽減されます。

  3. 自動化による生産性向上:人手で行うよりも高速に整形・解析ができます。また、手作業のミスを防げます。

  4. 習慣づけとスキルアップ:フォーマッタやリンタを使う過程で、コーディングのベストプラクティスを身につけることができます。

フォーマッタ・リンタの活用例
  • IDEやエディタに組み込んで使う

  • CI/CDパイプラインに組み込んで自動チェックする

  • コードコミット時にGit Hookで自動実行する

フォーマッタとリンタは、コード品質の確保とチーム開発の円滑化に役立つツールです。開発の生産性向上にも大きく寄与するため、企業での活用が広がっています。

参考記事