概要
同社は、近い将来、ChatGLMモデルをローカルで使用してみたいと考えています。サーバーにのみ 2 枚のグラフィックス カードがインストールされているため、サーバー上でのみ試用できます。CUDAドライバーなどは、前の同僚がすでにインストールしていて、グラフィックカードの認識に成功したので、スキップします。GIT README の手順に従ってすべてがうまくいき、最終的にスクリプトの実行時に次のプロンプトが表示されました。
RuntimeError: Not compiled with CUDA support
サーバーがARM(CPUはPhytium ST2500)なので。文字通り、公式にコンパイルされた PyTorch の aarch64 バージョンでは CUDA サポートが有効になりません。最初はインストールが間違っているのではないかと思い、Baidu、google、bing をチェックしたところ、他のインストール方法では conda ツールに依存する必要があることがわかり、Miniconda3、Anaconda3 などをインストールしました。 aarch64のバージョンとサーバーの互換性に問題があり、諦めて自分でコンパイルするしかありませんでした。
Miniconda3の問題
Miniconda3 will now be installed into this location:
/root/miniconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/root/miniconda3] >>>
PREFIX=/root/miniconda3
Unpacking payload ...
Miniconda3-latest-Linux-aarch64.sh:行 358: 10241 非法指令 (核心已转储)"$CONDA_EXEC" constructor --prefix "$PREFIX" --extract-conda-pkgs
Anaconda3の問題
Anaconda3 will now be installed into this location:
/root/anaconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/root/anaconda3] >>> /data1/anaconda3
PREFIX=/data1/anaconda3
Unpacking payload ...
Anaconda3-2023.03-1-Linux-aarch64.sh:行 353: 60027 非法指令 (核心已转储)"$CONDA_EXEC" constructor --prefix "$PREFIX" --extract-conda-pkgs
コンパイル手順
1. CUDA 11.8 は GCC-10 のみをサポートします。最初に GCC-10 をインストールする必要があります。Kirin バージョンのソースは 7.3 のみです。そのため、GCC-10 を自分でコンパイルするにはブログ投稿を参照してください。 2. PyTorch ソース コードをダウンロードします
。
git clone https://github.com/pytorch/pytorch.git
3. ソースコードをコンパイルしてインストールする
#因为ChatGLM在Python 3.10版本运行成功,所以用3.10来编译,具体根据自己环境调整
cd pytorch
python3.10 setup.py build
python3.10 setup.py install
Q&A
Q: GCC 7.3.0 をインストールした後、PyTorch のコンパイル時にエラーが報告されます。報告された特定のエラーを忘れました。おそらく文法上のエラーが原因です。A: 代わりに
GCC 10 を使用してください。
Q: GCC 10 を初めてコンパイルするとき、PyTorch をコンパイルするときに、次のエラーを受け取りました。
**/libgfortran.a ... which may bind externally can not be used when making a shared object; recompile with -fPIC
A: 後で、GCC 10 をコンパイルして構成スクリプトを実行するときに、CFLAGS="-fPIC" を追加します。GCC 10 を再コンパイルすると、PyTorch は正常にコンパイルされます。
注: CFLAGS を直接設定する上記のスキームは合理的ではなく、他の問題を引き起こす可能性があります (元の CFLAGS を上書きし、プログラムの最適化が不十分になるなど)。この記事では、具体的な詳細については詳しく説明しません。
Q: aarch64 プログラムで不正な命令セットの問題が発生しました。
A: 1 つのプログラムだけでなく、以前に Clickhouse (以下、CH と呼びます) が実装されたときにも問題が発生しました。根本的な原因は、異なるプラットフォームで aarch64 によってサポートされる命令セットが異なるため、aarch64 プログラムが 100% 汎用的ではない可能性があることです。
以前に CH をコンパイルしたとき、会社のローカル デスクトップ CPU は Phytium FT1500+、サーバーは Phytium FT2000+ でした。FT1500+ マシンでコンパイルされた CH プログラムは、FT2000+ サーバーに移動して実行すると不正な命令を報告しますが、すべてのプログラムが報告されるわけではありません。
参考リンク
Ubuntu18.04——gcc バージョン/エラーの解決策を切り替える: エラー – サポートされていない GNU バージョン 10 以降の gcc はサポートされていませんPytorch [C++]
で Cuda を GPU で高速化できない問題を解決しますgcc10 をコンパイルしてインストールします