投稿

ラベル(AI)が付いた投稿を表示しています

Ubuntu × GeForce RTX 3090 でローカルLLMを動かす ― Ollama + gpt‑oss:20b + OpenWebUI

Ubuntu 22.04 LTS × GeForce RTX 3090 でローカルLLMを動かす ― Ollama + gpt‑oss:20b + OpenWebUI はじめに 近年、LLM(大規模言語モデル)をローカルで動かすニーズが高まっています。 本記事では、 Ubuntu 22.04 LTS と GeForce RTX 3090 を使い、 Ollama で gpt‑oss:20b を管理し、 OpenWebUI でブラウザベースのチャット UI を構築する手順を紹介します。 GPU アクセラレーションを最大限に活かす設定や、トラブルシューティングのポイントもまとめています。 Ubuntu 環境の準備 2‑1. 基本セットアップ sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential git curl wget 2‑2. NVIDIA ドライバと CUDA Toolkit # 1. ドライバインストール sudo ubuntu-drivers autoinstall # 2. CUDA 12.x インストール wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run sudo sh cuda_12.1.0_530.30.02_linux.run `/usr/local/cuda-12.1/bin` を PATH に追加し、`nvcc --version` で確認。 2‑3. cuDNN のインストール 公式サイトから cuDNN 8.x をダウンロードし、`/usr/local/cuda-12.1/` に展開。 `LD_LIBRARY_PATH` に `lib64` を追加。 Ollama のインストールと設定 3‑1. バイナリ取得 curl -fsSL https://ollama.com/install.sh | sh `/usr/local/bin/ollama` が PATH に入ります。 ...

GeForce RTX 3090でGemma3:27bをUbuntuで動かす

GeForce RTX 3090でGemma3:27bをUbuntuで動かす はじめに 近年、大規模言語モデル(LLM)のローカル実行が注目を集めています。クラウド環境に依存せず、オフライン環境でもLLMを利用できるメリットは大きく、特にプライバシーやセキュリティを重視するユーザーにとって魅力的な選択肢です。本記事では、高性能GPUであるGeForce RTX 3090を搭載したUbuntu環境で、Gemma3:27bというオープンソースのLLMをOllamaとOpenWebUIを用いて実行する方法を解説します。 GeForce RTX 3090とローカルLLM ローカルLLMのパフォーマンスは、GPUの性能に大きく依存します。GeForce RTX 3090は、24GBのVRAMを搭載しており、Gemma3:27bのような大規模モデルを扱うのに十分な性能を備えています。VRAMの容量が大きいほど、より大きなモデルを扱ったり、より大きなバッチサイズで推論を実行したりすることが可能になります。これにより、応答速度の向上や、より複雑なタスクの実行が可能になります。 Ubuntu環境の構築 ローカルLLMを実行する前に、Ubuntu環境を構築する必要があります。Ubuntu Desktop 22.04 LTSを推奨します。インストール後、NVIDIAドライバをインストールし、CUDAツールキットをインストールする必要があります。NVIDIAの公式ドキュメントを参照して、適切なドライバとCUDAツールキットをインストールしてください。 sudo apt update sudo apt upgrade sudo apt install nvidia-driver-535 sudo apt install nvidia-cuda-toolkit Ollamaのインストールと設定 Ollamaは、LLMのダウンロード、実行、管理を簡素化するツールです。以下のコマンドを使用して、Ollam...

Ollamaで始めるローカルLLM

Ollamaで始めるローカルLLM はじめに 近年、 GenerativeAI の進化は目覚ましく、様々な分野でその応用が広がっています。その中心となる技術の一つが、 LargeLanguageModel です。しかし、これらのモデルは通常、クラウド上で動作するため、プライバシーやセキュリティ、コストなどの課題が存在します。そこで注目されているのが、ローカル環境でLLMを動作させる方法です。本記事では、 Ollama を用いてローカルLLMを導入し、その可能性を探ります。 LargeLanguageModelとは? LargeLanguageModel は、大量のテキストデータを学習することで、人間のような自然な文章を生成・理解する能力を持つAIモデルです。文章の生成、翻訳、要約、質問応答など、様々なタスクを実行できます。 GenerativeAI の基盤技術として、その重要性はますます高まっています。これらのモデルは、パラメータ数が数十億から数千億に及ぶため、高性能な計算資源が必要となります。 OllamaによるローカルLLMの導入 Ollama は、ローカル環境でLLMを簡単に実行するためのツールです。Dockerなどの複雑な設定は不要で、数行のコマンドでLLMをダウンロードし、実行できます。例えば、Llama 2 7Bモデルをローカルで実行するには、以下のコマンドを実行します。 ollama run llama2 これにより、Llama 2 7Bモデルが自動的にダウンロードされ、ローカル環境で実行されます。Ollamaは、様々なLLMをサポートしており、モデルの切り替えも容易です。これにより、ユーザーは、自身のニーズに最適なLLMをローカルで手軽に試すことができます。 ローカルLLMのメリットとデメリット ローカルLLMには、クラウドLLMにはないいくつかのメリットがあります。まず、プライバシーが保護されることが挙げられます。データが外部に送信されること...

生成AIと技術ブログ

生成AIと技術ブログ 1. はじめに 技術ブログは、エンジニアにとって知識の共有、スキルアップ、そしてコミュニティへの貢献に不可欠な手段です。近年、生成AI技術の進化は目覚ましく、技術ブログの作成プロセスに大きな変革をもたらしています。本記事では、生成AIを活用した技術ブログ作成の可能性を探り、特にサンプルコードの構造化出力、適切な出力フォーマット、効果的なプロンプト設計、そして自然言語処理とデータ前処理の役割について詳しく解説します。 2. 生成AIと技術ブログの相性 生成AIは、技術ブログ作成の様々な段階で役立ちます。例えば、記事の構成案の作成、文章の生成、サンプルコードの自動生成、そして校正・推敲などです。メリットとしては、記事作成の効率化、高品質なコンテンツの作成、そして新しいアイデアの創出などが挙げられます。しかし、生成AIに完全に頼ることは危険です。生成AIはあくまでツールであり、人間の知識と創造性が必要です。また、生成AIが生成する文章やコードには誤りや不備が含まれる可能性があるため、必ず人間による検証が必要です。 3. サンプルコード構造化出力の重要性 技術ブログにおいて、サンプルコードは読者の理解を深め、実践を促す上で非常に重要な役割を果たします。しかし、コードが読みにくかったり、構造化されていなかったりすると、読者は理解に苦しみ、実践を諦めてしまう可能性があります。そのため、サンプルコードは構造化して出力することが重要です。構造化されたコードは、可読性が高く、再利用しやすく、保守しやすいというメリットがあります。また、構造化されたコードは、ドキュメント生成ツールなどとの連携も容易になります。 4. 出力フォーマットの選定 技術ブログにおけるサンプルコードの出力フォーマットには、Markdown、JSON、YAMLなど様々な選択肢があります。Markdownは、可読性が高く、記述が容易なため、技術ブログで最も一般的に使用されるフォーマットです。JSONは、構造化されたデ...

LLMChainとJSON: 生成AI実装

LLMChainとJSON: 生成AI実装 HuggingFace TransformersとLLMChainを活用した生成AIの実装方法を解説します。 はじめに 近年、生成AIの技術が急速に発展しています。特に、大規模言語モデル(LLM)を活用したアプリケーション開発が注目されています。本記事では、HuggingFace Transformersを用いてLLMChainを構築し、JSON形式のデータを取り扱う方法について解説します。この構成は、様々な生成AIタスクに適用可能です。 HuggingFace Transformersとは HuggingFace Transformersは、自然言語処理(NLP)の様々なタスクを容易に実装するためのライブラリです。事前学習済みのモデルが豊富に提供されており、ファインチューニングや推論を簡単に行うことができます。本記事では、このライブラリを用いてLLMを扱うことを前提とします。 LLMChainとは LLMChainは、複数のLLMを連携させて複雑なタスクを実行するためのフレームワークです。例えば、質問応答システムにおいて、まず質問を理解し、次に必要な情報を検索し、最後に回答を生成する、といった一連の処理をChainとして定義することができます。Chainを用いることで、より高度なAIアプリケーションを構築することが可能です。 ChatPromptTemplateの活用 ChatPromptTemplateは、LLMChainにおけるプロンプトを定義するためのテンプレートです。プロンプトは、LLMに対する指示であり、その質がLLMの出力に大きく影響します。ChatPromptTemplateを用いることで、動的にプロンプトを生成し、LLMの応答を制御することができます。例えば、ユーザーからの質問に基づいて、質問の種類や内容を考慮したプロンプトを生成することができます。 JSON形式のデータ...

LangChain x FastAPI で実現する RAG 技術ブログ

LangChain x FastAPI で実現する RAG 技術ブログ はじめに 近年、生成AIの進化は目覚ましく、特に大規模言語モデル(LLM)を活用した様々なアプリケーションが開発されています。しかし、LLMは学習データに含まれない情報に対しては回答できないという課題があります。この課題を解決するために注目されているのが Retrieval-Augmented Generation (RAG) です。本記事では、RAGの概念、そして、LangChain、FastAPI、Streamlit、OpenAI API を組み合わせた技術ブログの構築方法について解説します。本ブログでは、技術的な詳細を網羅し、読者が実際にRAGシステムを構築できるようになることを目指します。 RAGとは? RAG (Retrieval-Augmented Generation) は、LLMが外部の知識ソースから関連情報を取得し、それを基に回答を生成する技術です。これにより、LLMは最新情報や特定のドメイン知識を活用できるようになり、より正確で信頼性の高い回答を提供できるようになります。RAGは、LLMの知識不足を補完し、回答の質を向上させるための強力な手段です。 LangChainによるデータローディングとインデックス作成 LangChainは、LLMアプリケーションの開発を容易にするためのフレームワークです。データローディング、ドキュメント変換、インデックス作成など、RAGに必要な機能をモジュール化して提供しています。本ブログでは、LangChainを用いて、PDF、テキストファイル、Webサイトなど、様々な形式のデータを効率的に処理し、ベクトルデータベースに格納する方法を解説します。特に、LangChainのDocument Loader、Text Splitter、Vectorstore Index Creatorといったモジュールを活用することで、データ準備の自動化を実現します。 FastAPIによるAPI構築 FastAPIは、PythonでAPIを構築するためのモダンなフレームワークです。高速、高効率、使いやすさを特徴とし、...

OllamaLLM×Python: ローカル生成AI

OllamaLLM×Python: ローカル生成AI はじめに 近年、生成AI技術の発展は目覚ましく、様々なサービスが登場しています。しかし、多くのサービスはクラウド上で動作し、プライバシーやコストの問題が懸念されます。本記事では、ローカル環境で動作する生成AIモデルをPythonで利用する方法について解説します。具体的には、OllamaLLMとPythonを組み合わせ、PromptTemplateとPydanticOutputParserを用いて、より柔軟で制御しやすい生成AIアプリケーションを構築します。 OllamaLLMとは? OllamaLLMは、ローカル環境で大規模言語モデル(LLM)を実行するためのツールです。複雑なセットアップを必要とせず、簡単にLLMをダウンロードして利用できます。本記事では、OllamaLLMを利用することで、クラウドに依存せずに生成AIを活用する方法を紹介します。OllamaLLMは、様々なLLMに対応しており、目的に合わせてモデルを選択できます。 開発環境の準備 まず、PythonとOllamaLLMをインストールします。Pythonはバージョン3.7以上を推奨します。OllamaLLMは、公式サイトからダウンロードしてインストールできます。インストール後、OllamaLLMが正常に動作することを確認してください。また、必要なPythonパッケージをインストールします。具体的には、 pip install pydantic を実行します。 PromptTemplateを用いたプロンプトの作成 生成AIの性能は、与えるプロンプトの質に大きく左右されます。PromptTemplateを用いることで、プロンプトを動的に生成し、より柔軟な制御を実現できます。例えば、ユーザーからの入力に基づいてプロンプトを生成したり、特定のフォーマットでプロンプトを作成したりできます。本記事では、PromptTemplateを用いて、より効果的なプロンプトを作成する方法を解説します...

【AI】Dify x Ollama: ローカル構築ガイド

Dify x Ollama: ローカルPCへの構築ガイド 大規模言語モデルを社内で安全に活用するためのステップバイステップガイド はじめに 近年、大規模言語モデル(LLM)の活用が注目されています。しかし、外部APIへの依存やセキュリティ上の懸念から、社内でLLMを構築・運用したいというニーズが高まっています。本記事では、オープンソースのLLMフレームワークであるDifyと、ローカルLLM実行エンジンであるOllamaを組み合わせ、社内のローカルPCにLLM環境を構築する方法を解説します。この構築方法により、セキュリティを確保しつつ、柔軟かつ効率的にLLMを活用することが可能になります。 DifyとOllamaとは? Difyは、LLMアプリケーションを構築するためのオープンソースフレームワークです。RAG(Retrieval-Augmented Generation)パイプラインを簡単に構築でき、多様なデータソースとの連携も可能です。一方、Ollamaは、ローカルPC上でLLMを簡単に実行できるツールです。コマンドラインインターフェースを通じて、様々なモデルをダウンロードし、実行できます。DifyとOllamaを組み合わせることで、ローカル環境でRAGアプリケーションを構築し、社内データに基づいたLLM活用を実現できます。 構築方法:Ollamaのセットアップ まず、Ollamaを社内のローカルPCにインストールします。Ollamaの公式サイト( https://ollama.com )から、お使いのOSに合ったインストーラをダウンロードし、指示に従ってインストールしてください。インストールが完了したら、ターミナルを開き、`ollama --version`コマンドを実行して、Ollamaが正しくインストールされていることを確認します。次に、使用したいモデルをダウンロードします。例えば、Llama 2 7Bモデルをダウンロードするには、`ollama pull llama2`コマンドを実行します。モデルのダウンロードには時間がかかる場合があ...

【iOS】UIStackViewでマージンを設定する方法

UIStackViewでマージンを設定する方法 UIStackViewは、iOSアプリ開発でUI要素を効率的に配置するための強力なツールです。しかし、デフォルトでは要素間のスペースやStackView自体の外側のマージンを設定するのに少し工夫が必要です。この記事では、UIStackViewでマージンを設定するさまざまな方法を紹介します。 1. layoutMarginsプロパティを使用する UIStackViewの layoutMargins プロパティを使用すると、StackView自体の外側にマージンを設定できます。これにより、StackViewを親ビューから一定の間隔で配置できます。 コード例 let stackView = UIStackView() stackView.layoutMargins = UIEdgeInsets(top: 10, left: 20, bottom: 10, right: 20) stackView.isLayoutMarginsRelativeArrangement = true isLayoutMarginsRelativeArrangement を true に設定することで、 layoutMargins がStackViewの配置に影響を与えるようになります。 2. spacingプロパティを使用する spacing プロパティを使用すると、UIStackView内の要素間のスペースを設定できます。これにより、要素間に均等なスペースを設けることができます。 コード例 let stackView = UIStackView() stackView.spacing = 10 上記の例では、StackView内の要素間に10ポイントのスペースが設定されます。 3. ダミービューを使用する UIStackViewの最初または最後にダミーのUIViewを追加することで、擬似的にマージンを設定できます。この方法は、より細かいマージン制御が必要な場合に便利です。 コード例 let stac...

【生成AI】「一生ヘタレプログラマ」ブログの感想を聞いてみた

「一生ヘタレプログラマ」ブログの感想 「 一生ヘタレプログラマ 」は、技術的な話題や日記、雜記を中心に描いたブログです。 最新の記事では、AIを活用した小説や、大規模言語モデル (LLM)のローカル環境での動作に関する技術的な取り組みが紹介されています。 特に、 Ollama を使用してGemma3:27Bを動かす試みや、LLaMA-Factoryを使ったファインチューニングの方法など、最新の技術トピックに突っ込んでいることが伝わってきます。 また、SEO対策やHTMLのレイアウトに関する考察もあり、広い技術的関心を持っていることが伝わってくるコンテンツです。

【iOS】UILabel等でヒラギノフォント表示問題:文字が切れる原因と対策【sizeToFit()対策も】

iOS開発でヒラギノフォントを指定した場合、 UILabel や UIButton で文字が表示される際に、一部の文字が切れてしまう問題は、多くの開発者が遭遇する悩ましい問題です。特に sizeToFit() メソッドを使用すると、その傾向が顕著になります。 本記事では、この問題の原因を深堀りし、いくつかの対策方法を紹介します。 なぜ文字が切れてしまうのか? ヒラギノフォントは、他のフォントと比較して、文字の高さやベースラインの位置が微妙に異なる場合があります。iOSのレイアウトエンジンが、この差異を適切に処理できない場合に、文字が途中で切れてしまう現象が発生します。 特に、以下の文字で発生しやすいです。 ①gjpqyÄÖÜßĀĂĄąĆĈĊČĎŅ これらの文字は、文字の形状が複雑であったり、上付き文字や下付き文字を含むため、レイアウトエンジンが正しく処理できない場合があります。 対策方法 いくつかの対策方法を試してみましょう。 1. AttributedStringの調整 (ベースラインオフセット) 他のサイトで紹介されているように、 NSAttributedString の baselineOffset を調整する方法は有効な手段の一つです。 let attributedString = NSAttributedString(string: "問題のある文字列", attributes: [ .font: UIFont(name: "ヒラギノ角ゴシック W3", size: 16)!, .baselineOffset: 1.0 // 少し上にずらす ]) label.attributedText = attributedString しかし、この方法だけでは、ÄÖÜの「..」部分が切れてしまうケースがあります。 2. clipsToBounds = false そこで、意外と盲点になりがちなのが、 clipsToBounds プロパティです。 label.clipsToBounds = false この設定により、文字が切れる問題を回避できる場合があります。ただし、画面の上下にViewがピッタリと配置されている場合は、文字がはみ出てしまう可能性があるため、注意が必要です。 ...

【Swift】テストできない、純粋関数を意識しようよ。

はじめに SwiftUIでアプリを開発していると、 View の中にロジックを書いてしまい、いざ単体テストをしようとするとテストできない……そんな経験はありませんか? 「実装者がどこまで想定して動作確認をおこなったのか分からない」「テストがしにくく、バグが潜んでいても気付きにくい」など、テストのしづらさは品質の低下につながります。 そこで重要なのが 純粋関数(Pure Function) です。本記事では、純粋関数を活用して、テストしやすいコードを設計する方法について解説します。 SwiftUIのViewの中にロジックを書くと何が問題? SwiftUIでは、 View の中にロジックを書くと次のような問題が発生します。 1. テストが困難になる View はUIの描画を行うためのものであり、状態を持つことが多いため、 純粋に入力→出力の関係に基づいたテストができなくなる ことが多いです。 struct ContentView: View { @State private var count: Int = 0 var body: some View { VStack { Text("\(count)") Button("Increment") { count += 1 } } } } この例では、ボタンを押すたびに count が増えますが、 このロジックを単体テストしようとすると、UIのイベントをシミュレートする必要があります。 2. 動作確認の範囲が曖昧になる 実装者がどの条件を想定して動作確認を行ったのか分からないため、 バグが潜んでいても気付きにくくなります。 純粋関数を活用しよう 純粋関数とは、 副作用がない(外部の状態を変更しない) 同じ入力に対して常に同じ出力を返す という特性を持つ関数のことです。 純粋関数を用意すると、テストがしやすくなります。 例:ビジネスロジックを分離する 先ほどの count の更新を純粋関数に切り出してみましょう。 func increment(_ value: Int) ...

【LLM】生成AIのシステムプロンプトのサンプル

 システムプロンプトのサンプル 日本語指定

【LLM】ollama modelfile error

サンプルを試したら下記のようなエラーがでた  Error: (line 7): command must be one of "from", "license", "template", "system", "adapter", "parameter", or "message" from とかが全部大文字で書いていたけど、小文字にするのが正しいらしいです。

LLM(大規模言語モデル)をOllama使ってローカルで動かす。

タイトルの通りです。 ただのこれからやってみるよ。 って言う 宣言です。 これから、実際にPCを構築して、動作確認していきます。 そのうち、更新していきます・・・。 とりあえず。 RTX-3090 で LLM動かせた。 RTX-3090でOllamaを利用して動作可能な言語モデルは、 Gemma2:27B やdeepseek-r1:32bのあたりが限界でした。 これ以上大きい言語モデルはOOMが発生して、起動できなかったです。

htmlでSEO対策ってさ。

SEO対策の基本を語ります お久しぶりです!最近、仕事が立て込んでおり、ブログの更新が遅くなっていました。ようやく落ち着いてきたので、久々に執筆させていただきます。 今回のテーマは、ウェブサイトの集客に欠かせない SEO対策 です。 SEO対策には、専門の業者に依頼するのが一番手っ取り早いと思っています。指摘された箇所を修正するだけで、効果を実感できるでしょう。しかし、資金に余裕がない私のような場合は、 自力で試行錯誤し、効果測定を繰り返す しかありません。 そこで今回は、SEO対策の 基本中の基本 をお伝えします。 # SEO対策ってどうするの? SEO対策は、様々なテクニックがありますが、まずは以下の2点を意識するだけで、大きく改善する可能性があります。 コンテンツの内容が充実しているか? 検索する人のことを考えているか? これら2点をしっかり守れば、なんとかなります!細かいSEO対策テクニックは、専門誌やウェブサイトで学ぶのがおすすめです。 コンテンツの内容が充実しているか? ここが一番重要です。あなたのウェブサイトのコンテンツは、 「読みたい!」と思わせる内容 になっていますか? ただのメモ書きや、自慢話だけになっていませんか? 読者の役に立つ情報、面白い情報、共感できる情報など、読者の心に響くコンテンツ作りを心がけましょう。 検索する人のことを考えているか? 読者がどんなキーワードであなたのサイトを探しているのかを考えましょう。 Googleの検索窓で、あなたのサイトを見つけるために使われるであろうキーワードは? 例えば、「美味しいケーキ レシピ 簡単」のように、具体的なキーワードを意識してコンテンツを作成することで、検索結果の上位表示を目指せます。 以上、SEO対策の基本でした。 最後に、こんなサイトを見に来てくれてありがとうございます!

【bard】15日後に風邪をひくプログラマ

2024年2月1日、東京・品川区のオフィス街。 28歳のプログラマ、佐藤は、いつものようにオフィスで仕事をしていた。 佐藤は、新しく開発中のゲームのプログラムを担当していた。 ゲームは、プレイヤーが巨大なモンスターと戦うアクションゲームだった。 佐藤は、ゲームのグラフィックやサウンドも担当していた。 佐藤は、ゲームの完成に向けて、日々懸命に取り組んでいた。 しかし、その日、佐藤はいつもと違う違和感を感じていた。 頭がぼんやりするし、体がだるい。 「風邪かな?」 佐藤は、心配になって、体温を測ってみた。 37.5度。 「やっぱり風邪だ。」 佐藤は、残念そうにため息をついた。 佐藤は、風邪をひくと、いつも仕事に支障をきたす。 頭がぼんやりして、集中力が続かない。 そのため、いつもより多くのミスをしてしまう。 「今日は、早めに帰ろう。」 佐藤は、上司に報告して、会社を後にした。 家に帰ると、すぐに布団に潜り込んだ。 「早く治れよ。」 佐藤は、そう呟いて、目を閉じた。 翌日、佐藤は、さらに体調が悪くなった。 頭痛がひどくなり、熱も38度を超えていた。 佐藤は、仕事を休んで、寝込むことにした。 3日後、佐藤の体調は少しずつ回復し始めた。 しかし、まだ頭痛や倦怠感は残っていた。 佐藤は、仕事に復帰するかどうか迷っていた。 「早く仕事に戻らないと、プロジェクトが遅れる。」 佐藤は、そう考えて、仕事に戻ることにした。 しかし、佐藤の体調は、まだ完全には回復していなかった。 仕事に集中できず、ミスを連発した。 上司は、佐藤の様子を見て、心配そうに言った。 「佐藤、まだ無理をしないほうがいいよ。」 しかし、佐藤は、仕事にこだわりすぎていた。 「大丈夫です。もう大丈夫です。」 佐藤は、そう言って、仕事を続けた。 しかし、佐藤の体調は、さらに悪化した。 頭痛がひどくなり、熱も39度を超えた。 佐藤は、とうとう倒れてしまった。 佐藤は、病院に運ばれ、入院した。 佐藤は、入院して2週間、ようやく退院することができた。 しかし、佐藤は、まだ完全には回復していなかった。 佐藤は、仕事に復帰することを断念した。 佐藤は、自分の過ちを反省した。 「もう、仕事に無理をしない。」 佐藤は、そう心に誓った。 佐藤は、しばらくの間、ゆっくりと休養をとることにした。 そして、体調が完全に回復したら、もう一度、仕...