AI开发必备神器:Anaconda和Jupyter Notebook

286 阅读10分钟

Anaconda简介

定义:Anaconda是一个集成的Python发行版,专为数据科学、机器学习和AI开发而设计。它包含了常用的Python库、包管理工具(Conda)和常用数据科学工具(如:Jupyter等开发工具)。

在机器学习和AI开发中使用的原因

  • 环境管理便捷:可以通过Conda轻松创建和管理虚拟环境,为不同的项目设置独立的环境,避免Python依赖冲突。
  • 内置丰富资源:自带了众多常用的AI库,无需手动安装,节省了大量时间和精力。这使得开发者能够快速搭建起工作环境,立即开始项目开发。

预装的科学计算库

包含 250+ 个流行的数据科学包:

  • 数据处理: pandas, NumPy
  • 可视化: Matplotlib, Seaborn
  • 机器学习: scikit-learn, TensorFlow, PyTorch
  • 科学计算: SciPy, Jupyter

图形化工具

  • Anaconda Navigator - 图形界面管理环境和应用
  • Jupyter Notebook/Lab - 交互式编程环境
  • Spyder - 科学Python开发环境
  • RStudio - R语言开发环境

一、Conda简介

Conda是一个开源的软件包管理系统和环境管理系统。它最初是为Python程序创建的,但现在已经可以打包和分发其他软件,适用于Linux、macOS和Windows系统。 以下是关于conda的详细信息:

主要功能

  • 包管理:可以快速安装、运行和更新包及其依赖项,类似于Node.js的npm或Python的pip,但功能更强大,能更好地处理依赖关系。
  • 环境管理:能够轻松地在计算机上创建、保存、加载和切换环境,使得在同一台机器上管理多个软件包版本成为可能,这对于需要不同版本的Python或特定依赖项的项目非常有用。

与pip的区别

  • 包管理范围:conda不仅可以管理Python包,还可以管理其他语言的包;而pip主要用于管理Python包。
  • 环境隔离方式:conda本身可以创建和管理独立的环境,而pip一般要与虚拟环境(如:venv)结合使用来实现类似的隔离效果。
  • 依赖冲突解决:conda能够解决包之间的依赖关系冲突,确保安装兼容的包;pip在安装包时如果存在依赖冲突,可能需要手动解决。

venv 是 Python 官方内置的用于创建虚拟环境的工具。

常用 Conda 命令示例

功能命令说明
创建环境conda create -n 环境名 python=3.10创建一个名为“环境名”的新环境,并指定Python版本为3.10
激活环境conda activate 环境名进入(使用)某个环境(Windows和macOS/Linux命令相同)
退出环境conda deactivate退出当前环境,回到基础环境
列出所有环境conda env listconda info -e查看已创建的所有环境
安装包conda install numpy 或 pip install numpy在当前激活的环境中安装包(优先使用conda)
列出已安装包conda list查看当前环境中已安装的包
删除环境conda env remove -n 环境名删除一个不再需要的环境
导出环境conda env export > environment.yml将当前环境的配置导出到文件,便于分享和复现

二、Jupyter Notebook简介

定义:Jupyter Notebook是一个基于Web的交互式开发环境,支持Python代码编写、调试、运行以及数据可视化。它被广泛应用于AI研究、数据分析和机器学习模型训练。

在机器学习和AI开发中使用的原因

  • 交互式执行代码:支持分块执行代码,便于调试和数据分析。在机器学习和AI开发中,经常需要对代码进行反复调试和修改,Jupyter Notebook的这种特性可以让开发者快速查看代码执行结果,及时调整代码逻辑。
  • 文档与代码结合:可以在Notebook中添加Markdown文档,方便记录研究过程、注释代码功能和撰写项目报告。对于机器学习和AI项目,这种文档与代码相结合的方式非常有利于知识的整理和分享。
  • 与Anaconda完美兼容:Anaconda内置Jupyter Notebook,开箱即用,两者结合可以为机器学习和AI开发提供一个高效、便捷的工作环境。

Jupyter Lab 是 Jupyter Notebook 的下一代产品功能超集

  • Jupyter Notebook 是开创者,提供了一个简单直接的文档式交互界面。
  • Jupyter Lab 是进化版,提供了一个模块化、集成化的开发环境

jupyter内核相关指令

查看已注册内核 只显示手动注册的内核,nb_conda_kernels模块自动检测到的不会显示

jupyter kernelspec list

删除内核

jupyter kernelspec remove myenv

查看内核详细信息

jupyter kernelspec list --json

三、conda环境与jupyter内核绑定

  • 激活conda环境:使用命令conda activate <环境名称>
  • 下载内核conda install ipykernel
  • 内核和环境匹配python -m ipykernel install --user --name <内核名称> --display-name <内核展示名称>

命令分解

命令含义
python当前已激活的 Python 解释器(通常是你想注册的虚拟环境中的 Python)
-m ipykernel以模块方式运行 ipykernel 包
installipykernel 模块的子命令,表示安装一个内核
--user将内核安装到当前用户的目录下,不需要管理员权限
--name <内核名称>内核名称,建议与环境名称一致(可自定义)
--display-name <内核展示名称>jupyter中显示的内核名称(可自定义)

架构关系 image.png


四、实践操作

下载Anaconda

官网下载地址:www.anaconda.com/download/su…

清华源下载地址:mirrors.tuna.tsinghua.edu.cn/anaconda/ar…

清华源是国内镜像地址,在国内下载会更快一些。

验证是否安装成功

  • 使用conda --versionconda -V验证Conda是否安装成功。
  • 使用python --versionpython -V验证Python是否安装成功。
  • 使用jupyter notebook --versionjupyter notebook -V验证Jupyter Notebook是否安装成功。
  • 使用jupyter-lab --versionjupyter-lab -V验证Jupyter Lab是否安装成功。

设置环境变量

如果提示以上命令不存在,也要检验一下环境变量是否配置正确。

常规环境变量路径

C:\Users\你的用户名\Anaconda3              # 基础位置
C:\Users\你的用户名\Anaconda3\Scripts      # 直接命令
C:\Users\你的用户名\Anaconda3\Library\bin  # 运行时依赖

我是安装在D盘ProgramData中的,以下是我的环境变量路径

D:\ProgramData\anaconda3
D:\ProgramData\anaconda3\Scripts
D:\ProgramData\anaconda3\Library\bin

设置镜像仓库

conda安装需要的Python包非常方便,但是官方服务器在国外,下载龟速,国内清华大学提供了Anaconda的镜像仓库,我们把源改为清华大学镜像源

方法一:命令行设置,如下:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ 
conda config --set show_channel_urls yes # 安装包时显示频道URL

方法二:直接修改配置文件

找到用户目录下的.condarc文件,内容改为如下内容即可

ssl_verify: true 
channels: – https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ – defaults
show_channel_urls: true # 安装包时显示频道URL

conda 和 pip 搭配使用

  • conda能自动处理依赖冲突问题,所以安装依赖时优先使用conda命令。但是有时conda资源可能没有对应的依赖,这时就需要使用pip命令安装了。
  • conda默认渠道没有依赖包,而 conda-forge 是一个社区维护的软件源,更新通常更及时,包版本也更丰富。

使用conda-forge渠道的方式

  • 明确指定 conda-forge 渠道: 在安装命令中加上 -c conda-forge,告诉 Conda 优先从这个渠道搜索包。

    bash
    conda install xxx -c conda-forge
    
  • 将 conda-forge 设为优先渠道(推荐) : 为了避免每次安装都要指定渠道,可以将其添加到您的渠道列表并设为最高优先级。

    bash
    conda config --add channels conda-forge
    conda config --set channel_priority strict
    

使用Conda创建虚拟环境

创建虚拟环境

创建一个名为myenv且指定Python版本为3.10的虚拟环境

语法conda create -n <环境名称> [选项]

conda create -n myenv python=3.10

切换(激活)虚拟环境并下载绑定jupyter内核

首页安装或切换命令行工具后需要先使用conda init命令初始化,以便于能切换正常切换环境。

切换(激活)虚拟环境,激活后命令行提示符会显示当前环境名称,表示已切换到该环境。

语法conda activate <环境名称>

conda activate myenv

下载内核并为conda环境注册内核

# 下载内核
conda install ipykernel 

为conda环境注册jupyter内核(当前环境已切换至myenv中)

常规情况下,以下命令中的<内核名称>建议与conda的环境名一致。不过我们为了分析conda环境名 和 jupyter内核名之间的关系,接下来我们会特意使用不同的名称。

语法python -m ipykernel install --user --name <内核名称> --display-name <内核展示名称>

# 建议写法
python -m ipykernel install --user --name myenv --display-name "Python 3.10 (My Env)"

# 我们以该命令为例分析两个名称之间的关系
python -m ipykernel install --user --name myenv-kernel --display-name "Python 3.10 (My Env Kernel)"

查看conda环境列表 和 Jupyter内核列表

image.png

Jupyter Notebook中的内核列表如下图 image.png

通过以上两个图片的环境名称myenv、内核名称myenv-kernel,以及Jupyter Notebook中展示的内核名称Python 3.10 (My Env Kernel),就很好理解命令python -m ipykernel install --user --name myenv-kernel --display-name "Python 3.10 (My Env Kernel)"中的三个名称的意义了。

隐藏多久内核

有些朋友可能也发现了,Jupyter Notebook中展示的内核列表中还有Python [conda env:base]Python [conda env:myenv]

Python [conda env:base]是默认内核,而Python [conda env:myenv]则是nb_conda_kernels自动检测出来的内核。 它会自动检测所有已经安装的conda环境,并将符合条件的虚拟环境显示为可用的kernel。虚拟环境需要满足的条件是:必须安装了ipykernel,并且不是隐藏环境(即名称不能以.开头)。

卸载nb_conda_kernels包,这样就不会自动显示所有符合条件的conda环境了。注意这个包是在base环境下的,要在base环境卸载。

# 切换到base环境
conda activate base

#卸载nb_conda_kernels包
conda remove nb_conda_kernels

重启Jupyter Notebook后,内核列表如下图。Python [conda env:myenv]内核已经去掉了。 image.png

启动Jupyter NotebookJupyter Lab

在项目目录中启动cmd,然后在命令行界面使用以下命令启动Jupyter NotebookJupyter Lab

启动Jupyter Notebook

jupyter notebook

image.png

启动Jupyter Lab

jupyter lab

image.png

Jupyter Notebook编辑页面,

image.png

AI算力云平台

平台名称平台类型核心功能/服务目标用户计费方式
AutoDL算力租赁平台主打高性价比的GPU算力租赁,提供丰富的预置环境镜像,开箱即用-2-3AI开发者、学生、科研人员-2GPU按小时计费,定价透明-2
Azure全功能云平台提供从虚拟机、数据库到一站式AI服务(如Azure OpenAI)  的全栈云服务-2企业开发团队、需要构建完整AI应用的用户-2按不同服务定价,新用户有免费额度-2
百度EasyDL自动化AI平台零门槛模型训练,用户只需上传数据,平台自动完成模型训练和部署,无需编码-1-6-7无AI算法基础、希望快速定制模型的企业和个人-1-6通常按API调用次数或资源包收费。
算家云算力租赁平台提供GPU算力租赁,强调新硬件和流畅体验,租用方式人性化,文档教程详细-3-4AI学习者、模型训练者-3提供按量计费等多种灵活方式-3-4
OpenBayes算力与社区平台提供算力资源,并建立共享与合作的社区生态系统-5AI开发者、科研人员-5未明确提及,通常为按使用计费。

参考文献: