地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

ollamaでdeepseek-coder-v2をためしてみる。

DeepSeek-Coder-V2はMoEのコードモデル。その性能はGPT4-Turboに並ぶとのこと。ollamaでためせるようなので、試して見ました。

試した感想。

・自然な日本語で回答する。

・基本的な要約タスクや質問には答える。質問の回答は間違いも多い。

・計算タスクはしっかり回答できた。

・日本語で指示していい感じのコードも書いてくれた。

単にコードを書く時だけじゃなくて、code interpreterとで動かして試して見たい。

 

 

github.com

 

コードモデルですが、まずは日本語どれくらい分かってくれるのか簡単にテスト。

日本で二番目に高い山を検討して答えてください。

 日本で二番目に高い山は、北アルプスの一員である聞かれ山(オーバーランド・フェルミナール)とされています。この山の標高は約3190メートルで、日本国内では富士山が一番高く、二番目に高い山として聞かれ山が挙げられます。

日本語も自然です。欲しい気もしますが、もちろん不正解。

 

以下を簡単にまとめてください。

ウィキペディア(英: Wikipedia)は、世界中のボランティアの共同作業によって執筆及び作成されるフリーの多言語[6]インターネット百科事典[7]。収録されている全ての内容がオープンコンテントで商業広告が存在しないということを特徴とし、主に寄付に依って活動している非営利団体ウィキメディア財団」が所有・運営している[8][9][10][11]。「ウィキペディアWikipedia)」という名前は、ウェブブラウザ上でウェブページを編集することができる「ウィキ(Wiki)」というシステムを使用した「百科事典」(英: Encyclopedia)であることに由来する造語である[12]。設立者の1人であるラリー・サンガーにより命名された[13][14]。

 ウィキペディアWikipedia)は、世界中のボランティアが共同作業して執筆および制作される無料の多言語インターネット百科事典です。全ての内容がオープンコンテントで、商業広告は存在しません。このプラットフォームは非営利団体ウィキメディア財団」によって所有・運営されています。名称は、ウェブページを編集可能なウィキシステムを用いた百科事典であることに由来する造語であり、設立者の一人であるラリー・サンガーにより命名されました。

wikipediaより引用

要約は自然です。十分な性能ですね。

 

1+1*2+3/2+2^10を計算してください。計算が終わったら検算をしてください。最後に最終的な計算経過と結果を答えてください。

 まず、数学の基本ルールである演算子の優先順位(PEMDAS/BODMAS規則)に従って計算を行います。この規則は括弧(かっこ)、指数(exponents)、乗法(multiplication)、除法(division)、加法(addition)、減法(subtraction)の順に計算を行うことを意味します。

では、1+1*2+3/2+2^10を計算していきましょう:

1. 最初に指数演算(この場合は2^10)が行われます。
   \[
   2^{10} = 1024
   \]

2. 次に乗法と除法が行われます。ただし、この場合は乗法演算子が先に来るので、1*2を最初に計算します。
   \[
   1 \times 2 = 2
   \]
   除法の3/2を次に計算します。
   \[
   3 / 2 = 1.5
   \]

3. これで、加法と減法だけが残ります。
   \[
   1 + 2 + 1.5 + 1024
   \]

4. 最後に全ての項を足し合わせます。
   \[
   1 + 2 + 1.5 + 1024 = 1028.5
   \]

検算:
- 手順通りに計算した結果は、1+1*2+3/2+2^10 = 1028.5です。

最終的な計算経過と結果をまとめると:
\[
1 + 1 \times 2 + 3 / 2 + 2^{10} = 1 + 2 + 1.5 + 1024 = 1028.5
\]

日本語もばっちり。適切な答えですよね。

 

1+1*2+3/2+2^10+log2 を計算するpythonコードを作成してください。

 以下は、指定された数式を計算するPythonコードです。このコードでは、数学的な演算子の優先順位に従って計算が行われます。

```python
import math

# 数式を評価するためのPythonコード
result = 1 + 1 * 2 + 3 / 2 + 2 ** 10 + math.log2(2)

print(result)
```

このコードでは、以下の点に注意してください:
- `1 * 2` が最初に計算される。
- `/` と `*` は同じ優先順位なので、左から右に評価される。
- `**` 演算子(累乗)が優先的に計算される。
- `math.log2(2)` は底が2の対数を計算する。

このコードを実行すると、指定された数式が評価され、その結果が出力されます。

このモデルにとっては、こっちの答えの方が楽勝でしょうか。

 

そこで、時系列予測のコードを書かせてみます。

以下は、NVIDIA株価とS&P指数を用いて将来1年間のNVIDIA株価を予測するPythonコード例です。コード内にコメントを追加し、各ステップの目的を説明します。

# 必要なライブラリをインストールします
import yfinance as yf
import pandas as pd
from prophet import Prophet
import plotly.graph_objs as go

# NVIDIAの株価データを取得します
nvidia = yf.Ticker("NVDA")
nvidia_history = nvidia.history(period="max")

# S&P 500指数のデータを取得します
sp500 = yf.Ticker("SPY")
sp500_history = sp500.history(period="max")

# NVIDIAの株価データをプロット用に準備します
nvidia_df = pd.DataFrame(nvidia_history['Close'])
nvidia_df.reset_index(inplace=True)
nvidia_df.rename(columns={'Date': 'ds', 'Close': 'y'}, inplace=True)

# S&P 500指数を外生変数として用いるためにデータを準備します
sp500_df = pd.DataFrame(sp500_history['Close'])
sp500_df.reset_index(inplace=True)
sp500_df.rename(columns={'Date': 'ds', 'Close': 'y'}, inplace=True)

# Prophetモデルを作成し、NVIDIAの株価とS&P 500指数を用いて学習します
model = Prophet()
model.add_regressor('sp500', prior_scale=0.1)
model.fit(nvidia_df)

# 将来1年間の予測データを作成します
future = model.make_future_dataframe(periods=252, freq='D')
future['sp500'] = sp500_history['Close'].iloc[-252:].values

# 予測を実行します
forecast = model.predict(future)

# NVIDIAの株価と予測値をプロットします
fig = go.Figure()

fig.add_trace(go.Scatter(x=nvidia_df['ds'], y=nvidia_df['y'], mode='lines', name='Actual'))
fig.add_trace(go.Scatter(x=forecast['ds'], y=forecast['yhat'], mode='lines', name='Forecast'))

fig.update_layout(title='NVIDIA Stock Price Prediction with S&P 500 Index as Exogenous Variable',
                  xaxis_title='Date',
                  yaxis_title='Stock Price')

# グラフをnotebook上に表示します
fig.show()

このコードは以下の手順で進行しています: 1. yfinanceを使ってNVIDIAS&P 500指数の株価データを取得します。 2. Prophetモデルを作成し、NVIDIAの株価データを用いて学習させます。 3. S&P 500指数を外生変数としてモデルに追加します。 4. 将来1年間の予測データを作成し、プロット用のグラフを作成します。 5. plotlyを使ってグラフをnotebook上に表示します。

このコードは基本的な例であり、実際の使用ではデータの前処理やモデルのチューニングが必要になる場合があります。

このままではエラーがあるため動きません。が、簡単な指示でここまで書ければ、楽になります。エラー部を訂正すればしっかり動きました。少し試しただけれも感覚的にはGPT3.5turbo以上はあります。GPT4-Turboと肩を並べるという評価結果というのですから、Code Interpreterとの組み合わせも楽しそうです。

 

gist.github.com