【Team JINIAC】 チーム開発と個人開発の違い
はじめに
個人的にphase1を振り返ると、チーム開発と個人単位の開発では、考え方を変えて臨まないといけない場面が何度もありました。
そこで、今回はチーム開発と個人開発の違いについて、
- 勉強になった点
- 制約を受ける点
に分けて、紹介したいと思います。
チーム開発で勉強になった点
チーム開発ではメンバーそれぞれの強みを活かし、協力して高品質な成果物を生み出すことが可能です。定期的なスキル共有やコミュニケーションを通じて、新たな気づきや創造的な解決策が生まれやすくなり、プロジェクトの成功に繋がりました。
メンバーそれぞれの得意分野のスキルを共有できること
Team JINIACでは、最新動向のキャッチアップ、データセットの収集、コードの解説、新しいモデルのアイディア、情報発信、マネジメントなど、各メンバーがそれぞれの得意分野を活かして開発を行っていました。問題が発生した際には、多角的な視点からのアプローチが可能となり、迅速かつ効果的に解決策を見つけることができました。このように、多様な知識と経験を持つメンバーが協力することで、プロジェクト全体の質を向上させることができました。重要なのは、開発中に定期的にスキル共有の場が設けられたことです。これにより、メンバー全体の成長が促進され、チーム全体の能力が向上しました。このような取り組みは、チームの一体感を高め、プロジェクトの成功に繋がる重要な要素となりました。
コミュニケーションによる気づき
スキル共有の場をはじめ、異なるドメインに所属する多様な方々とのコミュニケーションを通じて、新たな気づきを得ることができました。メンバー同士が頻繁に意見交換やディスカッションを行うことで、自分にはない視点やアイディアが共有され、問題解決や改善のヒントが得られました。例えば、プログラムコードで解決に難航していた不具合を、シェルスクリプトを実行することで回避する案を他のメンバーが提案し、早期に対応できることがありました。このように、より創造的で効果的な解決策が生まれやすくなると感じました。
タスクシェアができること
チーム開発の大きなメリットの一つは、タスクシェアができることです。プロジェクトを進める際、各メンバーがそれぞれの得意分野や専門知識に基づいてタスクを分担することで、効率的に作業を進めることができます。Team JINIACでは、データセット・トークナイザー班、学習・コード班、モデル班に分かれ、協力しながらタスクをこなすことで、全体の作業負担が軽減され、プロジェクトの進行がスムーズになりました。また、タスクシェアにより、各メンバーが自分の強みを最大限に発揮できるため、プロジェクトの質も向上したと感じます。
チーム開発で制約を受ける点
一方、適切な権限管理や環境の統一、サーバー環境の変更への対応など、個人開発では経験することない制約を学ぶことができました。課題を克服することで、今後の効率的で効果的な開発に活かしたいと思っています。
コードや実行環境の共有の難しさ
チーム開発において、コードや実行環境の共有は重要な要素の一つです。各メンバーが異なる開発環境や設定を使用している場合、コードの互換性や動作確認が難しくなることがあります。実際に、異なるバージョンのライブラリや依存関係が原因で、コードが一部の環境でしか動作しないことがありました。また、環境設定の違いによるバグやエラーの発生にも頻繁に遭遇しました。これを解決するためには、バージョン管理システム(例:Git、GitHub)を活用し、統一された開発環境を構築することが重要です。しかし、スピードが求められるフェーズ1では、共有がスムーズにできたかどうかには課題が残りました。
開発環境での権限による制約
開発環境での権限による制約も大きな課題です。例えば、sudo権限がない場合や、permission設定の変更ができない場合、必要なソフトウェアのインストールや設定変更ができず、作業が滞ることがあります。これにより、デバッグやテストがスムーズに進まないことがあり、開発効率が低下します。実際に、特定のファイルやディレクトリへのアクセスが制限されることで、必要なデータの取得や変更が困難になる事象に遭遇しました。これを解決するためには、適切な権限管理とアクセス制御を行い、必要なリソースへのアクセスを確保することが重要です。しかし、チーム内にgroupに関する変更の権限がなく、工夫が必要でした。反省点として、権限に関する勉強会を開催し、情報共有や権限設定に関するディスカッションがあればスムーズだったと思います。
サーバー環境の変更による制約
開発期間中にサーバー環境が変更されることも大きな課題です。例えば、サーバーメンテナンスによりLinux上のライブラリのバージョンアップが行われ、既存のコードが新しいバージョンと互換性がなくなることがありました。これにより、予期せぬバグや動作不良が発生し、開発が遅れることがありました。また、ライブラリのバージョンアップに伴う設定変更や依存関係の調整が必要となり、環境構築のマニュアルが役に立たなくなることもありました。
おわりに
チーム開発を通じて、私は多くの学びと成長の機会を得ることができました。メンバーそれぞれの強みが活かされ、協力して成果物を生み出すことができた一方で、コードや実行環境の共有、権限管理、サーバー環境の変更といった制約にも直面しました。今後もこれらの経験を活かし、より効率的で効果的な開発を目指していきたいと思います。
最後まで読んでいただき、ありがとうございます。LLM開発プロジェクトは、世代やドメインを越えた人が集まる、とても楽しいプロジェクトです。ぜひ、みなさんも挑戦してみてください。
この成果は、NEDO(国立研究開発法人新エネルギー・産業技術総合開発機構)の助成事業「ポスト5G情報通信システム基盤強化研究開発事業」(JPNP20017)の結果得られたものです。
東京大学 松尾・岩澤研究室が運営する松尾研LLMコミュニティのLLM開発プロジェクト[GENIAC] の開発記録、情報発信になります。 各種リンクはこちら linktr.ee/matsuolab_community
Discussion