- 偶然在看到了這個項目,感覺很厲害,於是就折騰了下,跑了一跑
- 項目地址:https://github.com/Morizeyao/GPT2-Chinese
- 如果Github下載太慢的可以用這個代下載:https://toolwa.com/github/
環境准備
1.pytorch 的安裝
由情況選擇版本安裝,安裝CPU版本梢簡單
# 安裝時官方源下載比較慢,要換源
conda install pytorch torchvision cpuonly -c pytorch
# 如果cnda裝不了 選擇pip的方式進行安裝
# pip也要指定源
pip install torch==1.5.1+cpu torchvision==0.6.1+cpu -f https://download.pytorch.org/whl/torch_stable.html
Anacoda 換源
onda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
# 設置搜索時顯示通道地址
conda config --set show_channel_urls yes
使用后在用戶-username-.condarc
可進行編輯
如果要建立自己的詞表的話,要安裝tensorflow,版本要對上,否則可能會出錯
# Current stable release for CPU and GPU
pip install transformers==2.1.1
安裝成后,執行以下驗證安裝效果
python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
#報錯
DLL load failed: 找不到指定模塊
Failed to load the native TensorFlow runtime.
安裝VC++2019就能解決問題了
如要在cmd或GitBash中使用conda 命令要配置Anaconda的環境變量,
conda env list #列出已有環境
conda info -e #列出已有環境
conda create -n env_name python=version #創建一個新的虛擬環境
conda activate env_name #激活並進入虛擬環境
conda deactivate #退出虛擬環境 進入標准環境中
conda env remove -n env_name #刪除一個已有的虛擬環境
conda install package_name #下載安裝包
conda install package_name=version #下載包同時指定版本
conda remove package_name #刪除包
conda list #列出已經安裝的包
codna search package_name #查找包的版本信息
codna install package_name -n env_name #管理指定虛擬環境的包
pip freeze > d:\superset.txt #導出本虛擬環境
pip install -r d:\superset.txt #導入虛擬環境
conda env export --file d:\superset.yml #導出虛擬環境
conda env create -f d:\superset.yml #導入虛擬環境
conda create -n superset2 --clone superset #虛擬環境備份
來源:Anaconda與windows cmd環境的使用與基本命令
如此在GitBash中可能還是會遇到一個問題,Anaconda虛擬環境激活不了,報錯:
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
可以執行以下命令后就能激活環境了:
# 激活環境
source activate
# 退出環境
source deactivate
來源:Git Bash使用conda命令activate env
開始訓練
剛開始遇到的問題就是編碼的問題,我的語料是放在train.json中是UTF8的編碼
如果要執行.sh
的腳本要使用Gitbash
如果樣本的量比較小的時候,可以自己生成詞庫,減少亂碼的可能。
同樣遇到了這個問題,是詞庫導致的,默認使用的是cache/vocab_small.txt,里面13317個單詞,包括各種符號,當樣本量小的時候,結果就會有很多亂碼。可以根據自己的data,生成vocab文件(當然這樣的話,單詞來源受限於樣本了) 步驟如下:
# 生成vocab_user.txt文件
cd cache/
bash make_vocab.sh
# 根據vocab_user.txt內單詞個數,調整配置文件config/model_config_small.json的vocab_size字段
# train
python train.py --raw --min_length 4 --tokenizer_path cache/vocab_user.txt
# generate
python ./generate.py --length=50 --nsamples=4 --prefix=你好 --fast_pattern --tokenizer_path cache/vocab_user.txt
注:自己的機器,特別是只要CPU跑的話,即使語料很小,也要很久,推薦有能力的朋友在Colab上跑比較方便,基本環境都有,訓練的速度也會快很多。