Llamaは電気羊駝の夢を見るか？

## ラマを飼う話
先日メタからリリースほやほやのLlama3についてのお話です。
GPTや、Geminiの対抗としてLlamaが面白そうなので、使ってみたブログになります。

## Llamaって？
メタが開発しているLLMで、他の先行クローズドLLMとは異なり、オープンソースであることが特徴です。2024年4月19日（米国時間）に最新バージョンであるLlama3が公開されました。
llama.cppというツールを通せば、非力なコンピュータでもLLMが動かせるということで最近話題になっています。
またllama.cppを簡易に動作させることのできるOllamaというアプリケーションも公開されており、LLMが個人用コンピュータで動作するような夢時代に突入してきています。

今回はザッカーバーグに感謝しながらLlamaを飼育してみます。

## つかいかた
先述のとおり、Llama３単体では気軽に動作させることはできません。簡便に動作させるための実行環境が必要となります。その実行環境を整えてくれるのが「Ollama」というアプリケーションです。

尚、今回Llama３を動かしてみるコンピュータのスペックは以下の通りです。
- MacBook Air M2 2022
- メモリ16GB

### Ollamaのダウンロード
[こちら](https://ollama.com)からダウンロードします。

### Ollamaを起動
かわいいラマさんがお出迎えしてくれるので、画面の指示にしたがってインストールします。

<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801871/4c4597bc-437e-ede3-1daf-52273fb73fd0.png">

### ターミナルからLlama3を起動
```terminal:ターミナル
$ ollama run llama3
```
案内画面ではllama2と出ていますが、3を入れます。
少し容量が大きいので、気長に待ちましょう。

 ### 対話開始
```:Ollama
>>> Send a message (/? for help)
```
と出たら準備完了です。
/?と入力すると、コマンド一覧が見れます
```:Ollama
>>> /?
Available Commands:
  /set            Set session variables
  /show           Show model information
  /load <model>   Load a session or model
  /save <model>   Save your current session
  /clear          Clear session context
  /bye            Exit
  /?, /help       Help for a command
  /? shortcuts    Help for keyboard shortcuts

Use """ to begin a multi-line message.
```

/byeと打てば対話モードが終了するようです。
何か聞いてみます。
```:Ollama
>>> Do You Dream of Electric Llama?
```
```:Ollama
A classic reference!

Yes, I do dream of electric llama... just kidding! However, I must admit that I'm intrigued by 
the idea of an electric llama. Who knows, maybe in some alternate dimension, there's a llama 
with a love for rock music and electricity!

But seriously, the phrase "Do You Dream of Electric Sheep?" is actually from Philip K. Dick's 
science fiction novel "Do Androids Dream of Electric Sheep?", which was later adapted into the 
movie Blade Runner (1982). The book explores themes of humanity, artificial intelligence, and 
what it means to be alive.

So, while I may not have a dream about electric llamas, I do appreciate the nod to Philip K. 
Dick's iconic work!
```

> _クラシックな参考文献ですね！
はい、電気ラマの夢を見ることはありますよ…なんて冗談です！
でも、電気ラマのアイデアには興味をそそられます。もしかしたら、別の次元にはロック音楽と電気が大好きなラマがいるかもしれませんね！
でも、真面目な話をすると、「Do You Dream of Electric Sheep?」というフレーズはフィリップ・K・ディックのSF小説『アンドロイドは電気羊の夢を見るか？』から来ています。この小説は後に映画『ブレードランナー』（1982年）として映画化されました。本書は、人間性、人工知能、そして生きることの意味についてのテーマを探求しています。
ですから、私は電気ラマの夢を見るわけではありませんが、フィリップ・K・ディックの象徴的な作品へのオマージュには感謝します！_
（翻訳：GPT-4o）
    

## 第一印象
### スピード感はない
（私の環境では）応対のスピード感がややもっさりとしています。ChatGPTに慣れてしまっていると少しもどかしい印象を受けました。
### ロマンはある
一般的な家庭用コンピュータで8BのLLMが走っていることを考えると、未来を感じます。一家にラマ1頭の時代は近いのかもしれません。
### 日本語は難しい
日本語での応対を強制することも可能ですが、翻訳の不自然な箇所が若干見受けられます。応対のスピードも下がるので、英語でのやりとりが良さそうです。
尚、りんなで有名なrinna株式会社がLlama3に日本語継続学習を行った「[Llama 3 Youko 8B](https://rinna.co.jp/news/2024/05/20240507.html)」を2024年5月7日に公開しています。

## もっとつかってみる
コマンドラインでぽちぽちしていても面白くないので、VSCodeからLlama3の力を借りてみます。

### VSCodeの拡張機能からContinueをインストール
<img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801871/492b4556-fdaf-f2ac-8130-421d4c4e10ab.png">


### Fully localで初期設定を行う
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3801871/9ad16398-0ca4-a2a5-5376-ea98ef9a4b67.png">


### オートコンプリート用のモデルを追加する
対話式のモデルの他に、オートコンプリート用のモデルが別途必要になります。

```terminal:ターミナル
$ ollama run starcoder2:3b
```
starcoder2はNVIDIAも主導している、CodeLLM（プログラミング特化のLLM）です。
LlamaにもCodeLlamaなるCodeLLMがありますので、お好みで選択してください。
[こちら](https://ollama.com/library)にあるものはターミナル上からrunすれば簡単に導入できます。

### 情報収集の拒否
歯車ボタンから設定ファイルを開き、以下のように設定。
```json:config.json
"allowAnonymousTelemetry": false
```

## 第二印象
### 精度・応答性
Tab補完（オートコンプリート）についてはCopilotと比べると正直イマイチなところがあります。（当たり前なんですが…笑）少し触った感じだとCodeLlamaの補完の仕方が程よい印象を受けたので、個人的にはCodeLlamaを使用していきたいです。
Chat（対話式）については速度が遅いものの、まあまあな使い心地でした。ただし、日本語で質問しても応答は英語になります。
### 考えられるメリットや今後の可能性
- **無料**（非常に重要）であること
- ローカル環境で動作できること
- LLMを簡単にアプリ内に組み込んでいけること
- ゲーミングPCなどのハイスペック機であれば、より快適になること…？（要検証）