【Meta AI】汎用科学言語モデルGALACTICAのインストール

【Meta AI】汎用科学言語モデルGALACTICAのインストール 機械学習

「科学的な論文や記事に強い言語モデルを探している」
「無料のコンテンツ生成ツールを探している」

このような場合には、GALACTICAがオススメです。
この記事では、GALACTICAをインストールする方法を解説しています。

本記事の内容

  • GALACTICAとは?
  • GALACTICAのシステム要件
  • GALACTICAのインストール
  • GALACTICAの動作確認

それでは、上記に沿って解説していきます。

GALACTICAとは?

GALACTICAは、汎用科学言語モデルのことです。
科学的なテキストとデータの大規模なコーパスで学習されています。

入力された事柄に関する、記事や論文のリンクを結果として返します。
科学についての記事や講義ノートを作成する上で役に立つでしょうね。
本格的な論文を書く場合には、その精度はどうなのでしょうかね?

また、GALACTICAは質問にも回答を返してくれるということです。

ただし、現在はデモで動作を確認できません。
アクセスが集中して、デモを停止しているのかもしれません。

GALACTICAをインストールしたら、自由に質疑応答ができるようになります。
※モデルは「facebook/galactica-6.7b」を利用

答えになっているようで、なっていないような気はしますが・・・

複数の回答を提示するパターンもあります。
なかなか、高度なことをしてくれます。

普通に面白いので、是非ともいろんな質問をGALACTICAに投げかけてみてください。

以上、GALACTICAについて説明しました。
次は、GALACTICAのシステム要件を説明します。

GALACTICAのシステム要件

現時点(2022年11月)でのGALACTICAの最新バージョンは、1.0.1となります。
この最新バージョンは、2022年11月17日にリリースされています。

GALACTICAのシステム要件では、以下がポイントになります。

  • OS
  • Pythonバージョン
  • PyTorch

それぞれを以下で説明します。

OS

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

基本的には、OSは問わないと言えます。

Pythonバージョン

サポート対象となるPythonのバージョンは、以下。

  • Python 3.7
  • Python 3.8
  • Python 3.9

上記がsetup.pyに記述されています。
同時に、次のような記述もあります。

これらを見る限り、Python 3.7以降であればOKと言えるでしょう。
現状(2022年11月)のPython公式開発サイクルでも、次のようになっています。

バージョンリリース日サポート期限
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月
3.112022年10月25日2027年10月

Python公式開発サイクル的にも、Python 3.7以降が推奨となりますね。
通常、このような状況であればPython 3.10でも問題ないと思いがちです。

Pythonは上位互換が強く働きますからね。
しかし、GALACTICAにおいてその考えはアウトです。

Python 3.10では、インストールに失敗します。
そのため、サポートされているPythonのバージョンを用意しましょう。

PyTorch

GALACTICAは、PyTorchをベースに動いています。

GPUを利用できるなら、是非ともGPU版PyTorchを利用しましょう。

以上、GALACTICAのシステム要件を説明しました。
次は、GALACTICAのインストールを説明します。

GALACTICAのインストール

GALACTICAのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。

検証は、次のバージョンのPythonで行います。

> python -V 
Python 3.9.13

そして、システム要件としてはPyTorchをインストール済という状況です。
このような状況において、GALACTICAのインストールを進めます。

まずは、現状のインストール済みパッケージを確認しておきます。
PyTorchは、各自の環境でバージョンは異なるでしょう。

> pip list 
Package            Version 
------------------ ------------ 
certifi            2022.9.24 
charset-normalizer 2.1.1 
idna               3.4 
numpy              1.23.4 
Pillow             9.3.0 
pip                22.3.1 
requests           2.28.1 
setuptools         65.5.1 
torch              1.13.0+cu117 
torchaudio         0.13.0+cu117 
torchvision        0.14.0+cu117 
typing_extensions  4.4.0 
urllib3            1.26.12 
wheel              0.37.1

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、GALACTICAのインストールです。
GALACTICAのインストールは、以下のコマンドとなります。

pip install galai

GALACTICAのインストールは、結構長い時間がかかります。
終了したら、どんなパッケージがインストールされたのかを確認します。

> pip list                                       
Package               Version 
--------------------- ------------ 
absl-py               1.3.0 
accelerate            0.14.0 
aiohttp               3.8.3 
aiosignal             1.3.1 
altair                4.2.0 
astor                 0.8.1 
async-timeout         4.0.2 
attrs                 22.1.0 
base58                2.1.1 
bert-score            0.3.12 
black                 21.12b0 
blinker               1.5 
blis                  0.7.9 
Brotli                1.0.9 
cachetools            5.2.0 
catalogue             2.0.8 
certifi               2022.9.24 
charset-normalizer    2.1.1 
click                 7.1.2 
colorama              0.4.6 
contourpy             1.0.6 
cycler                0.11.0 
cymem                 2.0.7 
dacite                1.6.0 
datasets              2.7.0 
decorator             5.1.1 
dill                  0.3.6 
entrypoints           0.4 
et-xmlfile            1.1.0 
exceptiongroup        1.0.4 
filelock              3.8.0 
flake8                5.0.4 
fonttools             4.38.0 
frozenlist            1.3.3 
fsspec                2022.11.0 
galai                 1.0.1 
gitdb                 4.0.9 
GitPython             3.1.29 
huggingface-hub       0.11.0 
idna                  3.4 
inflate64             0.3.1 
iniconfig             1.1.1 
isort                 5.8.0 
Jinja2                3.1.2 
joblib                1.2.0 
jsonschema            4.17.0 
kiwisolver            1.4.4 
langcodes             3.3.0 
MarkupSafe            2.1.1 
matplotlib            3.6.2 
mccabe                0.7.0 
more-itertools        9.0.0 
multidict             6.0.2 
multiprocess          0.70.14 
multivolumefile       0.2.3 
murmurhash            1.0.9 
mypy-extensions       0.4.3 
nltk                  3.7 
numpy                 1.23.4 
openai                0.25.0 
openpyxl              3.0.10 
packaging             21.3 
pandas                1.5.1 
pandas-stubs          1.5.1.221024 
parallelformers       1.2.7 
pathspec              0.10.2 
pathy                 0.8.1 
Pillow                9.3.0 
pip                   22.3.1 
platformdirs          2.5.4 
plotly                5.11.0 
pluggy                1.0.0 
preshed               3.0.8 
prompt-toolkit        3.0.32 
promptsource          0.2.3 
protobuf              4.21.9 
psutil                5.9.4 
py7zr                 0.20.2 
pyarrow               10.0.0 
pybcj                 1.0.1 
pycodestyle           2.9.1 
pycryptodomex         3.15.0 
pydantic              1.8.2 
pydeck                0.8.0 
pyflakes              2.5.0 
pyparsing             3.0.9 
pyppmd                1.0.0 
pyrsistent            0.19.2 
pytest                7.2.0 
python-dateutil       2.8.2 
pytz                  2022.6 
pytz-deprecation-shim 0.1.0.post0 
PyYAML                6.0 
pyzstd                0.15.3 
regex                 2022.10.31 
requests              2.28.1 
responses             0.18.0 
rouge-score           0.1.2 
setuptools            65.5.1 
six                   1.16.0 
smart-open            5.2.1 
smmap                 5.0.0 
spacy                 3.3.0 
spacy-legacy          3.0.10 
spacy-loggers         1.0.3 
srsly                 2.4.5 
streamlit             0.82.0 
tokenizers            0.13.2 
toml                  0.10.2 
tomli                 1.2.3 
toolz                 0.12.0 
torch                 1.13.0+cu117 
torchaudio            0.13.0+cu117 
torchvision           0.14.0+cu117 
tornado               6.2 
tqdm                  4.64.1 
transformers          4.24.0 
typer                 0.4.2 
types-pytz            2022.6.0.1 
typing_extensions     4.4.0 
tzdata                2022.6 
tzlocal               4.2 
urllib3               1.26.12 
validators            0.20.0 
wasabi                0.10.1 
watchdog              2.1.9 
wcwidth               0.2.5 
wheel                 0.37.1 
xxhash                3.1.0 
yarl                  1.8.1

GALACTICAが数多くのパッケージに依存していることを確認できます。
だからこそ、Pythonのバージョンの制約が厳しくなるのでしょう。

以上、GALACTICAのインストールを説明しました。
次は、GALACTICAの動作確認を説明します。

GALACTICAの動作確認

GALACTICAの動作確認をするには、モデルのダウンロードが必要です。
ただ、それらを手動でダウンロードする必要はありません。

GALACTICAでは、Hugging Face上にあるモデルを自動的にダウンロードします。
そのモデルに関しては、5個が公開されています。

SizeParametersファイル容量
mini125 M500MB
base1.3 B5.26GB
standard6.7 B27.44GB
large30 B59.96GB
huge120 B487.49GB

standard以降では、ファイルが分割されています。
かなり大きなデータになりますからね。。。

今回は、「base」を用いて動作検証を行います。
この場合には、次のコードを利用することになります。

import torch
from transformers import AutoTokenizer, OPTForCausalLM

tokenizer = AutoTokenizer.from_pretrained("facebook/galactica-1.3b")
model = OPTForCausalLM.from_pretrained("facebook/galactica-1.3b", device_map="auto", torch_dtype=torch.float16)

input_text = "Why is the sky blue?"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to("cuda")

outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))

もちろん、初回実行時にはモデルのダウンロードが開始されます。

コードを実行した結果は、以下となります。

Why is the sky blue?

The sky is blue because the light from the sun is blue

それらしい回答が提示されましたね。
このように表示されれば、GALACTICAは動作していると言えます。

以上、GALACTICAの動作確認を説明しました。

タイトルとURLをコピーしました