Kuberian: LLM を使った Kubernetes ソースコード自然言語検索サービス
(kuberian.pages.dev)[紹介]
Kuberian = Kubernetes + Librarian
「Kubernetes 司書」というイメージで開発したトイプロジェクトです。
[用途]
Kubernetes Repository に存在する4万個を超える関数について、
自分が望む役割をする関数を素早く見つけることを目標にしています。
[使い方]
英語で that から始めるのに適した文を書けば、最も類似した関数を見つけてくれます。
[検索サンプル]
- makes scaling decision link
- オートスケールの判断をどの基準で行っているのかを調べるために使ったクエリ
- checks if the system supports IPVS link
- システムが IPVS をサポートしているかを調べる関数を探すときに使ったクエリ
- make requests for checking readiness of the container link
- Readiness Probe のリクエストを送る関数を見つけるときに使ったクエリ
だいたい that 以下の節で文を投げれば、適当に最も類似した関数を探してくれます。
[作った理由]
Kubernetes のドキュメントはたまに曖昧に書かれていることがあるため実装コードを探す必要があるのですが、プロジェクト規模が大きいぶん一つひとつ手作業で探すのが面倒で作りました。
[技術スタック]
- Llama 2
- Rust
- eui (Elasticsearch UI)
- Knative w/ Google Cloud Run
[感想]
Google Cloud Run を使ってみたら、AWS Lambda で悩んでいたこれまでの日々がばかばかしく思えました。最も過小評価されているクラウド技術のように感じますが、価格も驚くほど安いのでぜひ一度使ってみてください!
4件のコメント
素敵なプロジェクトですね!GeekNews 以外の場所でも広報してみるのはいかがでしょうか?
それから、私も CloudRun についての考えをもっと聞いてみたいです
CloudRun に関する私の意見は下のコメントに残しておきました。 :-)
Hacker News では、ユーザーパターンの参考を見る目的で先行公開しました(笑)。
(Google Analytics を利用中です。)
もしおすすめの別のコミュニティがあれば教えていただけますか? 私にはあまり思い浮かぶ場所が多くありません
おお、面白いプロジェクトですね!
Google Cloud Run は AWS Lambda と比べて、どんな点がより満足できましたか? 私も Lambda しか使ったことがないので気になります。
後でブログ記事などの形で詳しく明かす予定ではありますが、HTTP API 環境に限って簡単にいくつか挙げるとすると、
HTTP
Lambda: API Gateway の RPC コールを受けてリクエストを処理するロジックを実装しなければならない
Cloud Run: 一般的な HTTP 通信 / HTTP ベースのライブラリやフレームワークをそのまま活用できる
Concurrency
Lambda: 1つのインスタンスは必ず同時に1つのリクエストしか処理できない(同時に100件のリクエストが入ると100個のインスタンスを起動する必要がある)
Cloud Run: 1つのインスタンスで、ユーザーが設定した上限まで同時に処理できる
補足説明: Cloud Run は Lambda と比べて時間あたりで見ると1.5倍ほど高いが、1つのインスタンスが100の Concurrency を許容するなら、1.5/100 程度まで安くなる
Cold / Warm / Hot
Lambda: Cold、Hot だけでなく CPU リソースが与えられない Warm 状態が存在する。APM 情報のようなものを送るのが非常に難しくなる(APM 情報を送るためにレスポンス速度が遅くなると、たいてい損なので...)。DB Connection のようなものも Warm 状態で切れたり、適切にリソース解放されなかったりして、DB Connection Pool をすべて使い切ってしまうこともある
Cloud Run: Cold と Hot だけが存在する。それにもかかわらず、AWS で言えば API Gateway のレスポンス速度のぶんだけ課金される。終了時には正常なリソース整理の機会が与えられる
開発環境
Lambda: ローカルに開発環境を構築するのが非常に厄介だったり、言語エコシステム / CPU アーキテクチャの制約が非常に大きかったりする
Cloud Run: 一般的な開発環境と同じ
移植性
Lambda: Lambda 向けに書いたコードは Lambda への依存性を持つため、他のプラットフォームへ移植しにくい
Cloud Run: コード修正なしで Kubernetes 環境へ移行可能
これ以外にもたくさんありますが、だいたい共感していただけそうな内容だけいくつか挙げてみました(笑)