root@postal:~# ollama list
NAME ID SIZE MODIFIED
minicpm-v:latest c92bfad01205 5.5 GB 2 months ago
phi3.5:latest 61819fb370a3 2.2 GB 2 months ago
phi4:latest ac896e5b8b34 9.1 GB 2 months ago
deepseek-r1:7b 755ced02ce7b 4.7 GB 2 months ago
mistral:7b-instruct 6577803aa9a0 4.4 GB 2 months ago
llava-phi3:latest c7edd7b87593 2.9 GB 2 months ago
translategemma:4b c49d986b0764 3.3 GB 2 months ago
qwen2.5:7b-instruct-q4_0 2e92ac0dd3a8 4.4 GB 2 months ago
bge-m3:latest 790764642607 1.2 GB 2 months ago
qwen2.5-coder:7b dae161e27b0e 4.7 GB 2 months ago
aya-expanse:8b 65f986688a01 5.1 GB 2 months ago
qwen3:4b e55aed6fe643 2.5 GB 7 months ago
root@postal:~#
When I first started learning about artificial intelligence, I quickly realized that the ecosystem around AI was evolving extremely fast. Every day there were new models, new frameworks, and new tools being released. Instead of only reading theoretical content, I decided to approach the topic practically and build my own local AI environment step by step.
One of the first things that attracted me was the idea of running large language models locally without depending entirely on cloud services. I wanted to understand how these models worked in real environments, how much hardware they needed, and whether they could realistically run on a normal server with only CPU resources.
After researching different solutions, I found Ollama. What I liked about Ollama was its simplicity. Installing and managing models was straightforward, and it allowed me to experiment with many modern open-source AI models without dealing with complicated setups. For someone trying to learn quickly through experimentation, this was exactly what I needed.
My main challenge was hardware limitations. I was not using a high-end GPU server. Instead, I wanted to see what was realistically possible on a CPU-only machine with minimal resources. I expected many models to fail or become unusably slow, but surprisingly, several modern models performed much better than I initially thought.
The first step was installing Ollama on the server and testing lightweight models. I started with smaller models because they were easier to load into memory and produced faster responses. Models like phi3.5 and qwen3:4b immediately stood out because they were efficient, responsive, and surprisingly capable despite their small size.
As I continued experimenting, I began understanding that not all AI models are designed for the same purpose. Some models are optimized for general conversation, while others focus on coding, reasoning, image understanding, translation, or embeddings for retrieval systems. This distinction became very important when choosing the right model for specific tasks.
One of the models that impressed me early was mistral:7b-instruct. It provided a good balance between response quality and hardware efficiency. Even on CPU, it was stable enough for general chat, summarization, and backend assistant tasks. It felt like a practical production-ready model rather than just an experimental toy.
Later, I tested phi4, which showed noticeably stronger reasoning and coding capabilities compared to smaller models. It followed instructions more accurately and generated more structured answers. However, I could clearly feel the difference in resource usage. On CPU-only hardware, larger models required more patience and significantly more RAM.
I also experimented with deepseek-r1:7b, which is heavily focused on reasoning and step-by-step analysis. This model was particularly interesting because it behaved differently from normal chat models. It spent more effort analyzing problems logically and generating thoughtful outputs, especially in technical and mathematical tasks.
Since I work heavily with software development, coding models became one of my main interests. I tested qwen2.5-coder:7b, and honestly, it became one of my favorite local models. It performed very well in PHP, Go, Python, SQL, and backend-related tasks. For local development assistance, debugging, and code generation, it was extremely useful.
Another area I explored was multilingual support. Many open-source models perform well in English but struggle with other languages. Models like qwen2.5:7b-instruct-q4_0 and aya-expanse:8b showed much better multilingual understanding, especially for Persian content. This was important for me because I often switch between Persian and English in real-world workflows.
I also became interested in multimodal AI systems. Models such as minicpm-v and llava-phi3 allowed image analysis, OCR, and visual understanding. These models were heavier and slower on CPU, but they demonstrated how AI is evolving beyond text-only interactions into systems that can understand both language and images together.
During these experiments, I learned the importance of quantization. Quantized models like Q4_0 variants dramatically reduce memory usage and make local inference more practical on weaker hardware. Without quantization, many of these models would have been difficult or impossible to run comfortably on my server.
Another interesting discovery was embedding models such as bge-m3. At first, I misunderstood embeddings and assumed every AI model was meant for chat. Later, I realized that embedding models are critical for semantic search, retrieval systems, vector databases, and modern RAG architectures. They play a completely different role inside AI applications.
As I continued testing models, I started understanding the tradeoffs between speed, memory usage, reasoning quality, and context understanding. Smaller models responded quickly but struggled with complex reasoning. Larger models produced better answers but required more resources and longer processing times.
One of the biggest lessons I learned was that local AI is already practical for many real-world tasks, even without GPUs. Of course, GPUs dramatically improve performance, but modern quantized models have become efficient enough that CPU-only environments are no longer useless for experimentation and development.
I also learned that choosing the right model matters more than simply choosing the biggest one. In many situations, a smaller optimized model can outperform a larger general-purpose model for specific workflows. For example, coding-specific models consistently produced better development-related outputs than generic chat models.
Prompt engineering also became an important part of the learning process. I realized that how you ask questions can significantly change the quality of AI responses. Clear instructions, structured prompts, and contextual guidance often improved outputs more than simply switching to a larger model.
Over time, my local AI environment evolved into a small experimental ecosystem. I now had chat models, coding assistants, multilingual systems, vision models, and embedding models all running locally through Ollama. This setup gave me the freedom to experiment privately without relying entirely on external APIs.
Looking back, the experience taught me much more than just how to install AI models. It helped me understand the practical architecture behind modern AI systems, the limitations of hardware, and the importance of selecting tools based on actual use cases instead of hype.
Today, I see local AI not only as a learning experience but as a realistic foundation for future applications. With tools like Ollama and the rapid improvement of open-source models, developers can now build powerful AI systems on relatively modest hardware. Even on a CPU-only server, it is possible to create surprisingly capable AI environments for coding, research, automation, multilingual applications, and much more.
Comments
No comments yet. Be the first!
Leave a Comment