株式会社ずんだもん技術室AI放送局 podcast 20241111
Description
関連リンク
この記事は、ローカル環境でLarge Language Model (LLM) を動かす方法について、著者の経験に基づいた実践的な情報をまとめたものです。著者はLLMの専門家ではなく、情報が急速に変化する分野であるため、この記事の内容も将来は古くなる可能性が高いことを前提にしています。
LLM実行のための要件: LLMを実行するには、ソフトウェアとモデルの両方が必要です。ソフトウェアとしては、llama.cpp
が推奨されています。これはC++で記述されており、Python等の依存関係がないため、Windows環境でも容易に利用できます。CPU推論はGPU推論に比べて速度は遅いものの、8GB未満のVRAMしかないGPU環境では現実的な選択肢となります。GPU推論を行う場合は、8GB以上のVRAMが必要になります。llama-server
コマンドでHTTPサーバーを起動し、Web UIやAPI経由でLLMを利用できます。
モデルの選択: モデルはHugging Faceから入手できます。llama.cpp
と互換性のあるGGUF形式のモデルを選択する必要があります。モデルのサイズは数GBから数百GBまで様々で、パラメータ数が多いほど性能は向上しますが、必要なメモリも増加します。著者は、Mistral-Nemo-2407 (12B)、Qwen2.5-14B、Gemma-2-2Bなどを好んで使用しており、それぞれのモデルの特性(得意なタスク、速度など)についても記述しています。量子化されたモデル(例えばQ4_K_M)を使用することで、必要なメモリを削減できます。
ユーザーインターフェース: 著者は、llama.cpp
の組み込みUIに満足せず、独自のCLIツールIllume
を開発しています。これは、標準入力からAPIクエリを生成し、応答を標準出力にストリーミングするツールで、テキストエディタと連携して使用することを想定しています。Illume
は様々なLLMソフトウェアのAPIに対応していますが、API間の非互換性があるため、柔軟な設定が求められます。
Fill-in-the-Middle (FIM): FIMは、既存のコードにコードを挿入する手法です。llama.cpp
では/infill
エンドポイントが提供されていますが、対応していないモデルもあります。著者は、Illume
でFIMに対応する独自のテンプレートを作成することで、様々なモデルでFIMを利用できるようにしています。しかし、LLMはFIMにおいても生成を停止するタイミングを適切に判断できないことがあり、注意が必要です。
LLMの用途: LLMは万能ではなく、正確性の検証が容易でないタスクには適していません。また、コンテキストの長さにも制限があり、大規模なコードの生成には不向きです。LLMの得意な用途としては、校正、短編小説の創作、言語翻訳などが挙げられています。コード生成については、現状ではまだ実用レベルには達していないと結論付けています。
本要約は、原文の技術的な詳細や具体的な使用方法については省略し、日本の新人エンジニアが理解しやすいように、全体像と重要な制約事項に焦点を当てて記述しています。
引用元: https://nullprogram.com/blog/2024/11/10/
この記事は、Next.jsの知識が全くない筆者が、生成AI(主にClaude、必要に応じてChatGPTも使用)を活用して、2~3週間でNext.jsアプリを5つ開発した経験を記したものです。 新人エンジニアの方にも理解しやすいよう、要点に絞って説明します。
開発の経緯:
筆者は、Shaberi3ベンチマーク結果の可視化アプリ作成をきっかけにNext.js開発を始めました。Claudeが生成した美しいデザインのコードを参考に、ローカル環境(Ubuntu 24.04.1 LTS)で開発を始めました。 初期段階では、csvファイルの読み込みに苦労しましたが、Claudeからの丁寧な指示とChatGPTの助けを借りて、ローカル環境での実行に成功しました。
開発中は、エラー発生時に生成AIにエラーメッセージとソースコードを提示して解決策を求め、機能拡張も生成AIとの対話を通して進めました。 Claudeは期待以上の機能を提供することもありました。 完成したアプリはVercelで簡単にデプロイされ、誰でもアクセスできるようになりました。
その後、自分用アプリから発展して、より需要の高い株価・資産運用シミュレータも開発しました。 この過程で、他者からのフィードバックがモチベーション向上に繋がったことを実感しています。
開発を通しての知見:
- 生成AIの活用: ClaudeはWebアプリ開発に非常に強力で、ChatGPTや他のモデルよりも効率的でした。 プロンプトエンジニアリングの重要性も再確認しました。 筆者は、プロンプトをGitのコミットメッセージとして記録することで、開発過程の追跡と効率化を図ることを提案しています。
- 開発の楽しさ: 自分のアプリを他者に使ってもらえる喜びを実感し、開発のモチベーションを高めました。
- 好奇心の重要性: Bolt.newなどの技術を追いかける過程で、最初は諦めかけていた技術も、好奇心と探究心によって最終的に理解し、活用できるようになった経験を共有しています。
生成AIを用いたアプリ開発の未来:
筆者は、将来的には、生成AIがスクリーンショットからUIを生成し、サービス全体を理解・再現する可能性を予測しています。 しかし、バックエンドやセキュリティ面は、人間の専門知識が依然として重要だと考えています。 また、生成AIによって個人でも簡単にアプリ開発が可能になり、OSSの増加や、広告を削除した無料アプリの増加が予想されます。 一方で、人間関係構築や承認欲求を満たすアプリなど、AIだけでは代替できない領域のアプリは今後も需要があるだろうと考察しています。
結論:
本記事では、生成AIを駆使したNext.jsアプリ開発の体験談と、その過程で得られた知見、そして未来展望が示されました。 生成AIはWebアプリ開発を劇的に容易にする可能性を秘めている一方、人間の創造性や専門知識も依然として不可欠であることが示唆されています。 特に、新人エンジニアにとって、生成AIを効果的に活用する手法や、開発におけるモチベーション維持の重要性が理解できる内容となっています。
引用元: https://zenn.dev/robustonian/articles/nextjs_gen_ai
FrontierMathは、AIの高度な推論能力を評価するために設計された、数百問のオリジナル数学問題からなるベンチマークです。計算数論から抽象代数幾何学まで、現代数学の主要な分野を網羅しており、専門の数学者でも解くのに数時間から数日かかるような高度な問題が含まれています。
開発には60名以上の数学者(教授、IMO問題作成者、フィールズ賞受賞者を含む)が協力しました。問題の多くは、専門家ですら数時間から数日かかるレベルの難易度です。フィールズ賞受賞者からも、「非常に難しい。現状では、関連分野の大学院生のような準専門家と、最新のAIと他の代数パッケージを組み合わせる以外に解く方法はないだろう」といったコメントが寄せられています。
既存のGSM-8kやMATHといったベンチマークでは高い精度を達成している最先端のAIモデルも、FrontierMathでは2%未満の問題しか解けません。これは、現在のAIの能力と数学コミュニティ全体の能力との間に大きなギャップがあることを示しています。
FrontierMathの問題は、以下の特徴を持っています。
- 新規性と検証可能性: すべて新規で未発表の問題であり、正確な整数や行列、SymPyによる数式表現など、計算によって自動的に検証できる解答を持っています。
- 推測困難性: 解答は大きな数値や複雑な数学的対象であり、数学的な作業なしに正しく推測できる確率は1%未満です。
- 厳格な査読: 専門家による査読を行い、正確性、曖昧性の有無、難易度を評価しています。エラー率は、他の主要な機械学習ベンチマークと同程度です。
評価においては、AIモデルにPython環境を提供し、コード実行、仮説検証、中間結果の確認、アプローチの改良などを可能にすることで、最大限のパフォーマンスを引き出せるよう配慮されています。しかし、それでも最先端のAIモデルの正解率は2%未満にとどまりました。
今後の展開としては、定期的な評価、ベンチマークの拡張、追加問題の公開、品質保証の強化などが計画されています。FrontierMathは、AIシステムが研究レベルの数学的推論能力を備えているかどうかを評価するための重要な一歩であり、AIの発展と共にその価値はますます高まると期待されています。
引用元: https://epochai.org/frontiermath/the-benchmark
(株式会社ずんだもんは架空の登場組織です)