如何应对kaggle离线安装环境?
食用指南(免责声明):看完全文后再进行操作
今天想在 k a g g l e kaggle kaggle上提交一波代码,然而 p y t h o n python python依赖库无法安装,所以只能将需要的包先下载,然后再离线环境安装,然而下载过程,就tm下了一下午。没有其他原因,就是导出 r e q u i r e m e n t s . t x t requirements.txt requirements.txt,然后再下载,就他妈能有版本依赖问题。哈哈哈,我疯了。
首先我导出了整体环境:
pip freeze > requirements.txt
这个要安装的太多了,版本依赖非常难处理。然后我就想显示导出需要的部分依赖:
pip install pip-chill
pip-chill --all > requirements.txt
这个确实依赖少了,但是不可避免有冲突的问题。之后我发现 p i p pip pip在下载 w h l whl whl的时候,会自行找到 r e q u i r e m e n t s requirements requirements里的依赖
然后我一气之下,就把 r e q u i r e m e n t s . t x t requirements.txt requirements.txt给改成下面这样了。
bitsandbytes==0.45.5
peft==0.14.0
trl==0.17.0
vllm==0.7.1
下载 w h l whl whl的命令为:
pip download -r /kaggle/input/require12345/requirements.txt -d ./offline_packages
之后压缩导出离线包:
!tar -czvf offline_packages.tar.gz ./offline_packages
然后离线环境安装。然后发现需要导出的包太大了:
import os
os.chdir('/kaggle/working')
print(os.getcwd())
print(os.listdir("/kaggle/working"))
from IPython.display import FileLink
FileLink('offline_packages.tar.gz')
#下面就会有文件的下载链接,直接点击下载即可
然后上传的时候发现包太大传不上去了吧?啊哈哈哈哈哈我疯了
下面是新方法:
可以再开一个笔记本,然后把这个笔记本导入到目标笔记本中。执行下面这段代码:
!pip wheel trl
!pip wheel vllm==0.7.1
!pip wheel peft
!pip wheel bitsandbytes
就会发现在输出目录里面有一堆 w h l whl whl文件。然后回到你的笔记本,直接 A d d I n p u t Add\ Input Add Input,把你的笔记本加入进来,这个时候不用选择下面的选项,直接输入你的笔记本名字就可以了。导入进来之后使用离线安装命令:
!pip install --no-index --find-links=/path/to/your-notebook trl
!pip install --no-index --find-links=/path/to/your-notebook vllm==0.7.1
!pip install --no-index --find-links=/path/to/your-notebook peft
!pip install --no-index --find-links=/path/to/your-notebook bitsandbytes