尝试下载 Llama2,由于众所周知的原因很多方法都不可行。现在详细介绍一下各个方法
git clone https://github.com/facebookresearch/llama.git
这个方法卡在了使用bash download.sh
这一步,所有连接都失效- 方法来自
https://hf-mirror.com/
,试图配置镜像。我尝试了其中的huggingface-cli
方法,问题出现在报错error: invalid choice: 'download'
, 随即发现只有 0.17.0+ 版本的huggingface-cli
支持download
命令。然而,我将huggingface_hub
升级到最新版本后,download
命令仍然无法使用,huggingface-cli
显示依然为huggingface_hub version: 0.16.4
。 - 试图使用 huggingface 上的
Clone this model repository
, 但需要安装 lfs。于是去寻找 linux 安装 lfs 的方法, 尝试了来自https://github.com/git-lfs/git-lfs/blob/main/INSTALLING.md
的方法,但在运行其中第一步时,卡死在Importing packagecloud gpg key...
合理怀疑又被墙了 - 最终成功的方法
>>> from huggingface_hub import snapshot_download
>>> snapshot_download(repo_id="meta-llama/Llama-2-7b-chat-hf", cache_dir="/data/llama2", use_auth_token="{YOUR_TOKEN}")
然后等待了大约20min完成下载
以上方法 4 实际上极其不稳定,在同日晚上重新尝试时传输速率便下降至不可接受的 ~100kb/s。最终解决办法可能还是让实验室开辟一条国际专线(x)
- 问题概览:在大约五六天前,我是可以通过 vscode 结合 ssh remote 插件远程登录到服务器,并且可以正常使用。然而,在最近几天却出现一直报错
The remote host may not meet VS Code Server's prerequisites for glibc and libstdc++
- 解决方案
- 首先尝试中文搜索,确实是搜索出了几条相关的答案。其中看起来最靠谱的是 https://www.cnblogs.com/fireinstone/p/16059207.html ,大概意思是服务器空间不足无法安装 vscode 服务器,然而尝试后并没有用
- 随后尝试用英文搜索,检索到了 microsoft/vscode#203375 随即解决了问题。具体来说, Microsoft 在2024/01/31 更新了 1.86.0 版本的 vscode ,导致了问题。解决方法就是
- 安装 1.85.2 版本的 vscode(只要从 https://code.visualstudio.com/updates/v1_85 下载并安装即可,原有的配置会完全覆盖,无需重新配置)
- 关闭 vscode 自动更新
- 将 ssh remote 插件回退到上一版本(即点击 Switch to pre-release Versions )
- 再贴上解决方案原文 ( by Github - house40105)
1.Download the previous version from https://code.visualstudio.com/updates/v1_85.
2.Install it directly; it will replace the new version.
3.In the Extensions section (especially for Remote-SSH, which I use for connections), click 'Switch to pre-release Versions.'
4.Restart VSCode.
These steps kept my previous VSCode settings intact. Hope the official team can fix this soon.
p.s. Dont forget to disable the automatic update setting.
- 补记:写notes 的时候发现其实中文也可以检索到解决方案 https://zhuanlan.zhihu.com/p/681066025 等等,看来是当时看着玄乎就跳过去了,以后还是得多多注意
是的,我又在尝试加载 llama2 (因为一些意外在几天前下载好的权重被我移除了)
- 这一次索性找了一个现成的 ipynb 直接照抄,但其中还是出现了一些的问题。这里把踩到的坑尽量详尽地列出来
- 我使用的代码来自 https://www.youtube.com/watch?v=AOzMbitpb00 在这个视频下有相应的 github repo 以及 colab 链接,用 Google colab 的免费 GPU 也能够跑动
- 我把代码原封不动复制到服务器上,开始运行,出现报错
key error:"llama"
我一番搜索,从 ymcui/Chinese-LLaMA-Alpaca#112 得到了一定的启发,发现是服务器上 python 版本过低导致的。那么解决办法就是使用 conda 创建一个新的虚拟环境,保证 py 版本为 3.10 (参照 issue 中解答conda create -n llama python=3.10
),随后运行,并安装相应的包即可。 - 幸运的是这种办法安装还是比较快速的?全过程耗时大约在 18 min 左右
非常非常快乐!经过来来回回折腾,我看见了 Llama2 的第一声啼哭!
inputs = tokenizer("She is", return_tensors="pt").to(device)
outputs = model.generate(**inputs, max_new_tokens=100)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
得到结果
She is the daughter of a very successful businessman. Her father is a very successful businessman and a philanthropist. She is the daughter of a very successful businessman. Her father is a very successful businessman and a philanth
- 在可以正常连接情况下,请使用官方方法:
import datasets
dataset=datasets.load_dataset("NAME_OF_DATASET")
- 否则,我尝试了多种方法,最终使用了 Google Colab + 本地 + Google Drive 结合的方式,成功将数据库文件上传到服务器端!
- 首先,新建 colab 文件,按照正常链接办法下载 dataset,随后执行
dataset.save_to_disk("/content/drive/MyDrive/data")
注意,需要保证 colab 正确挂载你的 google drive - 随后,切换到 google drive 中,下载对应的文件
- 最后,将保存在本地的文件再次上传到服务器端,使用指令
- 首先,新建 colab 文件,按照正常链接办法下载 dataset,随后执行
import datasets
dataset=datasets.load_from_disk("PATH")
完成加载
- 教程 https://www.youtube.com/watch?v=7VAI73roXaY
- 遇见的最严重的 bug: 在教程中重要一步是在本地构建一个简单的服务器,使本地的 index.html 文件可以从 localhost:8080 访问,这就涉及到了配置 nginx.config 的问题。原教程给出的答案是
http{
server {
listen 8080;
root /Users/zhizhi/Desktop/mysite;
}
}
events{
worker_connections 1024;
}
加载后会出现 403 错误,查看 error.log 知道是没有 permission 导致的。于是尝试搜索相关信息,得知需要先在 terminal 中使用 ps aux | grep nginx
查询 nginx 的用户
nobody 12681 0.0 0.0 409340192 240 ?? S 2:37PM 0:00.01 nginx: worker process
root 18995 0.0 0.0 408912160 256 ?? Ss 1:49PM 0:00.01 nginx: master process nginx
zhizhi 27483 0.0 0.0 408626880 1296 s002 S+ 2:40PM 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox nginx
随后将 user root; 这一行加入 nginx.config 就可以解决问题。然而事情依然是 403. 随后查到了一篇 CSDN,它告诉我们需要查看 nginx 文档
Specifies the connection processing method
to use. There is normally no need to specify it explicitly, because nginx will by default use the most efficient method.
Syntax: | user user [group]; |
---|---|
Default: | user nobody nobody; |
Context: | main |
aha! 由于我们并没有一个组叫 root ,也就无法找到一个叫做 root - root 的用户来授予访问权限。因此,我们需要改成 user root admin; 即可解决问题
user root admin;
http{
server {
listen 8080;
root /Users/zhizhi/Desktop/mysite;
}
}
events{
worker_connections 1024;
}
Hooray!!!