近藤 憲児 (KONDO Kenji)
目次
自己紹介#
- Web × AI のエンジニア
- Udemy 講師
- 情報処理安全確保支援士(旧:セキュリティスペシャリスト)試験合格
- 認定スクラムマスター
発表資料・記事#
経歴#
2009年: 福岡大学 理学部 応用数学科
2013年: 九州大学 大学院 数理学府
数理学修士
- 専門は力学系理論、とりわけフラクタル
- 数理論理学、形式論理学、数学基礎論も同じくらい熱中していた
2015年: 株式会社インターネットイニシアティブ
インフラ/バックエンドエンジニア、アーキテクト、テックリード
- POS システム、 IoT 案件などの受託開発
- IoT プラットフォームサービスのの要件・仕様定義、アーキテクチャ設計、実装、運用保守
- Scrum 開発の導入
- Kubernetes Cluster を on-demand で払い出す Kubernetes as a Service プロジェクトのプロジェクトマネジメント、設計と実装
2020年: 株式会社スカイディスク
AI エンジニア、 AI エンジニアリングマネージャー、 AI テックリード
- 塾や製造業からの、機械学習や組合せ最適化を用いた AI 受託開発
- AI SaaS プロダクトのプロダクトの設計やアルゴリズム開発
- AI エンジニアリングチームのチームマネジメント、ピープルマネジメント
- LLM の社内導入や、 LLM を用いた複数の受託開発
2024年: 株式会社スタディスト
AI 開発リードとして、プロダクト・事業における AI 技術の活用を促進
スキル#
AI 領域(アルゴリズム、組合わせ最適化、機械学習、LLM など)#
アルゴリズム、組合せ最適化
- 「衝突しないこと(=有限個の自然数の集合から自身に対して定義された写像が全単射であること)が数学的に保証された疑似乱数生成アルゴリズムを使って、 ID を生成関数を実装せよ」という要件に対して Xorshift を提案し、論文を追試したのち実装した。
- 最適ワークス のスケジューリングアルゴリズムの設計は、組合せ最適化理論を応用している。以下は用いた技術のキーワード:
- 制約充足問題として問題を定式化
- 最適化は局所探索法、遺伝的アルゴリズム、ヒューリスティクスを検討
- 巡回セールスマン問題として定式化した問題に対し、 OR-Tools を用いる
- 制約を満たすスケジュール生成にはバックトラッキングを用いる
- 開発チームの新メンバーには、制約充足問題について親しんでもらうことを目的に、 N-Queens 問題を min-conflict アルゴリズムで解く課題を課した
- cf.) AI エンジン開発チームの研修課題を公開! “n-queens 問題”
- cf.) 数独とスケジューリング問題
機械学習、ディープラーニング
- Kafka を用いて構成したシステムのパフォーマンスのチューニングを、回帰分析を行って実現した。
- 単位時間におけるスループットが、 Kafka に設定した Partition 数と ConsumerClient の数をパラメータに持つ二次形式に近似できると仮定して、回帰曲面を出した。
- その曲面の極値問題を解くことで、理想的な Partition 数と ConsumerClient の数の組合せを求めた。
- cf.) Spring Cloud Data Flow で構成される IIJ IoT サービス
- 学習塾に蓄積された 20 年ほどの模擬試験の結果をもとに、単元別の"得意・不得意"に関する確率分布を作り、ある限られた単元の成績から、他単元の"得意・不得意"を推測するシステムを提案
- 確率分布に相当するベイジアンネットワーク構築に Chou-Liu のアルゴリズムを採用
- Pytorch で CNN を実装し、自分の好む服の柄を判定するモデルを作成
- 音楽生成に興味を持ち、 Magenta のコードを参考にしながら VAE を用いた音楽生成モデルを構築した。
- いわゆる “カノンコード” と呼ばれるコード進行の曲を 20 曲ほど楽譜に書き起こし、それを MusicXML という XML 形式に保存し、それを学習させた。
- 当時 Magenta は Tensorflow ベースであったので、それを Pytorch で必要な部分を書き直した。
- (GPT-3 が流行ってきたあたりで途端にやる気が無くなってやめた)
- Transformer-based な GAN である TransGAN を用いて CIFAR-10 で画像生成を試した。
- CIFAR-10 くらいじゃないと、 Google Colab の GPU では許容できる時間で学習が終わらなかった。
- 今は論文の revision が上がっており問題ないが、初期のサンプルコードは評価関数の定義が明らかにおかしくて、自分で修正しながら実験した。
- 機械学習の勉強会を企画して行ったこと
- PRML を読んだ。
- 参加メンバーが数学をしっかりやり直したいということで、線形代数、微分積分、確率統計の基礎を 7 ヶ月かけて勉強するという企画を行った。
- Python でやる ML Cycle5: SVM(1)-制約なし最適化問題とその解き方 や ガウス過程が面白い といった資料を準備することもあった。
- Udemy のコース 本当にわかる、AI 時代の数学【超初心者からの数学入門】 は、この勉強会の経験から作ることができた。
LLM
- LangChain に PR 送った
- vector store から抽出した Document 情報にその時の score (cos 類似度など) を同時に付与するオプションについての PR (結局他の PR と混ぜられて取り込まれなかったけれども)
- 企画壁打ちボット ORANGE-AI は RAG で作った。
- OpenAI の GPT の API, vector store として Pinecone, FAISS などを用いた。
- cf.) LLM の評価-近藤憲児
- cf.) AI Chat Bot 開発 Tips-近藤憲児
- テレビ番組向けに 最強グルメ AI くんトン を作った
- LLM のアウトプットの品質コントロールのために Agentic Workflow を用いる
- Azure OpenAI, Amazon Bedrock を用いたアプリの実装
- LLM アプリケーションの評価、実験管理も行う
プログラミング言語#
Python
- 業務で最も用いている言語。プロダクションレベルのコードを書ける。
Go
- 以前は業務で用いていた。最近は触っていない。かつてはプロダクションレベルのコードを書けた。 Go の勉強にハマっていたときは、 Kubernetes のほとんどすべてのコードを読んでた。それくらいには好き。
Java
- 以前は業務で用いていた。最近は触っていない。かつてはプロダクションレベルのコードを書けた。 Spring Framework を用いてマイクロサービスを構築していた。 cf.) Spring Cloud Data Flow で構成される IIJ IoT サービス
R や C++
- 業務で用いたことはない。書くのも得意ではない。書籍などで勉強する際には問題なく読める程度。
インフラ#
- ネットワーク、サーバーの構築と運用
- L2-L7 での設定およびトラブルシューティング。ルーティングテーブルや MAC/ARP テーブルを読み、設定できる。
- Ubuntu, CentOS, RedHat
- ミドルウェアの構築と運用
- Nginx, Apache HTTPD, Squid
- BIND, Unbound, NSD
- Hadoop Yarn, HDFS, また Spark
- Elasticsearch, Kibana, Logstash, Fluentd
- Kafka/Zookeeper, RabbitMQ
- MariaDB Cluster (with pacemaker + corosync + DRBD), MySQL Cluster, PostreSQL Cluster
- Reis-Sentinel Cluster, Redis Cluster
- Ansible, Ansible Spec
- Jenkins, TravisCI, ArgoCD, GitHub Actions
- Datadog, Prometheus, Zabix
- Zipkin, Jeager, OpenMetrics
- Docker, Kubernetes などの Cloud Native 周辺
- Mesos, CloudFoundry, Docker Swarm
- Kubernetes クラスターそのものの構築と運用、および Kubernetes as a Service としてのサービスの設計と実装
- Rancher, OpenShift, VMware Tanzu
- (最近は積極的に追っていないので、若干この周辺の知識は疎くなっている)
設計#
- これまでのサービス・プロダクトの開発リードの経験から、機能設計、非機能設計、 DB 設計、セキュリティ設計、ネットワーク設計、インフラ設計、ソフトウェア設計、モニタリング設計、運用設計、業務設計など、あらゆる設計に対応できる。
- Azure, AWS, GCP についても、それぞれのサービスについて積極的に得意と言うことはできないが、シンプルなシステムであれば最適な構成を提案できる。
- マイクロサービスアーキテクチャ、イベントドリブンアーキテクチャなどのアーキテクチャのスタイルについて、それぞれのトレードオフを理解しながら選択できる。
開発管理#
- Git Flow, GitHub Flow を用いた開発
- Scrum に精通すべく Certified ScrumMaster® を取得
- Sentry, Redmine などのバグトラッキング
マネジメント#
- エンジニアリングチームのマネージャーとして、チームメンバーの人事評価、教育など
- エンジニア採用(インフラ/バックエンド/AI)
その他#
- 英語
- 技術的な文章の読み書きは問題なくできる。
- 台湾の企業との共同プロジェクトでは、1 年を通じて英語でのコミュニケーションを行った。
- 業務知識、ドメイン
- 製造業、生産計画
- IoT
モットー#
- ギークであること … 未知の事柄を理解することに深い喜びを感じます
- 事業ファーストであること … 技術に限定されない方法で、最小のコストで最大の価値を生み出すことに専念します
- 敬意を持つこと … 私が直接理解できない事柄についても、その背後には深い背景や理由があると想像することを心がけています
- 野心的であること … 特に困難な、かつ解くべき課題に直面した時こそ、チームで声を掛け合いながら粘り強く取り組みます
このサイトについて#
バートランド・ラッセルの『幸福論』の真似をしたくなった。近い将来に実現する自分のクローン AI を作りやすくために考えたことを残していく。
Related
お問い合わせ