安裝命令簡單說就是下面這一句
pip install lama-cleaner -i https://pypi.tuna.tsinghua.edu.cn/simple --verbose
這裡的網址表示使用的是清華大學的更新源,可以加快下載速度。--verbose是為了顯示更多的安裝過程資訊,這對發現安裝時錯誤的線索有幫助,不新增不影響安裝效果。
由於lama-cleaner是需要Rust語言,因此需要提前安裝Rust,以及C++的編譯工具,這個網上有很多教程,包括如何使用國內映象(例如中國科技大學)加快Rust下載速度,這裡就不重複了。
再反覆確認lama-cleaner各種安裝依賴條件都具備之後,多次安裝都會報以下錯誤:
error: `cargo rustc --lib --message-format=json-render-diagnostics --manifest-path Cargo.toml --release -v --features pyo3/extension-module --crate-type cdylib --` failed with code 101
其中具體產生錯誤的語句是
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
--> tokenizers-lib/src/models/bpe/trainer.rs:526:47
|
522 | let w = &words[*i] as *const _ as *mut _;
| -------------------------------- casting happend here
...
526 | let word: &mut Word = &mut (*w);
| ^^^^^^^^^
|
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
= note: `#[deny(invalid_reference_casting)]` on by default
在網上搜尋,發現了有一個網頁介紹瞭解決問題的辦法
https://github.com/huggingface/tokenizers/issues/1359
產生這個問題的因素,有的說是transformers、python等軟體的版本匹配問題,有的解釋說上文中的錯誤說明安裝包中mutable reference的使用是不安全的,導致了Rust安全檢查報錯,建議修改程式碼……最後看起來最簡單的處理辦法是增加以下環境變數
在Linux系統中,在終端命令列視窗輸入
export RUSTFLAGS="-A invalid_reference_casting"
在Windows系統中,可以在PowerShell的視窗中輸入
$ENV:RUSTFLAGS="-A invalid_reference_casting"
加入這個環境變數後,Rust的安全檢查會把以上的error轉變成warning,程式編譯得以繼續。
在兩個作業系統上測試,都管用(lama-cleaner啟動時還要在GitHub上下載模型,由於網路問題,可能會下載很慢)。