概述
公司近期想嘗試本地用下ChatGLM模型,只有服務(wù)器安裝了兩張顯卡,故而只能在服務(wù)器做嘗試。CUDA驅(qū)動(dòng)啥的,之前的同事已經(jīng)安裝完畢,并且成功識(shí)別出顯卡,顧略去。按照GIT README步驟開(kāi)搞,一切順利,最后在運(yùn)行腳本的時(shí)候收到如下提示
RuntimeError: Not compiled with CUDA support
因?yàn)榉?wù)器是ARM的(CPU是Phytium ST2500)。字面意思,官方編譯aarch64版本的PyTorch并沒(méi)有開(kāi)啟CUDA支持。初步懷疑自己安裝的不對(duì),一通百度、google、bing,發(fā)現(xiàn)其他安裝方法都得依賴(lài)conda這個(gè)工具,然后安裝Miniconda3,Anaconda3啥的,一頓操作,發(fā)現(xiàn)他們aarch64的版本和服務(wù)器都存在兼容性的問(wèn)題,無(wú)奈只能放棄,自我編譯。
Miniconda3問(wèn)題
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 非法指令 (核心已轉(zhuǎn)儲(chǔ))"$CONDA_EXEC" constructor --prefix "$PREFIX" --extract-conda-pkgs
Anaconda3問(wèn)題
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 非法指令 (核心已轉(zhuǎn)儲(chǔ))"$CONDA_EXEC" constructor --prefix "$PREFIX" --extract-conda-pkgs
編譯步驟
1.CUDA 11.8只支持到GCC-10,需要先安裝GCC-10,麒麟版本源只有7.3,故而參照博文自己編譯GCC-10
2.下載PyTorch源碼
git clone https://github.com/pytorch/pytorch.git
3.編譯源碼并安裝
#因?yàn)镃hatGLM在Python 3.10版本運(yùn)行成功,所以用3.10來(lái)編譯,具體根據(jù)自己環(huán)境調(diào)整
cd pytorch
python3.10 setup.py build
python3.10 setup.py install
Q&A
Q:安裝GCC 7.3.0,編譯PyTorch的時(shí)候會(huì)報(bào)錯(cuò),具體報(bào)啥錯(cuò)忘記了,大概是語(yǔ)法錯(cuò)誤之類(lèi)
A:改用GCC 10
Q: 第一次編譯GCC 10的時(shí)候,在編譯PyTorch的時(shí)候,收到以下錯(cuò)誤
**/libgfortran.a ... which may bind externally can not be used when making a shared object; recompile with -fPIC
A:后面在編譯GCC 10 執(zhí)行configure腳本的時(shí)候,加上CFLAGS=“-fPIC”,重新編譯GCC 10后,PyTorch編譯成功。
注意:上面直接設(shè)置CFLAGS的方案應(yīng)該不是合理,可能會(huì)帶來(lái)其他問(wèn)題(如覆蓋原本的CFLAGS導(dǎo)致程序優(yōu)化不夠好之類(lèi)的),具體細(xì)節(jié)本文不考慮深入討論。
Q:關(guān)于aarch64 程序遇到非法指令集的問(wèn)題
A:不僅僅一個(gè)程序遇到過(guò),之前在整Clickhouse(以下簡(jiǎn)稱(chēng)CH)的時(shí)候,也遇到過(guò)。根源應(yīng)該是不同平臺(tái)的aarch64支持的指令集有差異,所以aarch64的程序不一定百分百通用。
之前編譯CH的時(shí)候,公司本地臺(tái)式機(jī)CPU是Phytium FT1500+,服務(wù)器是Phytium FT2000+,F(xiàn)T1500+機(jī)子編譯的CH程序,挪到FT2000+服務(wù)器上面運(yùn)行就會(huì)報(bào)非法指令,但并不是所有程序。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-623886.html
參考鏈接
Ubuntu18.04——切換gcc版本 / 報(bào)錯(cuò)解決: error – unsupported GNU version gcc later than 10 are not supported
解決Pytorch中Cuda無(wú)法GPU加速問(wèn)題
【C++】編譯安裝 gcc10文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-623886.html
到了這里,關(guān)于ARM架構(gòu)下銀河麒麟V10系統(tǒng)基于CUDA11.8編譯PyTorch的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!