adaptive_rag / KAGGLE_CHECK_OLLAMA.py
lanny xu
resolve conflict
e9e8684
raw
history blame
6.43 kB
"""
Kaggle Ollama 备份与加载 - 快速验证脚本
这个脚本帮助你验证 Ollama 和模型的位置,确保备份方案正确
在 Kaggle Notebook 中运行此脚本,检查环境
"""
import os
import subprocess
import shutil
print("="*70)
print("🔍 Kaggle Ollama 环境检查")
print("="*70)
# ==================== 检查 Ollama 安装 ====================
print("\n📍 步骤 1: 检查 Ollama 安装位置")
ollama_bin = shutil.which('ollama')
if ollama_bin:
print(f" ✅ Ollama 已安装")
print(f" 📂 位置: {ollama_bin}")
# 检查文件信息
file_size = os.path.getsize(ollama_bin) / (1024**2)
print(f" 📊 大小: {file_size:.2f} MB")
# 检查版本
version_result = subprocess.run(['ollama', '--version'], capture_output=True, text=True)
if version_result.returncode == 0:
print(f" 📌 版本: {version_result.stdout.strip()}")
else:
print(" ❌ Ollama 未安装")
print(" 💡 请先运行安装:")
print(" !curl -fsSL https://ollama.com/install.sh | sh")
# ==================== 检查 Ollama 服务 ====================
print("\n📍 步骤 2: 检查 Ollama 服务状态")
ps_check = subprocess.run(['pgrep', '-f', 'ollama serve'], capture_output=True)
if ps_check.returncode == 0:
print(" ✅ Ollama 服务正在运行")
else:
print(" ⚠️ Ollama 服务未运行")
print(" 💡 请启动服务:")
print(" import subprocess, time")
print(" subprocess.Popen(['ollama', 'serve'])")
print(" time.sleep(15)")
# ==================== 检查模型位置 ====================
print("\n📍 步骤 3: 检查模型存储位置")
possible_dirs = [
"~/.ollama",
"/root/.ollama",
"~/.ollama/models",
"/root/.ollama/models"
]
found_dirs = []
for dir_path in possible_dirs:
expanded_path = os.path.expanduser(dir_path)
if os.path.exists(expanded_path):
# 计算目录大小
total_size = 0
file_count = 0
for dirpath, dirnames, filenames in os.walk(expanded_path):
for filename in filenames:
fp = os.path.join(dirpath, filename)
if os.path.exists(fp):
total_size += os.path.getsize(fp)
file_count += 1
size_gb = total_size / (1024**3)
print(f"\n ✅ 找到: {expanded_path}")
print(f" 📊 大小: {size_gb:.2f} GB")
print(f" 📁 文件数: {file_count}")
# 显示目录结构
print(f" 📂 内容:")
for item in os.listdir(expanded_path)[:10]: # 只显示前10个
item_path = os.path.join(expanded_path, item)
if os.path.isdir(item_path):
print(f" • {item}/ (目录)")
else:
size = os.path.getsize(item_path) / (1024**2)
print(f" • {item} ({size:.2f} MB)")
found_dirs.append((expanded_path, size_gb))
if not found_dirs:
print("\n ❌ 未找到模型目录")
print(" 💡 请先下载模型:")
print(" !ollama pull mistral")
# ==================== 检查已下载的模型 ====================
print("\n📍 步骤 4: 检查已下载的模型")
if ollama_bin and ps_check.returncode == 0:
list_result = subprocess.run(['ollama', 'list'], capture_output=True, text=True)
if list_result.returncode == 0:
print("\n 已下载的模型:")
print(" " + "-"*60)
print(" " + list_result.stdout)
else:
print(" ⚠️ 无法获取模型列表")
print(" 请确保 Ollama 服务正在运行")
else:
print(" ⚠️ Ollama 服务未运行,无法检查模型")
# ==================== 推荐备份方案 ====================
print("\n" + "="*70)
print("📋 推荐备份方案")
print("="*70)
if found_dirs:
# 选择最大的目录(通常是完整的 .ollama 目录)
backup_dir = max(found_dirs, key=lambda x: x[1])[0]
backup_size = max(found_dirs, key=lambda x: x[1])[1]
print(f"\n推荐备份目录: {backup_dir}")
print(f"预计压缩包大小: ~{backup_size:.2f} GB")
print(f"\n💾 备份步骤:")
print(f"""
1. 使用 KAGGLE_SAVE_OLLAMA.py 脚本
exec(open('KAGGLE_SAVE_OLLAMA.py').read())
2. 脚本会自动:
• 找到 Ollama 二进制文件: {ollama_bin if ollama_bin else '未找到'}
• 打包模型目录: {backup_dir}
• 生成压缩包: /kaggle/working/ollama_backup/
3. 下载并创建 Dataset:
• 在 Notebook 右侧 Output 下载 ollama_backup 目录
• 访问 https://www.kaggle.com/datasets 创建 Dataset
• 上传 ollama 和 ollama_models.tar.gz
4. 后续使用:
• 添加 Dataset 到 Notebook
• 运行 KAGGLE_LOAD_OLLAMA.py
• 40-50秒完成加载!
""")
# 估算上传时间
upload_time_min = int(backup_size * 2) # 假设 2 分钟/GB
upload_time_max = int(backup_size * 5) # 假设 5 分钟/GB
print(f"⏱️ 预计时间:")
print(f" • 压缩时间: {int(backup_size * 0.5)}-{int(backup_size)} 分钟")
print(f" • 下载时间: {int(backup_size * 1)}-{int(backup_size * 3)} 分钟(取决于网络)")
print(f" • 上传时间: {upload_time_min}-{upload_time_max} 分钟(取决于网络)")
print(f" • 首次总计: ~{int(backup_size * 4)}-{int(backup_size * 10)} 分钟(一次性)")
print(f" • 后续加载: 40-50 秒(每次)")
else:
print("\n⚠️ 未找到模型目录,无法提供备份方案")
print("请先安装 Ollama 并下载模型")
# ==================== 环境摘要 ====================
print("\n" + "="*70)
print("📊 环境摘要")
print("="*70)
print(f"""
Ollama 安装: {'✅ 是' if ollama_bin else '❌ 否'}
Ollama 服务: {'✅ 运行中' if ps_check.returncode == 0 else '❌ 未运行'}
模型目录: {'✅ 找到 ' + str(len(found_dirs)) + ' 个' if found_dirs else '❌ 未找到'}
已下载模型: {'✅ 有' if ollama_bin and ps_check.returncode == 0 else '⚠️ 无法确认'}
准备就绪: {'✅ 可以开始备份' if (ollama_bin and found_dirs) else '❌ 请先完成安装和模型下载'}
""")
if ollama_bin and found_dirs:
print("💡 下一步: 运行 KAGGLE_SAVE_OLLAMA.py 开始备份")
else:
print("💡 下一步: 完成 Ollama 安装和模型下载")
print("\n" + "="*70)