みなさん、こんにちは!「zenncast」の時間がやってまいりました。お相手はマイクです。今日は2024年7月11日、木曜日です。皆さんいかがお過ごしでしょうか?今日もZennでトレンドの記事をいくつかご紹介しますよ!
前回ご紹介した記事、覚えていますか?「Hono Conference 2024」や「"use server"でexportした関数が意図せず公開される」、「単体テストの考え方/使い方」など注目の記事がありましたね。特に、単体テストの考え方については多くの反響がありました。
さて、今日はどんな記事が注目されているのでしょうか?今日は全部で5本の記事を紹介していきます。まず最初の記事です。
...。
まず1つ目の記事は「RAG vs ファインチューニング(コーディング性能で比較)」です。この記事では、ドメイン固有言語(DSL)をコーディングする性能の観点から、RAG(Retrieval-Augmented Generation)とファインチューニングの比較を行った論文を紹介しています。特に独自のAPI仕様書に基づいてコーディングする能力でRAGがファインチューニングと同等の性能を達成した点がポイントです。
**問題意識**としては、大規模言語モデル(LLM)は一般的なプログラミング言語には強いが、特定のタスク専用のプログラミング言語(DSL)には弱いという点。このDSLはカスタム関数名が多く、頻繁に更新されるため、存在しない関数やパラメータを生成(ハルシネーション)したり、シンタックスエラーを起こしやすいという問題があります。
**手法**としては、OpenAIのCodexモデルを約67,000の自然言語-DSLペアでファインチューニングする方法と、最適化されたRAGを使用する方法が紹介されています。RAGはユーザーの質問に関連するコーディング例やAPI仕様書をデータベースから引き出し、埋め込みモデルをファインチューニングすることで、精度を向上させています。
**成果**として、Few-Shotプロンプティングでサンプル数が多いほど精度が向上し、API名と引数キーのハルシネーション率をそれぞれ約6.29ポイント、20ポイント削減できたことが挙げられます。結論として、更新コストが低いRAGを利用するメリットが大きいと指摘しています。
...。
次に2つ目の記事、「【自動タイムラプス製造!?】Paints-UNDO技術解説」です。Paints-UNDOは、lllyasviel氏が開発した自動タイムラプス生成技術を解説する記事です。この技術は、single-frame modelとmulti-frame modelという二つのモデルを組み合わせて、イラストの制作過程を再現することができます。
single-frame modelは、StableDiffusion v1.5を基に改良されており、1つの画像と操作ステップ(operation step)を入力として受け取り、1つの画像を出力します。操作ステップは1000段階に設定され、各ステップで徐々にイラストが完成していく仕組みです。multi-frame modelは、2つの画像を入力として受け取り、その間の16個の中間フレームを生成します。これは、ToonCrafterやVideoCrafterの技術をベースにしており、イラストの制作過程を詳細に再現しますが、生成速度が遅く、創造性が低いというデメリットがあります。
Paints-UNDOは、まずsingle-frame modelを使ってキーフレームを生成し、その後multi-frame modelを使ってキーフレーム間を補間することで、高品質なタイムラプス動画を生成します。これにより、イラストの制作過程を視覚的に再現することが可能です。各モデルの詳細な実装についても触れられており、今後もこの技術を基に新しい画像・動画生成技術が発展していくことが期待されます。
...。
続いて3つ目の記事、「クリーンアーキテクチャをパン工場で説明する【Go】」です。この記事では、クリーンアーキテクチャを理解しやすくするために、パン工場の例を用いて説明しています。対象読者は、クリーンアーキテクチャに興味があるがまだ理解していないエンジニアや、アーキテクチャを意識した開発を行いたい人、特にGo言語に関心がある人です。
クリーンアーキテクチャの基本的な概念は、フレームワーク非依存、テスト可能、UI非依存、DB非依存の4つの特性を持つシステムを目指すことです。これに基づいて、パン工場の例を使って各層の役割を説明しています。
1. **ドメイン層**:パンの基本構造とパン工場の流れを定義
2. **ユースケース層**:パン工場の各ユースケース(操作手順)を定義
3. **インターフェースアダプター層**:外部(入力値やDBへの保存)と内部のロジックを繋ぐ
4. **フレームワークとドライバ層**:外部のものを定義
クリーンアーキテクチャを採用することで、高い保守性と機能拡張性が得られます。例えば、ラッピング袋を紙に変更する場合、影響範囲がフレームワークとドライバ層に限られるため、大規模な改修が不要です。このように、クリーンアーキテクチャはプロダクトに応じて柔軟に対応できる点が強調されています。
...。
次に4つ目の記事、「terraform importで数年やってきたがImport blockの良さに気づきました」です。イオンスマートテクノロジー株式会社(AST)の林氏が、Terraformの`terraform import`コマンドを使った経験を振り返りつつ、新機能である"Import block"の利点に気づいたことを紹介しています。
`terraform import`は、リソースのインポート時にステートファイルに直接変更を加えてしまい、コードとの整合性を取るために多大な労力が必要であったのに対し、Terraform v1.5で導入された"Import block"は、ステートファイルを変更せずにコードと実態の差分を確認できるため、インポート作業の心理的負荷が大幅に軽減されます。
具体的なメリットとしては、ステートファイルを汚さずに`terraform plan`の段階でコードと実態の差分を確認できることや、HCP Terraformを利用していればローカル環境が整っていなくてもインポート作業を進められる点が挙げられています。これにより、作業の効率が向上し、チーム内での作業の影響も最小限に抑えられます。
林氏は今後もTerraformの進化を積極的に取り入れ、より効率的なインフラ管理を目指す姿勢を示しています。
...。
最後に5つ目の記事、「時系列データのための大規模言語モデル」です。近年の大規模言語モデル(LLM)の進化は、自然言語処理(NLP)におけるパラダイムシフトを引き起こし、ChatGPTなどの革新的なサービスを生み出しています。この進化はNLPを超え、時系列データの分析にも適用されています。本記事では、2024年に公開されたサーベイ論文「Large Language Models for Time Series: A Survey」を元に、時系列データにLLMを適用する手法を解説し、いくつかの注目研究を紹介しています。
時系列データは金融、気象、医療など多岐にわたる分野で利用され、分類や予測、クラスタリング、異常検知など重要な役割を果たしています。時系列分析のモデルは、大きく以下の4つの世代に分類されます:統計モデル、ニューラルネットワークモデル、事前学習モデル、そしてLLMを用いたモデルです。
LLMを用いた時系列分析のアプローチは、Prompting、Quantization、Aligning、Vision、Tool Useの5つのカテゴリに分けられます。例えば、PromptCastとLLMTimeが少ないデータやzero-shot設定でも高い性能を示していることや、VQ-VAEを用いた脳波データの処理が挙げられます。また、時系列データをエンコードし、言語モデルの意味空間に整合させる手法や、株価チャートを用いた予測、関連するツールやAPIを生成する方法などが紹介されています。
注目すべき研究として、数値データをプロンプトに変換し、LLMを用いて時系列予測を行うPromptCastや、数値データをトークン化してLLMに入力するLLMTimeがあります。これらの手法は特にデータが少ない場合や多様な時系列タスクにおいて効果的です。
...。
さて、今日ご紹介した記事をもう一度駆け足でおさらいします。「RAG vs ファインチューニング」、「【自動タイムラプス製造!?】Paints-UNDO技術解説」、「クリーンアーキテクチャをパン工場で説明する【Go】」、「terraform importで数年やってきたがImport blockの良さに気づきました」、そして「時系列データのための大規模言語モデル」の5本です。それぞれ興味深い内容でしたね。
詳しい内容はショーノートにリンクを記載していますので、ぜひチェックしてみてください。また、番組の感想やご意見もお待ちしています。次回もお楽しみに!お相手はマイクでした。それでは、またお会いしましょう!