美文网首页
机器学习环境迅速搭建

机器学习环境迅速搭建

作者: 赤色要塞满了 | 来源:发表于2023-05-09 12:01 被阅读0次

    不想在搞环境上浪费时间精力,先去云服务器买个ubuntu 22,带GPU的,内存最好100g以上。设置下复杂的密码,删掉默认安全组,新建一个机器学习安全组,开启如下常用端口:

    ssh 22
    streamlit 8xxx
    jupyterlab 8888 8889
    时序数据库端口
    ping端口
    

    别忘了设置出站规则,all/all即可。
    然后安装miniconda,去官网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
    

    jupyter专门搞一下,labnotebook好。

    pip install jupyterlab
    jupyter lab --generate-config
    vim ~/.jupyter/jupyter_notebook_config.py
    c.NotebookApp.ip = '0.0.0.0'
    c.NotebookApp.open_browser = False
    jupyter notebook password
    

    然后开个tmux,没有自己装,在sessionjupyter lab,暴露到外网,然后就可以外网+密码访问了,很方便。注意,有时候可能由于不同环境的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
    

    CUDA

    看下系统版本,不看也行:

    lsb_release -a
    

    看下推荐的显卡驱动:

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

    看见recommended那一行,就装那个吧。

    sudo apt install nvidia-driver-530
    

    装完后看看:

    nvidia-smi
    

    也能看到CUDA版本,但据说是一个运行环境。还得专门安装,可以到官网一步步选一下。这是官网:

    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

    可以看官网:

    # 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管理用户和权限:

    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 内网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自带的,可能速度快,但文件比较大。
    

    PyTorch

    接下来安装PyTorch,官网选择:

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

    官网有时候没有,比如cuda12,那就pip试试:

    pip3 install torch torchvision torchaudio
    

    不保证可用,不行的话就反复折腾,比如降cuda11.8

    CatBoost

    安装比较简单pip install catboost,就能支持GPU,略。但官网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
    # 官网还推荐conda
    conda install -c conda-forge lightgbm
    

    会对numpy进行版本修改,可能影响到talib等包的使用,有点烦人。

    方法2

    于是换了一个安装方法,参考这里:

    # 听说GPU版本比CUDA版本稳定
    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/ # 官网有点啰嗦,自行尝试
    # 安装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 
    

    具体原因是个迷,但我不想折腾了。

    有了这三够玩的了

    继续测试。

    相关文章

      网友评论

          本文标题:机器学习环境迅速搭建

          本文链接:https://www.haomeiwen.com/subject/nsursdtx.html