基于sshfs远程下载HuggingFace模型文件到本机 2023-09-26 17:27:43 最近Huggingface被墙了,只能借助代理服务器去下载模型了。 由于代理服务器仅有20G磁盘空间,大模型文件装不下,因此没办法在代理服务器上下载后,在拷贝到GPU服务器。 git clone的方式配置代理不生效,走git-lfs配置代理也是卡在`Downloading LFS objects`,相当折腾,于是想到一种不走代理直接通过代理服务器将仓库clone到GPU服务器的思路。 ## 核心思路 1. 把两台服务器的ssh免密登录相互做了,便于后续操作 2. 将GPU服务器的ssh端口映射到代理服务器(GPU服务器没有公网IP当可以访问到代理服务器),映射过去后,代理服务器就可以访问GPU服务器了 3. 在代理服务器上通过sshfs将GPU服务器的模型目录挂载到本机 4. 在代理服务器上的映射目录内,直接执行git clone下载大模型,搞定 ## 关键命令 GPU服务器上执行: ``` ssh -CfNgqP -o ServerAliveInterval=30 -R 17122:localhost:17122 proxy ``` 代理服务器上执行(提前安装fuse及sshfs): ``` # 创建目录仅需执行一次 mkdir ~/LLMs # 将GPU服务器的目录挂载到本机 sshfs 171:/data0/LLMs ~/LLMs # 后面就是常规操作了,没啥可说的 cd ~/LLMs git clone https://huggingface.co/TheBloke/OpenBuddy-Llama2-70b-v10.1-AWQ ``` ## 附 ### 直接使用git走代理clone的方式 git-lfs -c http.proxy=http://localhost:18888 clone https://huggingface.co/TheBloke/OpenBuddy-Llama2-70b-v10.1-AWQ ### 使用curl直接下载模型文件 curl -x localhost:18888 -L -O https://huggingface.co/TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF/resolve/main/mixtral-8x7b-instruct-v0.1.Q4_K_M.gguf ### 走Huggingface代理镜像服务下载 编辑脚本vi hf-mirror-download.sh,内容如下: ``` MODEL_ID="$1" if [[ "$rmt" =~ "$MODEL_ID" ]];then echo $rmt; else export GIT_LFS_SKIP_SMUDGE=1 git clone https://hf-mirror.com/$MODEL_ID cd ${MODEL_ID##*/} fi HF_ENDPOINT="https://hf-mirror.com" files=$(git lfs ls-files | awk '($2=="-"){print $3}') s=0 if [ $# -ge 2 ];then s=$2;fi n=0 for file in $files; do if [ $n -ge $s ]; then echo wget -O $file "$HF_ENDPOINT/$MODEL_ID/resolve/main/$file" wget -O $file "$HF_ENDPOINT/$MODEL_ID/resolve/main/$file" fi let n=n+1 done ``` 下载示例: sh hf-mirror-download.sh OpenBuddy/openbuddy-deepseekcoder-6b-v16.1-32k 非特殊说明,均为原创,原创文章,未经允许谢绝转载。 原始链接:基于sshfs远程下载HuggingFace模型文件到本机 赏 Prev 关于追焦的一些经验技巧 Next 基于Vagrant+Ansible批量管理虚拟机