初始化codna
直接激活或者创建conda环境会报错,例如root@autodl-container-6d25459816-f6e97638:~/autodl-tmp# conda activate base
CondaError: Run 'conda init' before 'conda activate'
需要先运行下面的命令来初始化conda
然后使用下面命令重新加载配置
然后最好把当前使用的终端窗口关掉,另起一个新的终端窗口来使用,接下来就可以正常使用conda命令了
安装nvitop
nvitop 是一个用于监控 NVIDIA GPU 的命令行工具。提供了一个交互式的界面,可以实时显示NVIDIA 显卡的状态和使用情况,训练时可以用来查看显存的占用情况(一般在新终端窗口中查看),使用下面命令安装
使用下面命令查看
安装LLaMA-Factory
- 首先按步骤执行下面命令,有可能执行
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git会出现连接超时,这时候可以使用科学上网的Windows使用git下载到Windows环境下(下载后是一个文件夹),然后再上传到服务器上,接下来执行剩下的两条命令即可
1 2 3 4 5 6 7 8 9
| # 可选,这个目录是服务器的数据盘,一般下载的和上传的东西都放在这里面 cd autodl-tmp/
# 创建LLaMA-Factory虚拟环境,最好选择python=3.10环境 conda create -n LLaMA-Factory python=3.10
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e ".[torch,metrics]"
|
- 使用
LLaMA Board 可视化进行微调(由 [Gradio] 驱动),先进入LLaMA-Factory的安装目录(因为里面很多依赖使用的是相对路径),然后启动可视化LLaMA-Factory面板
- 后面使用
LLaMA-Factory量化导出时要用到auto_gptq,这个包对pytorch和cuda版本有要求,有时候不同的版本会出现冲突,导致这个包安装失败,所以最好在创建虚拟环境时先把这个包装了
下载Qwen大模型
使用SDK方式进行下载,首先安装依赖包
然后,在autodl-tmp新建文件夹llm,然后新建download.py文件,在/root/autodl-tmp/llm/download.py中写入如下代码
1 2 3
| #模型下载 from modelscope import snapshot_download model_dir = snapshot_download('Qwen/Qwen2.5-7B-Instruct',cache_dir='/root/autodl-tmp/llm')
|
最后执行代码
AutoDL开启关闭学术加速
学术加速提供了一条绕过网络限制、通往国外学术资源(包括代码仓库)的链路。开启学术加速后,服务器连接目标 Git 仓库服务器的网络流量不再是直接传输,而是通过加速服务商提供的优化路径或服务器进行转发。
未开启学术加速之前,使用git clone克隆仓库大概率会失败,开启学术加速之后大部分仓库都能被成功克隆到服务器上
开启学术加速
1
| source /etc/network_turbo
|
network_turbo文件内容
1 2 3 4 5 6
| export no_proxy=localhost,127.0.0.1,modelscope.com,aliyuncs.com,tencentyun.com,wisemodel.cn export http_proxy=http://172.20.0.113:12798 && export https_proxy=http://172.20.0.113:12798 export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt echo 设置成功 echo 注意:仅限于学术用途,不承诺稳定性保证
|
关闭学术加速
1
| unset http_proxy && unset https_proxy
|
ollama相关
安装ollama
开启学术加速之后,输入如下命令
1
| curl -fsSL https://ollama.com/install.sh | sh
|
运行ollama
将hf(huggingface)模型转换为gguf
需要用llama.cpp的convert_hf_to_gguf.py脚本来转换
1 2
| git clone https://github.com/ggerganov/llama.cpp.git pip install -r llama.cpp/requirements.txt
|
执行转换
1 2 3 4 5
| # 如果不量化,保留模型的效果 python llama.cpp/convert_hf_to_gguf.py ./Meta-Llama-3-8B-Instruct --outtype f16 --verbose --outfile Meta-Llama-3-8B-Instruct-gguf.gguf # 如果需要量化(加速并有损效果),直接执行下面脚本就可以 python llama.cpp/convert_hf_to_gguf.py ./Meta-Llama-3-8B-Instruct --outtype q8_0 --verbose --outfile Meta-Llama-3-8B-Instruct-gguf_q8_0.gguf
|

启动本地的gguf模型,非互联网下载
- 创建
ModelFile文件,内容如下
1 2
| # GGUF文件路径 FROM /root/autodl-tmp/llm/Qwen/Qwen2.5-3B-Instruct-QLoRA-gguf.gguf
|
- 使用
ollama create命令创建自定义模型
1
| ollama create Qwen2.5-3B-Instruct-QLoRA --file ModeFile
|
- 使用下面命令运行模型
1
| ollama run Qwen2.5-3B-Instruct-QLoRA:latest
|
dify安装
AudoDL不支持在实时计费的实例中使用docker,而dify是基于docker构建的,所以无法在AudoDL的示例中部署dify,只能在Windows环境下使用docker desktop安装dify了

dify安装文档
Docker Compose 部署
- 克隆仓库代码
1 2
| # 假设当前最新版本为 0.15.3 git clone https://github.com/langgenius/dify.git --branch 0.15.3
|
- 进入
Dify 源代码的 Docker 目录,Windows环境下命令和Linux不太一样,但是都能进入文件夹
- 复制环境配置文件,
Windows直接进入文件夹复制改名即可
- 启动 Docker 容器,下面的命令在cmd中执行也是一样的
- 最后检查是否所有容器都正常运行
- 在浏览器打开
dify,http://localhost/install,默认用的是80端口

- 镜像和容器磁盘空间占用情况如下

安装chromadb
- 通过包管理器安装ChromaDB
通过Python代码调用ollama/vLLM的推理模型
需要先安装openai的包,根据不同的推理框架,把URL改一下就可以了。调用逻辑都是一样的,只有地址和端口还有api_key的不一致。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| from openai import OpenAI
#定义多轮对话方法 def run_chat_session(): #初始化客户端 client = OpenAI(base_url="http://localhost:11434/v1/",api_key="ollama") #初始化对话历史 chat_history = [] #启动多轮对话 while True: #获取用户输入 user_input = input("用户:") if user_input.lower()=="exit": print("退出对话") break #更新对话历史(添加用户输入) chat_history.append({"role":"user","content":user_input}) #调用模型回答 try: chat_complition = client.chat.completions.create(messages=chat_history,model="llama3.2:1b") #获取最新回答 moedl_responce = chat_complition.choices[0] print("AI:",moedl_responce.message.content) #更新对话历史(添加AI模型的回复) chat_history.append({"role":"assistant","content":moedl_responce.message.content}) except Exception as e: print("发生错误:",e) break if __name__ == '__main__': run_chat_session()
|