Senarai Model AI Untuk Hos Sendiri Mengikut RAM
Ketahui model AI yang sesuai dengan RAM pelayan anda. Kami sediakan pengiraan saiz untuk 4 GB, 16 GB, dan 64 GB, kadar token CPU, serta kos tersembunyi bagi tetingkap konteks.
Apakah yang menentukan model AI yang boleh anda hos sendiri
Model AI yang boleh anda hos sendiri ditentukan oleh satu angka: jumlah RAM pada pelayan anda. Keluarga model dan kerangka kerja (framework) kurang penting berbanding sama ada pemberat (weights) model tersebut muat di dalam memori dengan ruang tambahan yang mencukupi. Catatan ini mengandungi pengiraan untuk menentukan perkara tersebut. Pemasangan runtime adalah tugas berasingan, yang diterangkan dalam panduan menjalankan Ollama pada VPS.
Dua kos menentukan jawapannya. Pemberat adalah kos tetap, yang ditetapkan oleh bilangan parameter dan kuantisasi. Tetingkap konteks (context window) adalah kos semasa, dan ia merupakan perkara yang sering dilupakan sehingga model yang dimuatkan semalam gagal dimuatkan hari ini.
Aritmetik saiz: bit bagi setiap parameter
Fail model hampir keseluruhannya terdiri daripada pemberat (weights). Setiap pemberat disimpan pada bilangan bit tertentu. Kuantisasi bermaksud menyimpannya pada bilangan bit yang lebih rendah daripada ketepatan asal semasa latihan, yang mengurangkan sedikit ketepatan tetapi menjimatkan banyak memori. Saiz fail ditentukan secara langsung oleh perkara ini:
weights in GB = (parameters in billions x bits per weight) / 8Model dikeluarkan pada 16 bit, iaitu 2 GB bagi setiap bilion parameter. Itulah sebabnya hampir tiada sesiapa yang menjalankan ketepatan keluaran asal pada VPS. Berikut adalah kuantisasi yang akan anda temui, berserta purata bit sebenar bagi setiap pemberat:
Q8_0menyimpan kira-kira 8.5 bit bagi setiap pemberat, jadi secara kasarnya 1.1 GB bagi setiap bilion parameter.Q6_Kmenyimpan kira-kira 6.6 bit, jadi secara kasarnya 0.83 GB bagi setiap bilion.Q5_K_Mmenyimpan kira-kira 5.7 bit, jadi secara kasarnya 0.71 GB bagi setiap bilion.Q4_K_Mmenyimpan kira-kira 4.8 bit, jadi secara kasarnya 0.6 GB bagi setiap bilion.
Gunakan 0.6 GB bagi setiap bilion parameter sebagai angka kerja anda. Q4_K_M ialah tetapan lalai yang wajar pada mesin yang terhad memori: kehilangan kualiti berbanding 8 bit adalah kecil bagi kebanyakan tugasan, dan saiz fail adalah hampir separuh. Di bawah 4 bit, kehilangan kualiti meningkat dengan cepat, jadi model 70B yang dimampatkan kepada 2 bit biasanya memberikan jawapan yang lebih buruk daripada model 32B pada 4 bit daripada generasi yang sama. Apabila memori terhad, kurangkan kelas saiz model sebelum anda menurunkan kuantisasi di bawah 4 bit.
The data behind this chart
[
{
"label": "3B",
"weights_gb": 1.8,
"kv_8k_gb": 0.9,
"kv_128k_gb": 14
},
{
"label": "8B",
"weights_gb": 4.8,
"kv_8k_gb": 1,
"kv_128k_gb": 16
},
{
"label": "14B",
"weights_gb": 8.4,
"kv_8k_gb": 1.5,
"kv_128k_gb": 24
},
{
"label": "32B",
"weights_gb": 19.2,
"kv_8k_gb": 2,
"kv_128k_gb": 32
},
{
"label": "70B",
"weights_gb": 42,
"kv_8k_gb": 2.5,
"kv_128k_gb": 40
}
]Lajur pemberat di atas adalah berdasarkan peraturan 0.6 GB bagi setiap bilion parameter. Fail GGUF sebenar berada dalam lingkungan beberapa peratus daripada angka tersebut, kerana lapisan embedding dan output dikekalkan pada ketepatan yang lebih tinggi berbanding lapisan lain. Model 3B pada 4 bit adalah kira-kira 1.8 GB. Model 8B adalah 4.8 GB. Model 32B adalah 19.2 GB, dan model 70B adalah 42 GB.
Mengapa panjang konteks menggunakan lebih banyak RAM berbanding pemberat (weights)
KV cache (cache kunci-nilai, iaitu keadaan perhatian yang disimpan oleh model bagi setiap token dalam perbualan semasa) merupakan kos kedua. Ia diperuntukkan apabila model dimuatkan, disaizkan mengikut panjang konteks yang anda minta, dan ia berkembang secara linear mengikut panjang tersebut.
Formula KV cache, dan tempat untuk membaca nombor-nombor tersebut
bytes per token = 2 x layers x kv_heads x head_dim x bytes per elementAngka 2 mewakili kunci dan nilai. Nilai untuk layers, kv_heads (disenaraikan sebagai num_key_value_heads) dan head_dim semuanya terdapat dalam config.json pada halaman kad model. Bait bagi setiap elemen ialah 2 untuk cache 16-bit. Model 8B tipikal mempunyai 32 lapisan, 8 kepala kunci-nilai dan dimensi kepala sebanyak 128, jadi 2 x 32 x 8 x 128 x 2 = 131072 bait, iaitu 128 KiB bagi setiap token.
Pada konteks lalai Ollama, model 8B tersebut menggunakan setengah gigabait untuk cache. Pada 8192 token, ia menggunakan 1 GB. Pada konteks 128k yang diiklankan oleh kad modelnya, ia menggunakan 16 GB, iaitu lebih tiga kali ganda daripada pemberatnya. Model 70B pula adalah kes sebaliknya: cache-nya pada 128k ialah 40 GB, kurang daripada pemberatnya sendiri, kerana grouped query attention menghalang kos bagi setiap token daripada berkembang secepat kiraan parameter.
Panjang konteks lalai Ollama ialah 4096 token pada pelayan yang hanya menggunakan CPU. Apabila GPU tersedia, ia memilih nilai lalai daripada VRAM sebaliknya: 32k antara 24 dan 48 GiB, dan 256k pada 48 GiB ke atas. Tingkatkan nilai ini dengan pemboleh ubah OLLAMA_CONTEXT_LENGTH pada pelayan, kemudian semak nilai yang sebenarnya diperoleh oleh model yang sedang berjalan dalam lajur CONTEXT pada ollama ps. Aritmetik memori di sebalik tetapan tersebut diperincikan dalam hantaran mengenai num_ctx dan panjang konteks.
Terdapat dua cara untuk mengurangkan penggunaan cache. Minta panjang konteks yang anda perlukan sahaja dan bukannya konteks yang diiklankan oleh kad model, memandangkan kebanyakan kerja sembang dan pengekodan muat dalam lingkungan 8k hingga 32k. Atau, kuantisasi cache itu sendiri kepada 8-bit, yang akan mengurangkannya kepada separuh, dengan sedikit kesan terhadap keupayaan mengingat konteks yang panjang.
Model residen mengekalkan RAM tersebut sehingga sesuatu menyahmuatnya
Ollama menyimpan model dalam memori selama 5 minit selepas permintaan terakhir, kemudian menyahmuatnya. Nilai lalai itu sesuai untuk komputer riba tetapi tidak tepat untuk pelayan, di mana permintaan pertama selepas setiap tempoh melahu akan menanggung semula masa muatan.
ollama ps
ollama stop qwen3:4bollama ps menyenaraikan perkara yang residen, dengan lajur SIZE menunjukkan jumlah memori yang dipegang dan lajur UNTIL menunjukkan masa ia tamat tempoh. Untuk menyemat model secara kekal, tetapkan OLLAMA_KEEP_ALIVE=-1 pada servis tersebut. Nilai 0 akan menyahmuat model sebaik sahaja setiap respons selesai.
sudo systemctl edit ollama.service[Service]
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="OLLAMA_CONTEXT_LENGTH=8192"sudo systemctl daemon-reload
sudo systemctl restart ollamaHantar satu prompt, kemudian jalankan ollama ps semula sepuluh minit kemudian. Model tersebut masih disenaraikan, itulah tujuan sebenarnya: ia memegang RAM tersebut sama ada sesiapa menggunakannya atau tidak. Model yang disemat bukanlah kapasiti simpanan. Pada VPS 16 GB, model 8B dengan konteks 8k memegang kira-kira 6 GB selagi servis berjalan, jadi tentukan saiz pelayan berdasarkan model ditambah dengan aplikasi anda, bukan berdasarkan model sahaja. Menyemat model dalam memori membincangkan pertukaran antara latensi permulaan sejuk (cold start).
Apa yang boleh dijalankan pada VPS 4 GB
Peruntukkan kira-kira 1 GB untuk sistem pengendalian dan pelayan model, yang meninggalkan sekitar 3 GB. Ini memuatkan model 1B hingga 4B pada 4 bit, dengan konteks lalai 4096 token. Setakat Ogos 2026, kelas tersebut merangkumi Llama 3.2 pada 3B, Qwen 3 pada 1.7B dan 4B, serta keluaran Gemma dan Phi yang kecil. Anggap ini sebagai contoh saiz, bukan cadangan. Nama model berubah setiap beberapa bulan tetapi pengiraan aritmetiknya tidak.
Jangkakan kira-kira 6 hingga 14 token sesaat. Model sekecil ini berfungsi dengan baik untuk tugasan khusus: klasifikasi, pengekstrakan tag, ringkasan pendek, dan menulis semula perenggan mengikut gaya penulisan tertentu. Ia lemah dalam penaakulan berbilang langkah dan kod yang merangkumi beberapa fail, dan tiada teknik prompting yang dapat membaiki kelemahan tersebut.
Mod kegagalan pada peringkat ini ialah swap. Jika model tidak muat, Linux tidak akan menolak untuk memuatkannya. Sebaliknya, ia memindahkan memori ke cakera, dan memandangkan penjanaan satu token membaca setiap pemberat sekali, penjanaan akan menjadi perlahan kepada saat bagi setiap token. Pantau free -h serta lajur si dan so dalam vmstat 1 semasa model menjawab. Swap in dan swap out yang bukan sifar semasa penjanaan bermakna model tersebut terlalu besar untuk pelan yang digunakan.
Apa yang boleh dijalankan pada VPS 8 hingga 16 GB
Pada tahap ini, model yang dihoskan sendiri menjadi sangat berguna. Pada 8 GB, anda boleh menjalankan model 7B atau 8B pada 4 bit, iaitu kira-kira 4.8 GB berat model, dengan konteks 8k. Pada 16 GB, anda boleh menjalankan model 13B atau 14B pada 4 bit, iaitu kira-kira 8.4 GB, atau mengekalkan model 8B pada 8 bit jika anda lebih mengutamakan ketepatan berbanding jumlah parameter.
Kelajuan adalah kekangan utamanya. Model 8B pada CPU menjana kira-kira 3 hingga 7 token sesaat, manakala model 14B menjana kira-kira 1.5 hingga 3.5. Manusia membaca pada kadar sekitar 5 hingga 10 token sesaat, jadi model 8B pada VPS berasaskan CPU terasa seperti melihat seseorang menaip dengan perlahan. Ini memadai untuk tugasan latar belakang tetapi memenatkan untuk sembang interaktif. Ujian larian Qwen 3 pada saiz 8B dan lebih besar di VPS menunjukkan prestasi sebenar dalam praktiknya.
Apa yang boleh dijalankan pada VPS 32 hingga 64 GB
Model 32B pada 4 bit memerlukan kira-kira 19.2 GB, jadi ia muat pada pelan 32 GB dengan konteks yang singkat dan berjalan dengan selesa pada 48 GB atau 64 GB. Model 70B pada 4 bit memerlukan kira-kira 42 GB, jadi ia memerlukan 64 GB sebelum anda menambah sebarang cache.
Kemudian, baca kadar kelajuan itu dengan jujur. Model 32B pada CPU berjalan sekitar 0.6 hingga 1.5 token sesaat, manakala model 70B sekitar 0.2 hingga 0.5 token sesaat. Jawapan 500 token daripada model 70B mengambil masa kira-kira dua puluh minit. Pada kadar itu, permintaan biasanya gagal sebelum model selesai kerana tamat masa client atau proxy di hadapan Ollama berlaku terlebih dahulu. Inilah punca ralat context deadline exceeded. Ini ialah alat pemprosesan kelompok. Berikan baris gilir dokumen kepada alat tersebut untuk diproses semalaman, dan kelajuan tidak penting. Letakkan alat itu di belakang tetingkap sembang, dan kelajuan menjadi sangat penting.
Penghalaan Mixture of Experts (MoE) mengubah pengiraan ini, dan ia merupakan satu perincian seni bina yang berbaloi untuk dipelajari. Model MoE menghantar setiap token melalui hanya sebahagian kecil daripada beratnya (weights). Model dengan jumlah 30B parameter dan 3B parameter aktif bagi setiap token memerlukan memori sebanyak 30B dan menjana kelajuan yang hampir sama dengan model padat (dense) 3B, kerana setiap token hanya membaca pakar yang aktif. Pada pelayan 32 GB, model MoE dengan saiz tersebut jauh lebih praktikal berbanding model padat 30B. Peraturan yang perlu diingat: jumlah parameter menentukan memori, manakala parameter aktif menentukan kelajuan.
Sejauh manakah kelajuan inferens CPU, secara jujur?
Menjana satu token memerlukan pembacaan setiap pemberat (weight) aktif daripada memori sekali. Tiada cara untuk mengelakkan perkara ini, jadi kelajuan penjanaan pada CPU ditentukan oleh lebar jalur memori (memory bandwidth) dan bukannya bilangan teras. Had maksimumnya adalah hasil bahagi: lebar jalur memori yang boleh digunakan dibahagikan dengan saiz pemberat dalam bait. VPS kongsi yang kecil secara realistik memberikan 10 hingga 25 GB sesaat merentasi vCPU-nya, jadi model bersaiz 4.8 GB mencapai had maksimum sekitar 2 hingga 5 token sesaat.
The data behind this chart
[
{
"label": "3B",
"tokens_per_second_low": 6,
"tokens_per_second_high": 14
},
{
"label": "8B",
"tokens_per_second_low": 3,
"tokens_per_second_high": 7
},
{
"label": "14B",
"tokens_per_second_low": 1.5,
"tokens_per_second_high": 3.5
},
{
"label": "32B",
"tokens_per_second_low": 0.6,
"tokens_per_second_high": 1.5
},
{
"label": "70B",
"tokens_per_second_low": 0.2,
"tokens_per_second_high": 0.5
}
]Itu adalah julat yang biasa dilaporkan pada perkakasan VPS biasa, bukan penanda aras bagi satu mesin. Angka anda bergantung pada generasi memori, bilangan saluran pada hos, dan berapa banyak jiran yang bersaing untuk mendapatkannya. Ukur kelajuan anda sendiri, menggunakan mana-mana tag model yang anda sudah miliki:
ollama run qwen3:4b --verbose "Write three sentences about disk latency."Ringkasan yang dicetak selepas jawapan berakhir dengan baris yang berbunyi eval rate: ... tokens/s. Itu ialah kelajuan penjanaan anda. Abaikan larian pertama dalam satu sesi, kerana load duration pada ringkasan yang sama merangkumi proses membaca pemberat daripada cakera. Mengukur token sesaat dengan betul merangkumi cara mendapatkan angka yang wajar untuk dibandingkan.
Dua keputusan sering mengejutkan pengguna di sini. Menambah vCPU berhenti membantu dengan cepat, kerana selepas kira-kira 8 teras, teras tambahan hanya menunggu memori dan bukannya melakukan pengiraan aritmetik. Dan pada pelan kongsi, arahan yang sama memberikan nombor yang berbeza dari jam ke jam, yang merupakan masa curi CPU daripada jiran yang bising (CPU steal time) dan bukannya disebabkan oleh sebarang konfigurasi anda yang salah.
Membaca prompt anda adalah tugas yang berbeza daripada menjana jawapan. Pemprosesan prompt terikat dengan pengiraan (compute bound), jadi ia berskala dengan teras, dan di sinilah GPU jauh lebih ke hadapan. Dokumen yang panjang mengambil masa beberapa minit untuk dibaca oleh CPU dan hanya beberapa saat oleh GPU. Itu adalah halangan pertama yang anda temui apabila menghalakan ejen pengekodan kepada model yang anda hos, kerana setiap pusingan menghantar semula konteks fail dan definisi alat sebelum satu token jawapan pun dikembalikan.
Apa yang berubah apabila anda menambah GPU
Pengiraan aritmetik tidak berubah, hanya kumpulan sumber yang digunakannya. VRAM ialah had keras, jadi tentukan kapasiti yang mencukupi sebelum anda menyewa:
- 8 GB VRAM memuatkan model 7B atau 8B pada 4-bit dengan konteks yang singkat.
- 16 GB memuatkan model 14B pada 4-bit dengan konteks sebenar, atau 8B pada 8-bit.
- 24 GB memuatkan model 32B pada 4-bit dengan konteks yang singkat.
- 48 GB ke atas memuatkan model 70B pada 4-bit dengan ruang untuk cache dan konkurensi.
Apabila model tidak muat, Ollama akan membahagikannya: sebahagian lapisan pada GPU, selebihnya pada CPU. ollama ps melaporkan pembahagian tersebut dalam lajur PROCESSOR, sebagai contoh 78%/22% CPU/GPU. Anggap perkara itu sebagai amaran dan bukannya ciri. Bahagian CPU akan menentukan kelajuan, kerana setiap token masih perlu menunggu lapisan tersebut selesai diproses. Oleh itu, model dengan satu perempat lapisannya pada CPU akan berjalan pada kelajuan yang lebih hampir kepada kelajuan CPU berbanding kelajuan GPU. Jika anda melihat pembahagian yang tidak disengajakan, kurangkan panjang konteks terlebih dahulu. Cache biasanya merupakan punca penggunaan memori melebihi had.
Konkurensi adalah sebab lain untuk meningkatkan saiz sumber. Berat model dikongsi antara permintaan serentak, tetapi setiap permintaan aktif memerlukan cache KV sendiri. Oleh itu, sepuluh pengguna serentak bagi model 8B pada konteks 8k memerlukan sepuluh kali ganda 1 GB cache sebagai tambahan kepada berat model. Menyediakan perkhidmatan kepada pengguna serentak daripada satu model yang dihoskan sendiri menghuraikan di mana had tersebut berada.
Sama ada GPU berbaloi untuk disewa juga merupakan persoalan aritmetik, dan ia bergantung kepada jumlah token yang anda jana setiap bulan. Titik pulang modal antara VPS GPU dan token API mengandungi angka-angka tersebut.
Perkara yang tidak boleh dihoskan sendiri
Terdapat dua halangan berbeza di sini, dan adalah berguna untuk mengetahui halangan mana yang sedang anda hadapi.
Yang pertama ialah pemberat tertutup (closed weights). Model komersial sempadan tidak diedarkan, jadi tiada fail untuk dimuat turun dan tiada perubahan RAM yang dapat mengatasi perkara ini. Anda boleh menghoskan sendiri segala-galanya di sekeliling model tersebut: antara muka, lapisan perolehan (retrieval layer), gelung ejen, dan log. Model itu sendiri kekal sebagai API jauh. Sama ada anda boleh menghoskan sendiri Claude membincangkan perkara ini dengan sepenuhnya.
Yang kedua ialah pemberat terbuka yang terlalu besar. Keluaran terbuka yang terbesar adalah reka bentuk campuran pakar (mixture of experts) yang mempunyai jumlah parameter mencecah ratusan bilion. Peraturan yang sama terpakai kepada model tersebut: model dengan jumlah 400B parameter pada 4 bit memerlukan kira-kira 240 GB hanya untuk pemberat, sebelum mengambil kira sebarang cache. Ini memerlukan perkakasan khusus, dan menyewanya secara bulanan menelan kos yang jauh lebih tinggi daripada jumlah yang dibelanjakan oleh kebanyakan orang untuk token API dalam setahun. Apa yang diperlukan untuk menghoskan sendiri model kelas Kimi memperincikan keperluan sebenar. Perbezaan yang sama muncul dalam pustaka Ollama sendiri, di mana GLM 5.2 disenaraikan hanya sebagai model awan dan varian yang jauh lebih kecil adalah model yang sebenarnya boleh dimuat turun ke dalam VPS.
Garis panduan yang jujur antara kedua-duanya: hoskan sendiri apabila beban adalah stabil dan data tidak sepatutnya meninggalkan pelayan anda. Beli token apabila beban adalah tidak menentu (bursty), atau apabila kualiti jawapan sempadan adalah perkara yang sebenarnya anda perlukan.
Semak apa yang anda miliki sebelum membuat pilihan
free -h
nproc
lscpu | grep 'Model name'Rancang berdasarkan lajur available dalam free -h, bukan lajur total, kerana total merangkumi memori yang sedang digunakan oleh sistem. Tolak kira-kira 1 GB untuk sistem pengendalian dan pelayan model. Bahagikan baki tersebut dengan 0.6 untuk mendapatkan jumlah parameter terbesar dalam bilion yang boleh dimuatkan pada 4 bit. Kemudian, tolak KV cache untuk konteks yang anda benar-benar perlukan. Baki yang tinggal adalah jawapan anda, dan tidak seperti senarai nama model, ia tidak akan menjadi lapuk.
FAQ
Berapakah RAM yang diperlukan untuk menjalankan model 8B?
Sekitar 4.8 GB untuk pemberat (weights) pada kuantisasi 4-bit, ditambah dengan KV cache untuk panjang konteks anda, serta kira-kira 1 GB untuk sistem pengendalian dan pelayan model. Pada konteks 8192 token, cache menambah kira-kira 1 GB, jadi pelan 8 GB mencukupi manakala pelan 4 GB tidak. Jika anda mahukan konteks 128k penuh seperti yang diiklankan pada kad model, cache sahaja memerlukan 16 GB dan anda memerlukan pelan 32 GB.
Mengapakah model saya perlahan walaupun VPS mempunyai banyak vCPU?
Ini kerana penjanaan dihadkan oleh lebar jalur memori (memory bandwidth), bukan oleh teras (cores). Setiap token memerlukan penarikan keseluruhan set pemberat aktif daripada RAM, jadi sebaik sahaja beberapa teras menepukan saluran memori, teras yang lain hanya menunggu. Punca biasa yang lain ialah swap. Jika vmstat 1 menunjukkan nilai bukan sifar pada si dan so semasa model sedang menjawab, pemberat tidak dimuatkan sepenuhnya ke dalam RAM dan sebahagian daripada setiap token dihidangkan daripada cakera, yang memakan masa jauh lebih lama daripada jangkaan.
Adakah tetingkap konteks yang lebih panjang benar-benar memerlukan lebih banyak memori?
Ya, dan pertumbuhannya adalah linear mengikut token. Model 8B tipikal menggunakan kira-kira 128 KiB KV cache bagi setiap token, jadi 8192 token memerlukan 1 GB dan 131072 token memerlukan 16 GB. Cache diperuntukkan apabila model dimuatkan dan bukannya apabila perbualan berkembang, jadi menetapkan konteks 128k akan menempah memori tersebut serta-merta, walaupun setiap prompt yang anda hantar hanya sepanjang 200 token.
Patutkah saya menjalankan model besar pada 2-bit atau model lebih kecil pada 4-bit?
Pilih model yang lebih kecil pada 4-bit. Kualiti menurun secara perlahan daripada 8-bit kepada 4-bit dan menurun dengan pantas di bawah 4-bit, jadi model 70B yang dimampatkan kepada 2-bit biasanya memberikan jawapan yang lebih buruk daripada model 32B pada 4-bit daripada generasi model yang sama. Kuantisasi yang berat akan menyebabkan pengulangan dan arahan yang terlepas (dropped instructions) dan bukannya mesej ralat, yang memudahkan anda menyalahkan prompt anda. Jadikan 4-bit sebagai tahap minimum dan ubah bilangan parameter sebaliknya.
Bolehkah saya mengehos sendiri model yang setanding dengan model komersial besar?
Tidak pada VPS biasa. Model berat terbuka (open weight models) yang paling berkuasa mempunyai ratusan bilion parameter, yang pada 4-bit bermakna lebih 200 GB RAM sebelum sebarang KV cache, dan model komersial yang paling berkuasa tidak diedarkan sama sekali. Apa yang boleh dilakukan oleh perkakasan biasa dengan baik ialah menjalankan model 8B hingga 32B yang bagus untuk satu tugasan khusus, di mana model kecil yang sempit dan mempunyai prompt yang baik sering kali menandingi model umum. Jika anda memerlukan kualiti tahap tertinggi, bandingkan harga API dengan perkakasan sebelum anda membeli mana-mana daripadanya.