Skip to content
THE CARIBBEAN & LATIN AMERICA ADRIAN DUNKLEY ↗

Small Language Models: Deployment

Deploying a Small Language Model: A Practical Guide

Created by Adrian Dunkley | maestroailabs.com | ceo@maestrosai.com | Fair Use


This guide describes a single-user local pilot, not an internet-facing service or a guaranteed one-hour installation. Start with synthetic data. No model described here has been performance-tested by this guide on your hardware.

Technical documentation checked: 11 November 2026. Choose a documented model in Models and check current runtime requirements before installing.

Choose a runtime

RuntimeUseful starting pointVerify before use
OllamaLocal command-line/API experimentsExact model tag, local/cloud mode and server exposure
LM StudioDesktop experiments through a visual interfaceDownloaded runtime/model, plugins and offline behavior
llama.cppTechnical teams needing direct inference configurationSupported model format, backend and release instructions

There is no universal best runtime or promised performance gain. The runtime’s software terms and each model’s license are separate. Download from official sources, inspect the installer requirements and retain a record of the version. Do not paste an unfamiliar install script into a shell merely because a tutorial suggests it.

Ollama: a bounded local test

Prepare the machine

  1. Use the official download and setup instructions for your operating system. Review any installation or administrator permissions.
  2. Select a downloaded local model. Do not choose a cloud model or add web/search tools for this pilot.
  3. Keep the service on its loopback interface. Ollama’s local API requires no authentication, so do not expose it directly to a LAN, tunnel or public address. Authentication documentation.
  4. If local-only operation is required, use Ollama’s documented cloud-disable setting, restart it and verify the setting took effect. The FAQ documents OLLAMA_NO_CLOUD=1 and local-only configuration. This controls Ollama, not every application on the device.
  5. Ensure enough disk space and memory. Close unnecessary applications and start with a short context and one request at a time.

Choose one verified model tag

These examples are present in Ollama’s model library. They are not interchangeable in capability or licensing, and no RAM guarantee is implied.

After installing the runtime and reviewing the model terms, the following commands download and run one example. Downloading requires internet access and disk space. Use synthetic prompts only for the first test.

ollama pull gemma3:4b
ollama run gemma3:4b

Example prompt: “Write a two-sentence Spanish reply saying our fictional shop opens at 9 am. Do not invent an address, price or phone number.”

Record the downloaded model’s identity and quantization. A tag can change; keep a digest or revision with your test record.

A local API example

This Python standard-library example sends a synthetic prompt only to the loopback service. It does not install software, expose a port, use credentials or connect business tools. Run it only after confirming that the service and selected model are local. It has not been executed against a model as part of this editorial review.

import json
from urllib.error import HTTPError, URLError
from urllib.request import ProxyHandler, Request, build_opener

payload = {
    "model": "gemma3:4b",
    "prompt": "Draft a greeting for a fictional bakery. No personal data.",
    "stream": False,
    "options": {"num_ctx": 2048, "num_predict": 120},
}
request = Request(
    "http://127.0.0.1:11434/api/generate",
    data=json.dumps(payload).encode("utf-8"),
    headers={"Content-Type": "application/json"},
    method="POST",
)
# Bypass environment proxy settings for this loopback-only request.
opener = build_opener(ProxyHandler({}))
try:
    with opener.open(request, timeout=120) as response:
        result = json.load(response)
    draft = result.get("response")
    if not isinstance(draft, str):
        raise ValueError("No text response returned")
    print(draft)  # Draft for review, not an outgoing customer message.
except (HTTPError, URLError, TimeoutError, ValueError, OSError):
    print("Local request failed. Check the model and service; no cloud fallback.")

The request uses Ollama’s documented generate endpoint. Set limits for your actual workload and test failure behavior rather than automatically retrying indefinitely.

Compatibility is partial

Ollama documents a subset of OpenAI-compatible API behavior. Some clients require a placeholder key for a local connection; this is not authentication or protection for the server. Test the endpoint, structured-output format and tool behavior your application needs. Changing a base URL does not guarantee that an entire agent SDK works unchanged. Ollama compatibility documentation.

LM Studio and llama.cpp

For a visual pilot, download the model and required runtime in LM Studio, then test core chat while disconnected. Its offline documentation distinguishes downloaded local functions from network-dependent discovery and downloads. Added plugins, tools or cloud synchronization need their own review.

For a technical deployment, follow the current llama.cpp repository instructions for your platform and model format. Do not assume every GPU, NPU or edge-device accelerator is supported. Avoid enabling custom model code or an externally reachable server merely to make a sample work.

Quantization and hardware planning

Quantization stores parts of a model at lower precision. It can reduce memory requirements; speed and quality effects depend on the model, backend and task. A label such as Q4_K_M describes a format, not a universal promise of four bits for every component or a fixed accuracy loss.

Use the weight-memory calculation as an initial estimate, then inspect the actual file and measure peak memory. Leave room for the operating system, attention cache and concurrent requests. Test long documents and repeated use before buying hardware.

Do not size a mixture-of-experts model using only its active parameter count. Do not assume that an advertised context maximum fits in the memory available on a laptop.

Cost of ownership

Use a fixed comparison period and the same acceptable output quality for both options.

Local cost = allocated hardware cost + electricity + maintenance + review/correction time + backup/security costs.

Hosted cost = subscription + measured token/tool usage + storage/network/messaging costs + review/correction time + maintenance.

Illustrative electricity calculation: an average draw of 80 W for 8 hours/day over 30 days uses 0.08 × 8 × 30 = 19.2 kWh. At an assumed US$0.30/kWh, that is US$5.76. These are invented inputs for arithmetic, not regional rates or a device measurement. Add idle power, cooling and any other equipment actually used.

There is no assured break-even month. Hardware purchase price, taxes, import costs, workload and staff support can change the conclusion. Compare complete costs before moving a working process.

Network and privacy architecture

Fully local processing

Use local input, inference, storage and review. Check backups, operating-system sync, telemetry, OCR, embeddings and plugins. Test an offline run and, where appropriate, have an administrator inspect network activity. An offline test helps check the data flow; it is not a complete privacy or security audit.

Local processing with approved cloud fallback

Keep fallback off until the owner has approved the provider, purpose and data that may leave the device. Minimize or de-identify material where possible. If the local model fails on restricted data, pause for a person rather than silently uploading it.

Regional hosting

Verify contractual processing locations for inference, storage, logs, backups and support access. A nearby data-centre region does not by itself establish in-country processing or compliance. See governance.

Shared access

A multi-user service needs authentication, per-user authorization, transport protection, rate limits and operational monitoring. Those controls are outside this single-user example. Do not put a local unauthenticated endpoint on the public internet as a shortcut.

Fine-tuning and retrieval

Try instructions and retrieval over approved, current documents first. Retrieval adds a source-selection step, not a guarantee that the answer is true. Enforce document access before retrieval and show the source for important claims.

Fine-tuning needs rights to the examples, privacy review, a training/validation split and tests for memorization and regressions. Training costs and memory depend on the exact model, method and sequence lengths. There is no fixed number of examples, training hours or rented-GPU budget that guarantees success.

Troubleshooting without unsafe shortcuts

SymptomCheck first
Slow or out of memoryActual model size, peak RAM/VRAM, context, concurrency and supported acceleration
Wrong factsSource freshness, retrieval quality and task fit; return to human review
Missing earlier detailsContext truncation and an access-controlled task record, keeping untrusted text out of system instructions
Cloud fallback appearsStop the test and inspect model selection, tools and runtime configuration
Unknown model tagLook up the exact published tag; do not invent one from a parameter count
Failed requestInspect a minimal, redacted diagnostic; do not paste credentials or customer records into public issue trackers

Before customer use, test access boundaries, injection attempts, loss of power/network, backup recovery and a manual fallback. See agent design if the system will call tools, and use cases for pilot ideas.


Created by Adrian Dunkley | MaestrosAI | maestroailabs.com | ceo@maestrosai.com Fair Use, Educational Resource | April 2026

KEEP LEARNING

PLAYBOOK UPDATES.

Regional guidance, practical skills and project news.

By subscribing you request AI Playbook emails. Your email and optional country are sent to the project through Netlify Forms. For questions or to request removal, contact the project.

Cite this page

Dunkley, Adrian. “Small Language Models: Deployment.” LAC AI Playbook. https://aiplaybooklac.netlify.app/pages/slm-deployment/. Include your access date when citing this changing resource.

Geographic coverage: Latin America and the Caribbean. This describes the subject of the guidance, not the author's location or a service address.

Credit Adrian Dunkley when quoting or adapting the playbook. Cite the original research for its findings. Third-party text, photographs and other materials retain their own rights; citation alone does not grant permission to reproduce them.