AILLM

Complete Guide to Installing and Using Ollama

Before you start

  • 10 min read
  • 37 to run in terminal

Boxes marked Run in terminal are what you type; plain text explains why. Check what you need first

Introduction#

Ollama is a lightweight tool that lets you run large language models (LLMs) locally on your own machine. This means you can access powerful AI capabilities without sending your data to third-party services. Ollama makes it easy to download, manage, and run various open-source models like Llama, Mistral, and many others directly on your computer.

Running models locally with Ollama offers several benefits:

  • Privacy: Your data stays on your machine
  • No internet required after initial model download
  • Free to use (though you need sufficient hardware)
  • Customizable experience

Prerequisites#

Before installing Ollama, make sure your system meets these requirements:

  • Operating System: macOS, Windows, or Linux
  • RAM: At least 8GB (16GB+ recommended for better performance)
  • Storage: At least 10GB of free space (more for multiple models)
  • CPU: 64-bit processor (some models may require AVX2 instructions)
  • GPU: Optional but recommended for better performance

Installation Process#

macOS Installation#

Run in terminalbash
curl -fsSL https://ollama.com/install.sh | sh

This downloads and runs the Ollama installation script. Ollama will be installed as an application.

If the command fails, check your internet connection or try downloading the installer directly from the Ollama website.

Windows Installation#

Run in terminalbash
winget install Ollama.Ollama

This uses Windows Package Manager to install Ollama. Alternatively, you can download the installer from the Ollama website.

If you get a "not found" error, make sure you have winget installed or download the .msi installer from the Ollama website.

Linux Installation#

Run in terminalbash
curl -fsSL https://ollama.com/install.sh | sh

This downloads and runs the Ollama installation script, installing Ollama on your Linux system.

If you encounter permission issues, you might need to run the command with sudo.

Running Ollama#

After installation, Ollama starts automatically as a service. You can interact with it through the command line.

Starting Ollama (if not already running)#

Run in terminalbash
ollama serve

This starts the Ollama service if it's not already running. Keep this terminal window open while using Ollama.

If you see "address already in use" errors, Ollama is likely already running.

Default Model Directories#

Ollama stores models in the following default locations:

  • macOS: ~/.ollama/models
  • Linux: ~/.ollama/models
  • Windows: C:\Users\<username>\.ollama\models

These directories are created automatically during installation.

Managing Models with Ollama#

Pulling Your First Model#

Run in terminalbash
ollama pull mistral

This downloads the Mistral model, a good general-purpose model that balances performance and resource usage.

Depending on your internet connection, this might take several minutes. The command will show download progress.

Pulling Latest Models#

Run in terminalbash
ollama pull llama3.2:8b

This pulls the 8 billion parameter version of Llama 3.2, one of the newer models available.

Newer models like Llama 3.2 often provide improved capabilities but may require more resources.

Listing Available Models#

Run in terminalbash
ollama list

This shows all models currently downloaded on your system.

If no models appear but you've downloaded some, check if the Ollama service is running.

Running a Model#

Run in terminalbash
ollama run mistral

This starts a chat session with the Mistral model in your terminal.

If you see errors about the model not being found, make sure you've pulled it first.

GPU Configuration#

Setting Up NVIDIA GPU Support#

For NVIDIA GPUs, ensure you have the appropriate drivers and CUDA installed:

Run in terminalbash
# Check CUDA installation
nvidia-smi

This displays your GPU information and CUDA version. Ollama works best with CUDA 11.4+.

If the command isn't found, install NVIDIA drivers and CUDA toolkit first.

Configuring GPU Memory Allocation#

Run in terminalbash
CUDA_VISIBLE_DEVICES=0 ollama run llama3:8b --gpu-layers 35

This runs the model on GPU 0 and specifies loading 35 layers onto the GPU.

Adjust the number of GPU layers based on your available VRAM. More layers mean better performance but require more memory.

Setting Up AMD GPU Support#

For AMD GPUs, ensure ROCm is installed:

Run in terminalbash
# Check ROCm installation
rocminfo

This verifies ROCm is properly installed. AMD support is more limited than NVIDIA.

If your AMD GPU isn't detected, ensure you have compatible drivers and ROCm version installed.

Intel GPU Configuration#

For Intel Arc GPUs:

Run in terminalbash
ONEAPI_DEVICE_SELECTOR=level_zero:0 ollama run mistral --gpu-layers 32

This enables Intel Arc GPU acceleration through OneAPI.

Intel GPU support is newer and may have limitations compared to NVIDIA support.

Organizing Models#

Creating a Custom Model Directory#

By default, Ollama stores models in its data directory. To use a custom location:

Run in terminalbash
mkdir -p ~/ollama-models

This creates a directory for organizing your models.

The directory won't be used by Ollama automatically; we'll need to configure it.

Configuring Custom Model Directory#

For Linux/macOS:

Run in terminalbash
export OLLAMA_MODELS=~/ollama-models

For Windows (PowerShell):

Codebash
$env:OLLAMA_MODELS="C:\path\to\ollama-models"

This tells Ollama where to store and look for models.

Note that this setting only applies to the current terminal session. Add it to your shell profile for persistence.

Security Considerations#

Restricting Network Access#

By default, Ollama only listens on localhost. To restrict access further:

Run in terminalbash
OLLAMA_HOST=127.0.0.1:11434 ollama serve

This ensures Ollama only accepts connections from the local machine.

Never expose Ollama to the public internet without proper security measures.

Configuring Firewall Rules#

For Linux (using ufw):

Run in terminalbash
sudo ufw allow from 192.168.1.0/24 to any port 11434

This allows only your local network to access Ollama.

Adjust the IP range to match your specific network configuration.

Setting Up Basic Authentication#

While Ollama doesn't have built-in authentication, you can use a reverse proxy:

Run in terminalbash
# Using nginx as a reverse proxy with basic auth
sudo apt install nginx apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd username

Then configure nginx to proxy requests to Ollama with authentication.

This adds a layer of protection when exposing Ollama on a network.

Advanced Model Management#

Removing a Model#

Run in terminalbash
ollama rm mistral

This removes the Mistral model from your system, freeing up disk space.

Make sure you're not currently using the model when removing it.

Pulling a Specific Model Version#

Run in terminalbash
ollama pull llama2:7b

This pulls a specific version of a model (in this case, the 7 billion parameter version of Llama 2).

Larger models provide better quality but require more resources.

Pulling Models from Hugging Face#

Ollama supports importing models from Hugging Face using the Modelfile approach:

Run in terminalbash
echo "FROM hf://huggingface/mistralai/Mistral-7B-v0.1" > Modelfile

This creates a Modelfile that references a Hugging Face model.

Make sure you have proper permissions to access the model if it's not public.

Creating a Model from the Modelfile#

Run in terminalbash
ollama create mistral-hf -f Modelfile

This creates a new model in Ollama based on the Hugging Face definition.

This process may take time as it downloads and converts the model.

Using Ollama With Different Interfaces#

Using the Web UI#

While Ollama doesn't include a web UI by default, you can install a compatible one:

Run in terminalbash
git clone https://github.com/ollama-webui/ollama-webui.git
cd ollama-webui
docker compose up -d

This sets up a user-friendly web interface for Ollama on http://localhost:3000.

Make sure Docker is installed on your system first.

Using Ollama API#

Ollama also provides a REST API:

Run in terminalbash
curl -X POST http://localhost:11434/api/generate -d '{
  "model": "mistral",
  "prompt": "Why is the sky blue?"
}'

This sends a prompt to Ollama's API and returns the model's response.

If you get connection errors, make sure the Ollama service is running.

Troubleshooting Common Issues#

Model Won't Download#

If a model fails to download:

Run in terminalbash
ollama pull mistral --insecure

This attempts to download using non-secure connections, which can help with certain network issues.

Only use this option if you trust the source.

Out of Memory Errors#

If you encounter out of memory errors:

Run in terminalbash
ollama run mistral --compute=cpu

This forces the model to run on CPU only, which uses less memory but runs slower.

Alternatively, try using smaller models like tinyllama or orca-mini.

Permission Denied Errors#

For Linux users encountering permission issues:

Run in terminalbash
sudo chown -R $(whoami) ~/.ollama

This ensures you have proper ownership of the Ollama directories.

Be careful with sudo commands; only use when necessary.

GPU Not Detected#

If your GPU is not being detected:

Run in terminalbash
# For NVIDIA
ollama run mistral --verbose

This shows detailed logs that can help identify GPU-related issues.

Check driver compatibility and ensure your GPU has enough VRAM for the model.

Known Bugs and Workarounds#

GPU Memory Leaks#

Some users report GPU memory not being released properly after using Ollama:

Run in terminalbash
ollama serve --compute=cpu # then restart with GPU

This runs Ollama in CPU-only mode temporarily, which can help reset GPU memory.

Restart Ollama completely if issues persist.

CLI Freezing on Windows#

Some Windows users report the CLI freezing:

Run in terminalbash
ollama run mistral --verbose

Running with verbose output can help identify where issues occur.

The Windows version of Ollama is newer and may have more bugs than macOS/Linux versions.

Model Loading Timeout#

For very large models that time out during loading:

Run in terminalbash
OLLAMA_TIMEOUT=600 ollama run llama3:70b

This increases the timeout to 10 minutes (from the default 3 minutes).

Adjust the timeout value based on your system's performance.

Maintenance#

Updating Ollama#

Run in terminalbash
ollama pull ollama

This updates the Ollama software to the latest version.

It's recommended to update regularly for bug fixes and new features.

Backing Up Your Models#

Run in terminalbash
tar -czf ollama-backup.tar.gz ~/.ollama

For Linux/macOS, this creates a compressed backup of your Ollama data directory.

For Windows, consider using a backup tool like 7-Zip to compress the Ollama directory.

Updating Models#

Run in terminalbash
ollama pull mistral:latest

This updates a model to its latest version.

Note that this downloads the model again, so make sure you have enough disk space.

Advanced Usage#

Creating Custom Models#

You can create custom models by extending existing ones:

Run in terminalbash
echo "FROM mistral
PARAMETER temperature 0.7
SYSTEM You are a helpful coding assistant." > CustomModelfile
ollama create coder -f CustomModelfile

This creates a custom model with specific parameters and system instructions.

Customizing models can help tailor them to specific tasks.

Running Models with Custom Parameters#

Run in terminalbash
ollama run mistral --temperature 0.2

This runs the model with a lower temperature setting (more focused, less creative responses).

Different parameters can significantly change how the model responds.

Exporting Models#

Run in terminalbash
ollama export mistral > mistral-exported.ollama

This exports a model to a file that can be transferred to another machine.

The exported file contains the complete model and can be large.

Importing Models#

Run in terminalbash
ollama import < mistral-exported.ollama

This imports a previously exported model.

Make sure you have enough disk space before importing.

Additional Resources#

Official Documentation and Support#

Model Libraries and Resources#

These resources provide additional support, updates, and community-contributed content for Ollama users.


Ollama Tags Reference List#

Model Size Tags#

  • 7b - 7 billion parameter models
  • 8b - 8 billion parameter models
  • 13b - 13 billion parameter models
  • 34b - 34 billion parameter models
  • 70b - 70 billion parameter models
  • latest - Latest version of a model

Model Family Tags#

  • llama2 - Meta's Llama 2 model family
  • llama3 - Meta's Llama 3 model family
  • mistral - Mistral AI models
  • orca - Microsoft Research's Orca models
  • gemma - Google's Gemma models
  • phi - Microsoft's Phi models
  • wizard - WizardLM models
  • vicuna - Berkeley's Vicuna models
  • falcon - Technology Innovation Institute's Falcon models

Specialization Tags#

  • instruct - Fine-tuned for following instructions (e.g., mistral:instruct)
  • chat - Optimized for conversation (e.g., llama2:chat)
  • code - Specialized for programming (e.g., codellama:7b)
  • vision - Models with image understanding capabilities
  • math - Models optimized for mathematical reasoning
  • medical - Models with medical knowledge focus
  • tiny - Extra small models for resource-constrained environments
  • uncensored - Models with fewer content restrictions

Quantization Tags#

  • q4_0 - 4-bit quantization, method 0 (smallest size, lowest quality)
  • q4_1 - 4-bit quantization, method 1 (better quality than q4_0)
  • q5_0 - 5-bit quantization
  • q5_1 - 5-bit quantization, method 1
  • q8_0 - 8-bit quantization (better quality, larger size)
  • f16 - 16-bit float precision (high quality, largest size)

Usage Examples#

  • llama3:8b - 8B parameter version of Llama 3
  • codellama:13b-instruct - 13B CodeLlama optimized for instruction following
  • mistral:7b-q4_0 - 7B Mistral model with 4-bit quantization for smaller size
  • llama2:70b-chat-q5_0 - 70B Llama 2 chat model with 5-bit quantization
  • gemma:2b-instruct - 2B Gemma instruction model
  • phi:2.7b - 2.7B Phi model

Custom Tags#

  • custom - User-created model variants
  • finetune - Models that have been fine-tuned
  • merged - Models created by merging multiple base models
  • rag - Models configured for retrieval-augmented generation

Conclusion#

Ollama provides a powerful way to run AI language models on your own hardware. With the commands in this guide, you can install, configure, and manage Ollama and its models effectively. As the project is actively developed, check the official documentation for the latest features and best practices.

Remember that running models locally requires substantial resources, especially for larger models. Start with smaller models if you're facing performance issues, and gradually explore larger ones as you become more familiar with the system.

Consider your security needs when deploying Ollama, especially in multi-user or networked environments. The privacy benefits of local AI only apply when the system is properly secured.

he system.