2023年7月

一、创建虚拟环境

1.1 创建 exp_detect_1 的虚拟环境:

conda create -n exp_detect_1 python=3.7

或者 直接激活虚拟环境 exp_detect_1:
conda activate exp_detect_1
(注意:退出环境的命令为:#conda deactivate)

二、虚拟环境打包

1.3 打包压缩虚拟环境 exp_detect_1
go to 此目录
cd /home/liu/miniconda3/envs/
打包压缩
tar -czvf exp_detect_1.tar.gz ./exp_detect_1

三、打包上传,解压

解压 exp_detect_1.tar.gz 到 ~/miniconda3/envs 环境目录。
cd ~/miniconda3/envs
tar -xzvf exp_detect_1.tar.gz
激活 conda 虚拟环境> exp_detect_1
conda activate exp_detect_1
python xxx

OK, run the source package

四、注意事项

怎么快速迁移 “训练环境”补丁-1

一、存在的问题
在使用文档“怎么快速迁移训练环境.pdf”中存在两个问题:
1.直接拷贝虚拟环境,部分文件路径没有修改
2.cudatoolkit包没有拷贝

二、对应的解决办法如下:
1.直接拷贝虚拟环境,部分文件路径没有修改
需要修改的文件所在位置:/home/anaconda3/envs/pretrain/bin (注意不同服务器conda安装位置可能不太一样)

图片1.png

修改文件:此目录下会用到的文件例如:pip、deepspeed(根据自己实际需求)
图片2.png

修改方式:将文件首行修改为当前文件实际路径

2.cudatoolkit包没有拷贝
如果虚拟环境的cudatoolkit是用过conda install 方式安装,例如下面的方式:
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
实际上cudatoolkit的安装位置不在拷贝的虚拟环境中,而是在conda公用目录pkgs文件夹下(/home/anaconda3/pkgs/),注意:此目录下可能共存多个cudatoolkit包,通过如下方式选择拷贝哪一个。

在原主机中激活待拷贝的虚拟环境:
conda activate pretrain6
查看cudatoolkit的build id:
conda list cudatoolkit

图片3.png

到pkgs目前查找对应的cudatoolkit包:
cd /home/anaconda3/pkgs/
ls -hl|grep “cudatoolkit”
图片4.png

打包,压缩到:
zip -r cudatoolkit-11.3.1-h9edb442_10.zip cudatoolkit-11.3.1-h9edb442_10
拷贝到目标虚拟环境对应位置(/home/anaconda3/pkgs/)解压缩:
unzip cudatoolkit-11.3.1-h9edb442_10.zip

三、torch安装的两种方式和推荐方式
安装方式官方链接:
https://pytorch.org/get-started/previous-versions/#installing-previous-versions-of-pytorch
1.linux环境下两种安装方式
官方文档中有两种安装方式:
第一种是通过conda安装,例如:
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
第二种是通过pip安装,例如;
pip install torch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1

这两种安装方式的区别在于:
通过conda安装会安装cudatoolkit,而通过pip安装则不会。

2.推荐安装方式:conda install
通过conda install 安装方式会适配pytorch,torchvision,torchaudio,cudatoolkit的版本,如果版本不对应,就安装不成功。

用pip install 不能安装cudatoolkit,只能安装pytorch,torchvision,torchaudio,调用的是主机的cuda,可能存在cuda和torch不匹配问题。

可能遇见的问题

1.openssl

OpenSSL 3.0's legacy provider failed to load. This is a fatal error by default, but cryptography supports running without legacy algorithms by setting the environment variable CRYPTOGRAPHY_OPENSSL_NO_LEGACY. If you did not expect this error, you have likely made a mistake with your OpenSSL configuration. 

修改方式:
在虚拟环境下直接执行:export CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1

一、题目列表:
题目1、

二、题目
题目1、
给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段( m 、 n 都是整数, n > 1 并且 m > 1 , m <= n ),每段绳子的长度记为 k[1],...,k[m] 。请问 k[1]k[2]...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到的最大乘积是 18 。

数据范围: 2 le n le 602≤n≤60
进阶:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n)

思路:
为了解决这个问题,我们可以采用一个贪心策略,尽量将绳子剪成尽可能多的3(除了最后可能剩下1或2的情况)。这种策略基于数学上的观察:在相同的总和下,将数字拆分成更多的3(或其他大于2的数)通常能得到更大的乘积,因为乘法的增长是指数级的。

2.代码

# -*- coding:utf-8 -*-
class Solution:
    def cutRope(self, number):
        # write code here
        if number == 1:
            return 1
        if number == 2:
            return 1
        if number == 3:
            return 2
        n = number % 3
        b = number // 3
        if n == 0:
            return 3 ** b
        if n == 1:
            return 3 ** (b - 1) * 4
        if n == 2:
            return 3 ** b * 2

生成模型(Generative Model)与判别模型(Discriminative Model)在机器学习领域是两种不同类型的模型,它们之间存在着显著的差异。以下是对这两种模型区别的详细分析:

一、定义与目的

生成模型:生成模型是概率统计和机器学习中的一类重要模型,指一系列用于随机生成可观测数据的模型。在给定某些隐含参数的条件下,它能够随机生成观测数据,并给观测值和标注数据序列指定一个联合概率分布。生成模型的应用十分广泛,可以用来对不同的数据进行建模,如图像、文本、声音等。
判别模型:判别模型是一种对未知数据y与已知数据x之间关系进行建模的方法,直接对条件概率p(y|x;θ)建模。在机器学习领域,判别模型是一种基于概率理论的方法,已知输入变量x,通过构建条件概率分布P(y|x)来预测y。

二、主要区别

1、优化准则不同
生成模型:优化训练数据的联合分布概率P(X,Y)。
判别模型:优化训练数据的条件分布概率P(Y|X)。
2、对观察序列的处理不同
生成模型:将观察序列作为模型的一部分。
判别模型:将观察序列仅作为条件。
3、训练复杂度
由于需要归一化,判别模型的训练复杂度通常较高。
生成模型的训练复杂度相对较低。
4、是否支持无指导训练
生成模型支持无指导训练,即可以在没有标签数据的情况下进行训练。
判别模型通常不支持无指导训练,它依赖于标签数据来构建条件概率分布。
5、本质区别
判别模型:估计的是条件概率分布p(class|context),即给定观测数据x,模型预测目标变量y的条件概率。
生成模型:估计的是联合概率分布p(x,y),即同时考虑观测数据x和目标变量y的联合分布。
6、模型应用
生成模型:由于能够模拟数据的生成过程,因此在无监督学习任务(如聚类、异常检测)中表现较好。同时,生成模型在刻画复杂学习任务中的依赖关系方面也更加灵活。
判别模型:由于直接对条件概率建模,因此在有监督学习任务(如分类、回归)中通常能够取得更好的效果。特别是当不考虑x与y之间的联合分布时,判别模型可以更加专注于学习x到y的映射关系。
三、典型模型
生成模型:高斯混合模型(Gaussian Mixture Model, GMM)、隐马尔可夫模型(Hidden Markov Model, HMM)、朴素贝叶斯分类器(Naive Bayes Classifier)等。
判别模型:线性回归模型、线性判别分析(Linear Discriminant Analysis, LDA)、支持向量机(Support Vector Machine, SVM)、神经网络(Neural Network, NN)等。
综上所述,生成模型和判别模型在定义、优化准则、对观察序列的处理、训练复杂度、是否支持无指导训练以及模型应用等方面都存在显著的差异。选择哪种模型取决于具体的应用场景和需求。