Установка офлайн и облачных ИИ Ollama в свои папки программы и моделей, например, на другом диске

Пошаговая инструкция, как установить Ollama в нестандартный каталог, перенести хранилище моделей на другой диск и настроить интеграцию с Genspark через переменную окружения OLLAMA_MODELS.


Краткий FAQ

Как установить Ollama в нужную директорию?
Используйте параметр /DIR при запуске установщика.

Как задать другой путь для моделей?
После установки задайте системную переменную окружения OLLAMA_MODELS.

Как проверить, что переменная применена системно?
Через PowerShell командой:
[System.Environment]::GetEnvironmentVariable('OLLAMA_MODELS','Machine')

Как остановить старые процессы Ollama?
Get-Process ollama -ErrorAction SilentlyContinue | Stop-Process -Force

Как указать путь моделей в интерфейсе Genspark?
В настройках по адресу http://localhost:40000 выберите ту же директорию, что и в переменной OLLAMA_MODELS.


Пошаговая инструкция по установке Ollama

  1. Скачайте установщик Ollama
    Перейдите на официальный сайт Ollama и сохраните установочный файл, например в папку D:\Downloads\.
  2. Установите Ollama в C:\Program Files
    Запустите PowerShell от имени администратора и выполните:d:\Downloads\OllamaSetup.exe /DIR="C:\Program Files\Ollama"
  3. Остановите старые процессы OllamaGet-Process ollama -ErrorAction SilentlyContinue | Stop-Process -Force
  4. Укажите папку моделей на другом диске
    Например, если хотите хранить модели на диске D:[System.Environment]::SetEnvironmentVariable('OLLAMA_MODELS','D:\ai\models','Machine')
  5. Проверьте, что переменная установлена системно[System.Environment]::GetEnvironmentVariable('OLLAMA_MODELS','Machine') Если выводит D:\ai\models, настройка применена успешно.
  6. Перезапустите Ollama или систему
    Это необходимо, чтобы новая переменная окружения вступила в силу.

Настройка Genspark для работы с Ollama

  1. Откройте http://localhost:40000
  2. Нажмите кнопку «Настройка» → «Местоположение модели».
  3. Укажите путь к папке, где хранятся модели (например, D:\ai\models).
  4. Убедитесь, что этот путь совпадает с переменной OLLAMA_MODELS.
    Так Ollama и Genspark будут использовать одно и то же хранилище, что обеспечит стабильную работу локальных LLM-моделей и синхронизацию скачанных весов.

Чек-лист перед запуском

  •  Ollama установлена в C:\Program Files\Ollama
  •  Старые процессы Ollama остановлены
  •  Переменная OLLAMA_MODELS установлена и проверена
  •  В Genspark указан тот же путь к моделям
  •  Папка с моделями (D:\ai\models) доступна и содержит файлы

Итоги

  • Установку Ollama можно выполнить с указанием произвольной директории через ключ /DIR=
  • Хранилище моделей регулируется переменной окружения OLLAMA_MODELS.
  • Для совместимости с Genspark используйте один и тот же путь к папке моделей.
  • Перед изменениями завершайте все запущенные процессы Ollama.

Оценка ПК: авто-отчёт и рекомендации по моделям

Ниже — скрипт PowerShell, который:

  • собирает сведения о процессоре, ОЗУ, дисках (свободное место), видеокартах и драйверах;
  • пытается получить данные CUDA через nvidia-smi (если установлено);
  • оценивает класс доступных локальных моделей (диапазоны параметров) для CPU/GPU;
  • создаёт два файла отчёта:
    • D:\ai\llm-hw-report.json
    • D:\ai\llm-hw-report.md

Как запустить

  1. Откройте PowerShell от имени администратора.
  2. Вставьте код ниже и выполните.
  3. Откройте готовый D:\ai\llm-hw-report.md — там уже будут рекомендации по выбору размеров моделей.

При необходимости поменяйте путь сохранения, например на C:\Users\Public\.

# === llm-hw-audit.ps1 ===
# Собирает системные характеристики и формирует рекомендации по размерам локальных моделей (CPU/GPU).
# Вывод: D:\ai\llm-hw-report.json и D:\ai\llm-hw-report.md

# --- Подготовка путей
$OutDir = "D:\ai"
New-Item -ItemType Directory -Path $OutDir -Force | Out-Null
$jsonPath = Join-Path $OutDir "llm-hw-report.json"
$mdPath   = Join-Path $OutDir "llm-hw-report.md"

# --- Системная информация
$cs      = Get-CimInstance Win32_ComputerSystem
$os      = Get-CimInstance Win32_OperatingSystem
$cpu     = Get-CimInstance Win32_Processor
$gpus    = Get-CimInstance Win32_VideoController | Sort-Object -Property Name
$disks   = Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3"

# --- Память
$totalRAMBytes  = [int64]$cs.TotalPhysicalMemory
$totalRAMGB     = [math]::Round($totalRAMBytes / 1GB, 1)

# --- Диски
$diskInfo = $disks | ForEach-Object {
    [PSCustomObject]@{
        DeviceID      = $_.DeviceID
        FileSystem    = $_.FileSystem
        SizeGB        = if ($_.Size) { [math]::Round($_.Size / 1GB, 1) } else { $null }
        FreeGB        = if ($_.FreeSpace) { [math]::Round($_.FreeSpace / 1GB, 1) } else { $null }
        FreePercent   = if ($_.Size -and $_.FreeSpace) { [math]::Round(100 * ($_.FreeSpace / $_.Size), 1) } else { $null }
    }
}

# --- GPU / VRAM
$gpuInfo = @()
foreach ($g in $gpus) {
    $vramGB = $null
    if ($g.AdapterRAM) { $vramGB = [math]::Round($g.AdapterRAM / 1GB, 1) }
    $gpuInfo += [PSCustomObject]@{
        Name          = $g.Name
        DriverVersion = $g.DriverVersion
        VRAM_GB       = $vramGB
        VideoModeDesc = $g.VideoModeDescription
        PNPDeviceID   = $g.PNPDeviceID
    }
}

# --- CUDA / nvidia-smi (если есть)
$cuda = $null
try {
    $nvsmi = Get-Command nvidia-smi -ErrorAction Stop
    if ($nvsmi) {
        $csv = & nvidia-smi --query-gpu=name,driver_version,memory.total --format=csv,noheader 2>$null
        $cuda = @{
            Detected = $true
            Raw      = $csv
        }
    }
} catch {
    $cuda = @{
        Detected = $false
        Raw      = $null
    }
}

# --- Эвристика подбора диапазонов моделей
# CPU-only ориентир (квантованные модели):
#   <=16 GB RAM:     3B–7B (q4/q5)
#   32 GB RAM:       7B–13B (q4/q5)
#   64 GB RAM:       13B–30B (q4)
#   >=128 GB RAM:    30B–70B (q4) при достаточном свободном диске
function Recommend-CPUModelSize($ramGB) {
    if ($ramGB -le 16)      { return "3B–7B (q4/q5)" }
    elseif ($ramGB -le 32)  { return "7B–13B (q4/q5)" }
    elseif ($ramGB -le 64)  { return "13B–30B (q4)" }
    else                    { return "30B–70B (q4, при достаточном диске)" }
}

# GPU ориентир (по объёму VRAM одной карты, квантованные q4/q5):
#    6–8 GB VRAM:     до ~7–8B
#    10–12 GB VRAM:   до ~13B
#    20–24 GB VRAM:   13–70B с частичным оффлоадом (зависит от модели и слоёв)
#   >24 GB VRAM:      крупные модели с большим оффлоадом (70B и более, но нюансы по слоям)
function Recommend-GPUModelSize($vramGB) {
    if ($null -eq $vramGB) { return $null }
    if ($vramGB -lt 6)       { return "<6 GB VRAM: CPU-only режим или совсем малые 1–3B" }
    elseif ($vramGB -le 8)   { return "6–8 GB VRAM: до 7–8B (q4/q5) с оффлоадом" }
    elseif ($vramGB -le 12)  { return "10–12 GB VRAM: до ~13B (q4/q5) с оффлоадом" }
    elseif ($vramGB -le 24)  { return "20–24 GB VRAM: 13–70B (частичный оффлоад, зависит от модели)" }
    else                      { return ">24 GB VRAM: 70B+ при грамотной конфигурации слоёв" }
}

$cpuRec  = Recommend-CPUModelSize -ramGB $totalRAMGB
$gpuRecs = $gpuInfo | ForEach-Object {
    [PSCustomObject]@{
        Name            = $_.Name
        VRAM_GB         = $_.VRAM_GB
        SuggestedModels = Recommend-GPUModelSize -vramGB $_.VRAM_GB
    }
}

# --- Свободное место под модели (ищем диск с путём моделей, если известен)
$modelsPath = [System.Environment]::GetEnvironmentVariable('OLLAMA_MODELS','Machine')
if ([string]::IsNullOrWhiteSpace($modelsPath)) {
    $modelsPath = "D:\ai\models"  # дефолт-подсказка, если переменная не задана
}
$modelsRoot = (Get-Item $modelsPath -ErrorAction SilentlyContinue)?.PSDrive.Name + ":"
$diskForModels = $null
if ($modelsRoot) {
    $diskForModels = $diskInfo | Where-Object { $_.DeviceID -eq $modelsRoot }
}

# Простейшая оценка места: для комфортной работы заложим минимум 20–50 GB свободно
function Recommend-Disk($freeGB) {
    if ($null -eq $freeGB) { return "Не удалось определить свободное место; проверьте путь моделей." }
    if ($freeGB -lt 10) { return "Критически мало свободного места (<10 GB): освободите диск или смените путь моделей." }
    elseif ($freeGB -lt 20) { return "Мало места (10–20 GB): хватит на 1–2 небольшие модели (3B–7B)." }
    elseif ($freeGB -lt 50) { return "Ок (20–50 GB): несколько моделей 7B–13B (q4/q5) или 1–2 крупнее." }
    else { return "Достаточно (50 GB+): комфортно для набора моделей, включая 13B+ в нескольких вариантах." }
}

$diskRec = $null
if ($diskForModels) { $diskRec = Recommend-Disk -freeGB $diskForModels.FreeGB }

# --- Сводный объект
$result = [PSCustomObject]@{
    Timestamp              = (Get-Date).ToString("u")
    OS                     = @{
        Caption = $os.Caption; Version = $os.Version; Build = $os.BuildNumber
    }
    CPU                    = @{
        Name = $cpu.Name
        Cores = $cpu.NumberOfCores
        LogicalProcessors = $cpu.NumberOfLogicalProcessors
        # Примечание: точную поддержку AVX/AVX2 лучше сверять по модели CPU на сайте производителя
    }
    RAM_GB                 = $totalRAMGB
    Disks                  = $diskInfo
    GPU                    = $gpuInfo
    CUDA                   = $cuda
    ModelsPath             = $modelsPath
    Recommendations        = @{
        CPU_Models         = $cpuRec
        GPU_Models         = $gpuRecs
        Disk               = $diskRec
        Notes              = @(
            "Совмещайте CPU и частичное GPU-оффлоадирование (параметр -ngl в Ollama) для ускорения.",
            "Квантовки q4/q5 экономят RAM/VRAM с умеренной потерей качества.",
            "Для NVIDIA проверьте актуальность драйверов и наличие CUDA (nvidia-smi).",
            "Держите свободными минимум 20–50 GB на диске моделей."
        )
    }
}

# --- Сохранение JSON
$result | ConvertTo-Json -Depth 6 | Out-File -FilePath $jsonPath -Encoding UTF8

# --- Сохранение Markdown
$gpuLines = ($gpuRecs | ForEach-Object {
    "- **$($_.Name)**, VRAM: $($_.VRAM_GB) GB → $($_.SuggestedModels)"
}) -join "`n"

$diskLine = if ($diskForModels) {
    "*Путь моделей:* **$modelsPath** (диск $($diskForModels.DeviceID)) — свободно **$($diskForModels.FreeGB) GB** ($($diskForModels.FreePercent)%). Рекомендация: $diskRec"
} else {
    "*Путь моделей:* **$modelsPath** — не удалось сопоставить с диском, проверьте существование папки."
}

$md = @"
# Отчёт по оборудованию (LLM)

**Дата:** $($result.Timestamp)

## ОС
- $($result.OS.Caption)
- Версия: $($result.OS.Version), Сборка: $($result.OS.Build)

## Процессор
- $($result.CPU.Name)
- Ядер: $($result.CPU.Cores), Потоков: $($result.CPU.LogicalProcessors)

## Память
- ОЗУ: **$totalRAMGB GB**
- Рекомендация (CPU-only): **$cpuRec**

## Видеосистема
$gpuLines

## CUDA / NVIDIA-SMI
- Обнаружено: $($result.CUDA.Detected)
- Сырые данные: $($result.CUDA.Raw)

## Диски
$(
    $result.Disks | ForEach-Object {
        "- $($_.DeviceID) — $($_.FreeGB) / $($_.SizeGB) GB свободно ($($_.FreePercent)%); FS: $($_.FileSystem)"
    } | Out-String
)

## Хранилище моделей
$diskLine

## Примечания
- Совмещайте CPU и частичный GPU-оффлоад (параметр **-ngl** в Ollama).
- Квантовки **q4/q5** — лучший баланс «качество/ресурсы».
- Для NVIDIA обновите драйверы; проверьте `nvidia-smi`.
- Держите свободно **20–50 GB+** для набора моделей.

---
JSON: $jsonPath  
MD:   $mdPath
"@

$md | Out-File -FilePath $mdPath -Encoding UTF8

Write-Host "Готово. Отчёт: $mdPath и $jsonPath"

Мини-бенчмарк токенов (по желанию)

После установки Ollama можно замерить «скорость токенов» на небольшой модели (пример для 3B-7B):

# Закрепите число потоков рендера и отключите параллельные запросы, чтобы замеры были стабильнее:
$env:OLLAMA_NUM_PARALLEL = "1"
$env:OMP_NUM_THREADS = [Environment]::ProcessorCount.ToString()

# Тест: короткая генерация
Measure-Command {
  ollama run llama3.2:3b-instruct -p "Сосчитай от 1 до 200 кратко."
} | Select-Object TotalSeconds

Сравнивайте TotalSeconds между разными моделями/квантовками и с параметром -ngl <layers> (оффлоад слоёв на GPU), чтобы подобрать оптимум «скорость/качество».


Быстрые правила подбора моделей

  • CPU-only, ≤16 GB RAM: 3B–7B (q4/q5)
  • CPU-only, 32 GB RAM: 7B–13B (q4/q5)
  • CPU-only, 64 GB RAM: 13B–30B (q4)
  • CPU-only, ≥128 GB RAM: 30B–70B (q4), если хватает диска
  • GPU 6–8 GB VRAM: до ~7–8B (q4/q5) с оффлоадом
  • GPU 10–12 GB VRAM: до ~13B (q4/q5)
  • GPU 20–24 GB VRAM: 13–70B (частичный оффлоад, зависит от модели/слоёв)
  • GPU >24 GB VRAM: 70B+ при грамотной конфигурации

+ There are no comments

Add yours