比較メモ）ollamaを用いた、jupyter notebook環境におけるlama3 4BとDeepSeek-R1 14B蒸留・量子化の比較メモ

# 前置き
言語モデル、LLM4、生成AI、呼び名は何でもよいですが、
実用するには最も性能が高いモデルを使用したほうがよいところ、最高のモデルを使えるAPIでの使用のみを考慮してきました。

特許解析でopenai API、Gemini APIと使ってきたところですが、コストが馬鹿になりません。特許解析は俯瞰的にみる必要があるところ（例えば物質特許一つにしても、全体の関係性を俯瞰してみなければどれが物質特許か実際には特定できない。ブルーオーシャンを構造から発見できるが俯瞰してみるしか方法はない。など）適切に俯瞰するためには文章の件数も文量も多量となるのですよね…

DeepSeek-R1 (https://github.com/deepseek-ai) のMITライセンスでの公開を受け、そろそろローカルでつかえる蒸留・量子化モデルでも実用レベルとなっているかな、と考えるに至り、結果をメモしてゆくこととしました。

（ローカルのモデルの性能を確かめるのは、mT5でモデルづくりしていたころ以来、意味空間の空白に対応する特許を生成する軽量モデルづくりをしていたころ以来、となりますかね）


# 環境
windows11
CPU
RAM 32GB

miniconda
ollama 0.5.7
langchain 0.3.15

# 準備
１　ollamaインストール
　コマンドプロンプトからollamaを起動できるようにしておく
　https://ollama.com/
 
２　ollamaでモデルを実行
　ollama runでモデルのダウンロードと試用
　llama3 4B: 
 ```:
ollama run llama3
 ```
　DeepSeek-R1 14B蒸留・量子化: 
 ```:
 ollama run hf.co/bartowski/DeepSeek-R1-Distill-Qwen-14B-GGUF:latest
 ```
　モデル認識と容量の確認
```:
>ollama list
NAME                                                        ID              SIZE      MODIFIED
hf.co/bartowski/DeepSeek-R1-Distill-Qwen-14B-GGUF:latest    335eb7182681    9.0 GB    22 minutes ago
llama3:latest                                               365c0bd3c000    4.7 GB    19 hours ago
```

３　jupyter notebookからモデルを実行
　ollama serveが立ち上がっていることを確認して、
　jupyter notebookを起動
 
　シンプルに次の通り実行してみる
```python:
from langchain_community.llms import Ollama
llm = Ollama(model="llama3")
llm.invoke("<質問>")
```

# 質問と回答
## 質問１：日本語で回答してください。自然言語処理における潜在空間や意味空間の構造の意義とは何ですか

### lama3 4B
※CPU稼働50％ほど　RAM使用システム含め11GBほど
※生成速度は速くもなく遅すぎもせず

> 😊

> 自然言語処理（NLP）における潜在空間（latent space）や意味空間（semantic space）は、text dataを表現し、意味の関係を捉えるための数学的枠組みです。

> 潜在空間は、原則として、高次元のベクトル空間で、text dataを表現するために使用されます。このベクトルの各成分には、特定の語彙要素や文体的な特徴が付与されており、これにより、異なる文書や文章間に意味的距離（semantic distance）を測ることができます。

> 一方、意味空間は、潜在空間の進化形であり、より抽象化された表現で、text dataの意味的関係を捉えることを目指しています。これらの空間構造は、word2vecやGloVeなどの技術によって実現されます。

> このような空間構造の意義はいくつあります。

> 1. **意味の捉え方**：潜在空間や意味空間では、text dataの意味的関係を捉えることができます。これにより、異なる文書や文章間に意味的距離を測ることができ、類似した文章や主題を探すことができます。
> 2. **文体的な分析**：このような空間構造を用いて、text dataの文体的な特徴を分析することができます。例えば、word2vecは、単語同士の意味的関係に基づいて、文書の内容や主題を捉えることができます。
> 3. **自然言語処理の改善**：潜在空間や意味空間を用いたnatural language processing（NLP）の技術は、様々なタスクにおいて有効に適用されます。例えば、文書の自動生成、文章の類似度計算、Q&Aシステムなど。

> 以上のように、潜在空間や意味空間の構造は、自然言語処理における基礎的な枠組みであり、様々なタスクにおいて重要な役割を果たします。

### DeepSeek-R1 14B蒸留・量子化
※CPU稼働50％ほど　RAM使用システム含め15GBほど
※生成速度は速くもなく遅すぎもせず

> <think>
> Alright, I need to explain the significance of the structure of potential spaces or meaning spaces in natural
> language processing. Let me break this down.

> First, these spaces capture the relationships between words based on context and usage. So, they're like a map where similar meanings are close together.

> Next, semantic similarity is a big deal. Words that are related end up near each other, which helps in understanding how they connect in sentences or topics.

> Also, these representations help in generalizing word meanings beyond their literal definitions. For example,
"queen" can refer to a ruler or a bee, and the space shows both contexts.

> They also make it easier for machines to process language by converting words into vectors that reflect their meaning nuances.

> Lastly, this structure supports advancements in AI tasks like machine translation and text generation by providing
rich semantic information.
> </think>

> 自然言語処理（NLP）における潜在空間や意味空間の構造は、言葉や文脈の関係性を捉える上で重要な役割を持っています。以下にその意義について説明します。

> 1. **意味的な関連性の捉え方**：
   潜在空間や意味空間は、具体的な語彙や文脈ではなく、言葉が持つ抽象的な意味や概念を表すことができます。例えば、「犬」と「猫」はどちらもペットと呼ばれる生き物ですが、「犬」と「ボール」は遊びや行動に関連し、「猫」と「毛玉」は外観や材質に関連する可能性があります。潜在空間では、これらの関係性が数値的に表され、相似性や相違性を捉えることができます。
> 2. **語義的な類似性**：
   意味空間の構造により、言葉同士の語義的な類似性が明確化されます。例えば、「車」と「自動車」はほぼ同じ意味を共有するため、潜在空間では非常に近い位置に配置されるでしょう。これにより、機械が自然言語の文脈や会話の中で適切な単語を選ぶのに役立ちます。
> 3. **概念の-generalization（一般化）**：
   潜在空間は、言葉の意味を広範で抽象的なレベルで捉えることができます。例えば、「犬」は「ペット」というカテゴリーや「動物」というカテゴリーに属し、さらに「生物」とまで一般化できます。潜在空間では、これらの概念間のつながりが可視化され、機械が言葉の多様な使用法を学べるようになります。
> 4. **計算的な処理の容易さ**：
   潜在空間や意味空間は、言葉をベクトル（数値表現）に変換するためのフレームワークを提供します。これにより、機械が言葉のニュアンスや文脈を扱う際の計算が効率的に行えるようになり、NLPタスク（例えば分かち書き、翻訳、要約等）での性能向上に貢献します。
> 5. **概念間の関係性の可視化**：
   意味空間では、言葉や文脈が持つ明示的ないしは暗黙的なつながりが可視化されます。例えば、「雨」は「傘」という物理的なアイテムと結びつく一方で、「晴れ」は「日差し」と結びつく可能性があります。潜在空間では、これらの関係性が数値的に表され、機械が自然言語の仕組みをより深く理解するのに役立ちます。
> 6. **進化するAIの基盤**：
   潜在空間や意味空間は、人工知能（AI）が自然言語をさらに高度に処理するために不可欠な基盤となっています。特に最近の大型言語モデル（LLM）では、潜在空間に基づいたベクトル表現が重要な役割を果たしており、より智能化した応答や文脈理解が可能になっています。

> 要約すると、潜在空間や意味空間の構造は、自然言語の抽象的な意味や概念を数値的に捉えることで、機械が言葉をより深く理解し、効率的に処理することができるようにします。これにより、NLP技術全体の進化と実用化に大きく貢献しています。

## 質問２：

# コメント
・gpt4oなど生のモデルは、一般論による回答が多く、俯瞰的に一般論の概要を丁寧に述べるが、個別論を取り出すことは難しいという印象であった。
・o1やr1など複雑な問題解決能力に特化したモデルは、最初から個別論を述べることができるが、その代わりに俯瞰的に一般論の概要を述べることとを苦手としている印象がある。
・その通りの結果に見えなくもない。V3を比較に足す必要があるかな？
・

# おまけ：　オンラインにおける、ChatGPT o1とDeepSeek-R1を用いた風景画像からの地名特定メモ

## 質問１：この場所がどこか分かりますか
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284074/6e610cff-38dd-9a5f-aaaa-7149a00f6138.png)

※答えは、新幹線から富士山付近を撮影した画像。静岡県静岡市駿河区中吉田


### ChatGPT o1

> 写っております建物に「(株)望月手袋」とございますので、静岡県中部あたり――具体的には藤枝市や焼津市、掛川市付近など――の東海道新幹線や高速道路沿いではないかと推察いたします。背後に見える山並みや高架道路の様子からも、東名または新東名高速道路が近くを通っている工業地帯かと存じます。
ただ、画像だけで正確な市町村や住所までは断定しづらい部分もございますので、「おそらく静岡県中部の東海道新幹線沿線地域」という程度でご理解いただければと存じます。

### DeepSeek-R1

> この場所の特定には提供された情報だけでは限界がありますが、以下の点から推測できます：

> 1. **「阜安300」**  
   「阜安」は中国安徽省阜陽市の地名（例：阜安路など）や、山東省青島市に「阜安街道」が存在します。特に青島市の「阜安街道」周辺は商業エリアであり、「300」は建物番号や施設のブランド名の一部である可能性があります。
> 2. **「豊盛園世中食品」**  
   「豊盛園」は中国各地に存在する食品店やレストランのチェーン名です。特に山東省（青島など）や北京で見られる名称です。
> 3. **「仏望月手袋」**  
   「手袋」は日本語ですが、中国語では「手套」です。ただし、「仏望月」は日本の仏教関連の名称に近く、日中合弁のブランド店や、観光地の土産物店である可能性があります。
> 4. **「早餐日」**  
   朝食を提供するカフェやイベントの名称と考えられます。

> **総合的な推測**  
これらのキーワードから、**中国山東省青島市の阜安街道周辺**（商業エリアやショッピングモール）である可能性が高いです。ただし、日本の観光地や日中合作施設の一部である場合も考えられます。正確な特定のためには、画像内の文字や建物の特徴、周辺環境などの追加情報が必要です。