不想在搞環(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
專門搞一下帝际,lab
比notebook
好,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
,沒有自己裝弃揽,在session
里jupyter lab
脯爪,暴露到外網(wǎng),然后就可以外網(wǎng)+密碼訪問了矿微,很方便痕慢。注意,有時候可能由于不同環(huán)境的lab
的版本不同涌矢,導致找不到正確的配置文件掖举,那就手動指定:
jupyter lab --config=/home/ubuntu/.jupyter/jupyter_notebook_config.py
如果多用戶,可以把這個配置復制幾份并修改娜庇,主要是端口塔次,起始目錄:
可以在這里放一個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
盒音,建立exchange
,queue
馅而,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
不保證可用份招,不行的話就反復折騰切揭,比如降cuda
到11.8
。
CatBoost
安裝比較簡單pip install catboost
锁摔,就能支持GPU
,略哼审。但官網(wǎng)CatBoost的batch train
的set_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ù)測試鸳慈。