機器學習環(huán)境迅速搭建

不想在搞環(huán)境上浪費時間精力除呵,先去云服務器買個ubuntu 22馆蠕,帶GPU的,內(nèi)存最好100g以上昂儒。設置下復雜的密碼臀叙,刪掉默認安全組凯力,新建一個機器學習安全組猖辫,開啟如下常用端口:

ssh 22
streamlit 8xxx
jupyterlab 8888 8889
時序數(shù)據(jù)庫端口
ping端口

別忘了設置出站規(guī)則切威,all/all即可。
然后安裝miniconda给猾,去官網(wǎng)wget好一個install.sh躏啰,然后chmod +x install.sh,然后重啟終端即可耙册。

# 3.8 3.9夠用
conda create -n myenv python=3.9
conda activate myenv

以下都知道是干啥的,不贅述毫捣。

pip install pandas numpy scikit-learn seaborn matplotlib cufflinks scipy statsmodels tqdm
pip install mplfinance # 繪圖
# 多變量rolling numpy_ext
pip install clickhouse-driver

磁盤工具ncdu详拙,以及校準時間:

cd ~ # 自行下載 https://dev.yorhel.nl/ncdu
tar -zxvf ncdu-2.3-linux-x86_64.tar.gz
chmod u+x ncdu && mv ./ncdu /usr/bin

yum install ntp -y
ntpdate ntp.aliyun.com

可以加入cron

0 0 * * 7 ncdu -0o- / | gzip >/home/tom/ncdu_$(date+"%y%m%d").gz
0 0 1 * * rm -rf /home/tom/ncdu_$(date --date='-1 month' + "%y%m")*.gz
0 * * * * /usr/sbin/ntpdate ntp.aliyun.com

jupyter專門搞一下帝际,labnotebook好,lab更新后配置可能不同了饶辙,自行查閱蹲诀。

pip install jupyterlab
jupyter lab --generate-config # 生成如下py
vim ~/.jupyter/jupyter_notebook_config.py
# 舊版本
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
# 新版本
c.ServerApp.allow_remote_access = 
# 提前from jupyter_server.auth import passwd; passwd()獲得hashed pwd
c.ServerApp.password = 'hashed pwd'
c.ServerApp.notebook_dir = # 默認打開當前位置
c.ServerApp.port = 
c.ServerApp.ip = 
jupyter notebook password # 很舊的版本

然后開個tmux,沒有自己裝弃揽,在sessionjupyter lab脯爪,暴露到外網(wǎng),然后就可以外網(wǎng)+密碼訪問了矿微,很方便痕慢。注意,有時候可能由于不同環(huán)境的lab的版本不同涌矢,導致找不到正確的配置文件掖举,那就手動指定:

jupyter lab --config=/home/ubuntu/.jupyter/jupyter_notebook_config.py

如果多用戶,可以把這個配置復制幾份并修改娜庇,主要是端口塔次,起始目錄:


image.png

可以在這里放一個SimHei.ttf,這樣畫圖支持中文名秀。

~/miniconda3/envs/myenv/lib/python3.9/site-packages/matplotlib/mpl-data/fonts/ttf

再安裝一下臭名昭著但離不開的talib

wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -xzf ta-lib-0.4.0-src.tar.gz
cd ta-lib/
./configure --prefix=/usr
make
sudo make install
pip install TA-Lib

Windows下這樣安裝:

# 這里選擇版本下載
# https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib 
# pip install .\TA_Lib?0.4.24?cp39?cp39?win_amd64.whl
# pip install TA-Lib # 好像不需要這個也行

Mac下使用brew install ta-lib励负,再pip install TA-Lib

CUDA

看下系統(tǒng)版本匕得,不看也行:

lsb_release -a

看下推薦的顯卡驅(qū)動:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
ubuntu-drivers devices

看見recommended那一行继榆,就裝那個吧。

sudo apt install nvidia-driver-530

另:lspci |grep -i vga檢查型號耗跛,根據(jù)型號去https://www.nvidia.cn/Download/index.aspx?lang=cn選擇下載裕照。
裝完后看看:

nvidia-smi
nvcc --version

也能看到CUDA版本,但據(jù)說是一個運行環(huán)境调塌。還得專門安裝晋南,可以到官網(wǎng)一步步選一下。這是官網(wǎng):

https://developer.nvidia.com/cuda-downloads

然后:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.1-530.30.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.1-530.30.02-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

看看版本:

nvcc --version 
sudo apt install nvidia-cuda-toolkit # 需要安裝5G左右的包羔砾,可放棄

CK

可以看官網(wǎng):

# https://clickhouse.com/docs/zh/getting-started/install
sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754

echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \
    /etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client
# 這里會讓輸入默認密碼负间,強一點
sudo service clickhouse-server start
clickhouse-client # or "clickhouse-client --password" if you've set up a password.

可以開啟SQL管理用戶和權(quán)限:

sudo -s
cd /etc/clickhouse-server
vim users.xml
...
# 定位并修改并添加成這樣
<access_management>1</access_management>
<named_collection_control>1</named_collection_control>
<show_named_collections>1</show_named_collections>
<show_named_collections_secrets>1</show_named_collections_secrets>
# 可能是只讀的,通過chmod u+w user.xml修改

添加一個管理員賬號姜凄,不添加的話就直接用default賬號來管理:

CREATE USER clickhouse_admin IDENTIFIED BY 'asdfadsf';
GRANT ALL ON *.* TO clickhouse_admin WITH GRANT OPTION;

后面就可以用管理員賬號來添加比如一個只讀用戶:

CREATE USER read_only_user IDENTIFIED BY 'tytytytyty';
GRANT SELECT ON mydb.* TO read_only_user;

正常使用政溃,如果涉及備份恢復,使用如下:

clickhouse-client --host 內(nèi)網(wǎng)IP --password abcabc --query "SELECT * FROM olddb.oldtable FORMAT Native" > oldtable.native
clickhouse-client --password cbacba --query "INSERT INTO newdb.newtable FORMAT Native" < oldtable.native
# Native格式是CK自帶的态秧,可能速度快董虱,但文件比較大。

示例建表語句:

CREATE TABLE real.tick
(
    stockcode String,
    trade_time DateTime64(9), # 9納秒, 9微妙
    last Int64,
    volume Int64,
    turnover Int64,
    side Int64,
    change_rate Float64,
)
ENGINE = MergeTree
PARTITION BY stockcode
ORDER BY trade_time

CK的ReplacingMergeTree感覺沒啥用愤诱,因為無法及時去重云头,需要每次查詢的時候加入final。

小坑

CK的分鐘查詢是%i淫半,而不是%M
如果CK占空間太多溃槐,

sudo journalctl --vacuum-size=500M # 保留最近500M 系統(tǒng)systemd日志
journalctl -f # 查看日志,發(fā)現(xiàn)CK不停寫入
systemctl restart clickhouse-server # 日志正常

如下查詢空間科吭,也可以去掉partition查詢昏滴。

SELECT database, table, partition, formatReadableSize(sum(bytes)) AS size
FROM system.parts
WHERE active = 1
GROUP BY database, table, partition
ORDER BY sum(bytes) DESC;

MySQL

還需要數(shù)據(jù)庫來保存交易等信息。

sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
sudo mysql_secure_installation # 根據(jù)提示來对人,基本一路yes

# 登陸
sudo mysql
SELECT user,host,authentication_string,plugin FROM mysql.user WHERE user='root'; # 正常會看到auth_socket
# 修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'yourpassword';
FLUSH PRIVILEGES;
# 這樣認證方式就改成了mysql_native_password了谣殊,密碼也改了
# 退出后重新登陸
sudo mysql -u root -p

接下來修改配置:

vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 找到并修改端口
# bind-address = 0.0.0.0

保存后sudo systemctl restart mysql
平時不用root登錄操作规伐,新建一個吧蟹倾。

CREATE USER 'newuser'@'%' IDENTIFIED BY 'newpassword';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' WITH GRANT OPTION;
# 可以把'%'換成特定的IP地址,限制登錄IP

記得防火墻打開猖闪,夠玩了鲜棠。

MQ

有時候需要MQ緩沖一下tick數(shù)據(jù),先安裝erlang

https://www.erlang.org/downloads

安裝rabbitmq

choco install rabbitmq

去開始菜單培慌,直接點啟動有點問題豁陆,沒解決,于是去sbin目錄下:

rabbitmq-server.bat start

接著去管理頁面吵护,端口15672修改admin盒音,建立exchangequeue馅而,binding等等祥诽,不贅述。Ubuntu參考這個瓮恭,麻煩但可用:

# 一步步來
# https://www.rabbitmq.com/install-debian.html#apt-quick-start-cloudsmith
sudo rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user full_access s3crEt
rabbitmqctl set_user_tags full_access administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

Redis

有時候需要輕量級原子性的全局變量雄坪,Redis就很方便,避免在Windows下安裝吧屯蹦。官網(wǎng)就行:

# 當然也有綠色解壓包那種安裝维哈,但那種安裝還需要配置服務,也費事
# https://redis.io/docs/getting-started/installation/install-redis-on-linux/

GUI管理端使用:

https://github.com/qishibo/AnotherRedisDesktopManager

至于配置登澜,基本都是修改redis.conf并重啟阔挠,密碼要強大一點,端口改掉脑蠕。

PyTorch

接下來安裝PyTorch购撼,官網(wǎng)選擇:

https://pytorch.org/get-started/locally/

官網(wǎng)有時候沒有,比如cuda12,那就pip試試:

pip3 install torch torchvision torchaudio

不保證可用份招,不行的話就反復折騰切揭,比如降cuda11.8

CatBoost

安裝比較簡單pip install catboost锁摔,就能支持GPU,略哼审。但官網(wǎng)CatBoost的batch trainset_baseline感覺有點問題谐腰,修改如下:

model_list = []
for df_train in tqdm(generator):         
    batch = Pool(data=df_train.drop(columns=['label_col']),
                 label=df_train['label_col'],
                 cat_features=None,
                 embedding_features=None,) 
    model = CatBoostClassifier(n_estimators=hyper_params['n_estimators'],
                               thread_count=8,
                               task_type='GPU',
                               devices='0:1',
                               learning_rate=hyper_params['learning_rate'],
                               depth=hyper_params['depth'],
                               l2_leaf_reg=hyper_params['l2_leaf_reg'],
                               loss_function=loss_function,
                               auto_class_weights='SqrtBalanced', # SqrtBalanced(保守), Balanced(激進)
                               grow_policy='SymmetricTree', # 'SymmetricTree', 'Depthwise', 'Lossguide'
                              )
    
    if len(model_list) > 0:
        # 多分類必須明確 prediction_type='RawFormulaVal', 二分類一定要用  'Class'!
        batch.set_baseline(model_list[-1].predict(batch,
                                                  prediction_type='Class'))
    model.fit(X=batch,
              logging_level='Silent')

LGBM

方法1

LGBM的GPU版本安裝稍微啰嗦:

git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
mkdir build
cd build
cmake -DUSE_GPU=1 ..
# if you have installed NVIDIA CUDA to a customized location, you should specify paths to OpenCL headers and library like the following:
# cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ ..
make -j4

第一步可能各種卡,掉線:

cd LightGBM
git submodule update --init --recursive

安裝pip:

pip install lightgbm
# 官網(wǎng)還推薦conda
conda install -c conda-forge lightgbm

會對numpy進行版本修改涩盾,可能影響到talib等包的使用十气,有點煩人。

方法2

于是換了一個安裝方法春霍,參考這里:

# 聽說GPU版本比CUDA版本穩(wěn)定
https://github.com/Microsoft/LightGBM/tree/master/python-package#build-gpu-version

首先看看幾個依賴要求:

# 要求>=2.28
ldd --version
# cmake --version
sudo snap install cmake --classic # 這個可以
https://cmake.org/download/ # 官網(wǎng)有點啰嗦砸西,自行嘗試
# 安裝libboost  system filesystem
sudo apt-get update
sudo apt-get install libboost-all-dev

好了之后,安裝:

pip install lightgbm --install-option=--gpu
# 或者指定dir
pip install lightgbm --install-option=--gpu --install-option="--opencl-include-dir=/usr/local/cuda/include/" --install-option="--opencl-library=/usr/local/cuda/lib64/libOpenCL.so"

安裝完成后址儒,在import的時候報錯'GLIBCXX_3.4.30' not found芹枷,主要嘗試了這里的方法:

https://stackoverflow.com/questions/72540359/glibcxx-3-4-30-not-found-for-librosa-in-conda-virtual-environment-after-tryin

# GLIBCXX版本低 不管用
sudo apt-get update
sudo apt-get upgrade gcc

# Ubuntu 22.04不管用
conda install -c conda-forge gcc=12.1.0 

# 不管用
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.30
strings /home/ubuntu/miniconda3/envs/ts/bin/../lib/libstdc++.so.6 | grep GLIBCXX_3.4.30
export LD_LIBRARY_PATH=/home/ubuntu/miniconda3/envs/ts/bin/../lib:$LD_LIBRARY_PATH

# 管用了
conda install -c anaconda scipy==1.9.1 

具體原因是個迷,但我不想折騰了莲趣。

有了這三夠玩的了

繼續(xù)測試鸳慈。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市喧伞,隨后出現(xiàn)的幾起案子走芋,更是在濱河造成了極大的恐慌,老刑警劉巖潘鲫,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翁逞,死亡現(xiàn)場離奇詭異,居然都是意外死亡溉仑,警方通過查閱死者的電腦和手機挖函,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來彼念,“玉大人挪圾,你說我怎么就攤上這事≈鹕常” “怎么了哲思?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吩案。 經(jīng)常有香客問我棚赔,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任靠益,我火速辦了婚禮丧肴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘胧后。我一直安慰自己芋浮,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布壳快。 她就那樣靜靜地躺著纸巷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪眶痰。 梳的紋絲不亂的頭發(fā)上瘤旨,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音竖伯,去河邊找鬼存哲。 笑死,一個胖子當著我的面吹牛七婴,可吹牛的內(nèi)容都是我干的祟偷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼本姥,長吁一口氣:“原來是場噩夢啊……” “哼肩袍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起婚惫,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤氛赐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后先舷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艰管,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年蒋川,在試婚紗的時候發(fā)現(xiàn)自己被綠了牲芋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡捺球,死狀恐怖缸浦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情氮兵,我是刑警寧澤裂逐,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站泣栈,受9級特大地震影響卜高,放射性物質(zhì)發(fā)生泄漏弥姻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一掺涛、第九天 我趴在偏房一處隱蔽的房頂上張望庭敦。 院中可真熱鬧,春花似錦薪缆、人聲如沸秧廉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽定血。三九已至,卻和暖如春诞外,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灾票。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工峡谊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刊苍。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓既们,卻偏偏與公主長得像,于是被迫代替她去往敵國和親正什。 傳聞我的和親對象是個殘疾皇子啥纸,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容