goo blog サービス終了のお知らせ 

ねおぺぶろぐ

プライバシーポリシーはdocomo社のものに準拠します

メモ49-10 BERT

2022年09月25日 | Pythonチャレンジ

自然言語処理(BERT)を用いたチャットボット

・・・
【形態素解析・質疑応答のツールを準備】
いままでjanomeを使っていたが
HuggingfaceTransformersというものを使う
インストール失敗してる

HuggingfaceのTransformersをインストールする
Transformersはかなりの数のパッケージをラップしているので
仮想環境にインストールしないとまずいらしい
やっちまったなオイラ
こちらのサイトのpip listと同じものを手動でインストールして
>pip install datasets
を再度実行したら通った 

【NLP】Hugging Faceの🤗Transformersことはじめ


【チャットボットが質疑応答するためのデータセットを準備】

SQuADをGoogle Translate APIで翻訳

本家のSQuADを日本語に訳してくださった方がいたので
そっちを使うことが出来る
日本語データセットの取り込み方
Huggingface Transformers 入門 (14) - 日本語の質問応答の学習
run_squad.pyはこの人のgithubにあるのか...
言われたとおりにやり直し
データセットを自分が取ってきたものにかえて実行
>python ./examples/legacy/question-answering/run_squad.py --model_type=bert --model_name_or_path=cl-tohoku/bert-base-japanese-whole-word-masking  --do_train  --do_eval --train_file=train.jsonl --predict_file=valid.jsonl --per_gpu_train_batch_size 12 --learning_rate 3e-5 --num_train_epochs 10 --max_seq_length 384 --doc_stride 128 --overwrite_output_dir --output_dir output/
<python>json.load()でjsonを読み込めない(jsonlinesを読み込む方法)
【python】jsonっぽいファイル「jsonl(JSON LINES)」をcsvに書き換えるまで
それでも動かない
データに何が入ってるのか疑ってみる

<チャットボットが学習して形態素解析したjson>
{"@": {"\u65e5\u672c\u8a9e": {"\u5206\u304b\u3089": 1}, "\u3053": {"\u3080\u304e": 1},...以下略
※ユニコードに変換された連想配列
u65e5→日 u672c→本 u8a9e→語
u5206→分 u304b→か u3089→ら
u3053→こ u3080→む u304e→ぎ

<自分が取ってきたデータセットのjson>
[{"start":43,"end":88,"question":"ビヨンセ は いつ から...以下略

<クイズを題材にした日本語QAデータセットのjson>
{"qid": 2, "competition": "abc_01", "timestamp": "2003/03/30", "format": "筆記", "question": "人気漫画『ドラえもん』の...以下略

意味わからんが、とりあえずは["data"]という列が存在しないんじゃないだろうか
このソースにこだわらない方がいいかもしれない
少しだけエラー箇所を見てみた
●decode.pyで出てるエラー
if end != len(s):
  #raise JSONDecodeError("Extra data", s, end)
  pass
jsonにはデータの開始位置と終了位置(end)が書き込まれてる
終了位置とデータの長さlen(s)に不整合があるとエラーになって止まってる
これをpassで流しておく

●squad.pyで出てるエラー
squadのデータは
qas_id,question_text,context_text,answer_text,start_position_character,
title,is_impossible,answersでワンセットらしい
この切り出しに特化してるので全面的に直さないといけない
面倒くさくて無理
「運転ドメインQAデータセット 」というものを
取ってきたほうがいい
GPU動いてない
これで20分近く経っても進捗がほとんど変わらない
10回も学習したらPCが発火する
このスペックのPCで機械学習は無理
------
先にGPUが使えるようにする↓
メモ49-11 GPU

仮想環境から、今までのファイルパスがそのまま使える

python ./examples/legacy/question-answering/run_squad.py --model_type=bert --model_name_or_path=cl-tohoku/bert-base-japanese-whole-word-masking --do_train --do_eval --train_file=DDQA-1.0_RC-QA_train.json --predict_file=DDQA-1.0_RC-QA_dev.json --per_gpu_train_batch_size 12 --learning_rate 3e-5 --num_train_epochs 10 --max_seq_length 384 --doc_stride 128 --overwrite_output_dir --output_dir output/

ModuleNotFoundError: No module named 'torch'

フォルダの構成はそのままみられるが、
pythonのライブラリはminicondaに依存するので
全部入れなおさないとダメだ

・・・
pip3 install torchがなぜか失敗する問題を解決した時の備忘録

ROCm で Stable Diffusion 動きます


pytorchがタイムアウトで入らないので
ここからpytorch-v1.12.1.tar.gzを持ってくる

pip installを使用せずにtar.gzファイルからPythonパッケージをインストールする方法

>pip install file://C:\Users\****\Downloads\pytorch-v1.12.1.tar.gz

WARNING: In the tar file C:\Users\****\Downloads\pytorch-v1.12.1.tar.gz the member pytorch-v1.12.1/.dockerignore is invalid: unable to resolve link inside archive

警告: tar ファイル C:\Users\****\Downloads\pytorch-v1.12.1.tar.gz のメンバー pytorch-v1.12.1/.dockerignore が無効です: アーカイブ内のリンクを解決できません

結局エラー
(directml) C:\Users\****>cd C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1

(directml) C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1>pip install .
Processing c:\users\****\downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1
  Preparing metadata (setup.py) ... done
Requirement already satisfied: typing_extensions in c:\users\****\miniconda3\envs\directml\lib\site-packages (from torch==1.12.0a0+gitunknown) (4.3.0)
Building wheels for collected packages: torch
  Building wheel for torch (setup.py) ... error
  error: subprocess-exited-with-error
    エラー: サブプロセスがエラーで終了しました

× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [28 lines of output]
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
致命的: あいまいな引数 'HEAD': 不明なリビジョンまたはパスが作業ツリーにありません。

Use '--' to separate paths from revisions, like this:
'git [...] -- [...]'
次のように、「--」を使用してパスをリビジョンから分離します。
'ギット [...]  -  [...]'

Building wheel torch-1.12.0a0+gitUnknown
Traceback (most recent call last):
File "", line 36, in
File "", line 34, in
File "C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\setup.py", line 944, in
build_deps()
File "C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\setup.py", line 405, in build_deps
cmake=cmake)
File "C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\tools\build_pytorch_libs.py", line 84, in build_caffe2
version, cmake_python_library, build_python, build_test, my_env, rerun_cmake
File "C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\tools\setup_helpers\cmake.py", line 424, in generate
self.run(args, env=my_env)
File "C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\tools\setup_helpers\cmake.py", line 175, in run
check_call(command, cwd=self.build_dir, env=env)
File "C:\Users\****\miniconda3\envs\directml\lib\subprocess.py", line 358, in check_call
retcode = call(*popenargs, **kwargs)
File "C:\Users\****\miniconda3\envs\directml\lib\subprocess.py", line 339, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Users\****\miniconda3\envs\directml\lib\subprocess.py", line 800, in __init__
restore_signals, start_new_session)
File "C:\Users\****\miniconda3\envs\directml\lib\subprocess.py", line 1207, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
-- Building version 1.12.0a0+gitUnknown
cmake -GVisual Studio 15 2017 -Ax64 -Thost=x64 -DBUILD_PYTHON=True -DBUILD_TEST=True -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\torch -DCMAKE_PREFIX_PATH=C:\Users\****\miniconda3\envs\directml\Lib\site-packages -DNUMPY_INCLUDE_DIR=C:\Users\****\miniconda3\envs\directml\lib\site-packages\numpy\core\include -DPYTHON_EXECUTABLE=C:\Users\****\miniconda3\envs\directml\python.exe -DPYTHON_INCLUDE_DIR=C:\Users\****\miniconda3\envs\directml\Include -DPYTHON_LIBRARY=C:\Users\****\miniconda3\envs\directml/libs/python37.lib -DTORCH_BUILD_VERSION=1.12.0a0+gitUnknown -DUSE_NUMPY=True C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for torch
Running setup.py clean for torch
error: subprocess-exited-with-error

× python setup.py clean did not run successfully.
│ exit code: 1
╰─> [12 lines of output]
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git [...] -- [...]'
Building wheel torch-1.12.0a0+gitUnknown
C:\Users\****\miniconda3\envs\directml\lib\site-packages\setuptools\dist.py:530: UserWarning: Normalizing '1.12.0a0+gitUnknown' to '1.12.0a0+gitunknown'
warnings.warn(tmpl.format(**locals()))
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help

error: option --all not recognized
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed cleaning build dir for torch
Failed to build torch
Installing collected packages: torch
Running setup.py install for torch ... error
error: subprocess-exited-with-error

× Running setup.py install for torch did not run successfully.
│ exit code: 1
╰─> [28 lines of output]
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git [...] -- [...]'
Building wheel torch-1.12.0a0+gitUnknown
Traceback (most recent call last):
File "", line 36, in
File "", line 34, in
File "C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\setup.py", line 944, in
build_deps()
File "C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\setup.py", line 405, in build_deps
cmake=cmake)
File "C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\tools\build_pytorch_libs.py", line 84, in build_caffe2
version, cmake_python_library, build_python, build_test, my_env, rerun_cmake
File "C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\tools\setup_helpers\cmake.py", line 424, in generate
self.run(args, env=my_env)
File "C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\tools\setup_helpers\cmake.py", line 175, in run
check_call(command, cwd=self.build_dir, env=env)
File "C:\Users\****\miniconda3\envs\directml\lib\subprocess.py", line 358, in check_call
retcode = call(*popenargs, **kwargs)
File "C:\Users\****\miniconda3\envs\directml\lib\subprocess.py", line 339, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Users\****\miniconda3\envs\directml\lib\subprocess.py", line 800, in __init__
restore_signals, start_new_session)
File "C:\Users\****\miniconda3\envs\directml\lib\subprocess.py", line 1207, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
-- Building version 1.12.0a0+gitUnknown
cmake -GVisual Studio 15 2017 -Ax64 -Thost=x64 -DBUILD_PYTHON=True -DBUILD_TEST=True -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1\torch -DCMAKE_PREFIX_PATH=C:\Users\****\miniconda3\envs\directml\Lib\site-packages -DNUMPY_INCLUDE_DIR=C:\Users\****\miniconda3\envs\directml\lib\site-packages\numpy\core\include -DPYTHON_EXECUTABLE=C:\Users\****\miniconda3\envs\directml\python.exe -DPYTHON_INCLUDE_DIR=C:\Users\****\miniconda3\envs\directml\Include -DPYTHON_LIBRARY=C:\Users\****\miniconda3\envs\directml/libs/python37.lib -DTORCH_BUILD_VERSION=1.12.0a0+gitUnknown -DUSE_NUMPY=True C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> torch

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

(directml) C:\Users\****\Downloads\pytorch-v1.12.1.tar\pytorch-v1.12.1>


エイゴワカラナイ
会社行ってくる
ネムイ



この記事についてブログを書く
« メモ49-9 配信が始まらない問題 | トップ | メモ49-11 GPU »