𝗥𝘂𝗻𝗻𝗶𝗻𝗴 𝗧𝘄𝗼 𝗠𝗼𝗱𝗲𝗹𝘀 𝗼𝗻 𝗢𝗻𝗲 𝗚𝗣𝗨: 𝗧𝗵𝗲 𝗠𝗮𝘁𝗵 𝗕𝗲𝗵𝗶𝗻𝗱 𝗟𝗼𝗰𝗮𝗹 𝗟𝗟𝗠𝘀
ನಾನು ಒಂದು ವರ್ಕ್ಸ್ಟೇಷನ್ನಲ್ಲಿ ಏಜೆಂಟ್ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ರನ್ ಮಾಡುತ್ತಿದ್ದೇನೆ. ಮಾಡೆಲ್ಗಳು LAN ಮೂಲಕ DGX Spark ನಲ್ಲಿ ಇವೆ. ಮೆಮೊರಿಯನ್ನು ಉತ್ತಮವಾಗಿ ನಿರ್ವಹಿಸಲು ನಾನು Ollama ಬದಲಿಗೆ vLLM ಅನ್ನು ಬಳಸುತ್ತೇನೆ.
ಗುರಿ ಏನೆಂದರೆ ಏಕಕಾಲದಲ್ಲಿ ಎರಡು ಮಾಡೆಲ್ಗಳನ್ನು ರನ್ ಮಾಡುವುದು:
- ಭಾರೀ ರೀಸನಿಂಗ್ (reasoning) ಗಾಗಿ Qwen3-Next-80B.
- ವೇಗದ ಟರ್ನ್ಗಳಿಗಾಗಿ (fast turns) Qwen3-4B.
ಎರಡೂ ಮಾಡೆಲ್ಗಳು LiteLLM ಪ್ರೊಕ್ಸಿ ಮೂಲಕ ಒಂದೇ URL ಅನ್ನು ಬಳಸುತ್ತವೆ. ಸರಿಯಾದ ಗಣಿತವನ್ನು ಕಂಡುಹಿಡಿಯುವ ಮೊದಲು ಈ ಸೆಟಪ್ ಹಲವಾರು ಬಾರಿ ವಿಫಲವಾಯಿತು.
ಈ ಹೋರಾಟದಿಂದ ಕಲಿತ ಪಾಠಗಳು ಇಲ್ಲಿವೆ.
𝗧𝗵𝗲 𝗠𝗲𝗺𝗼𝗿𝘆 𝗧𝗿𝗮𝗽
gpu_memory_utilization ಸೆಟ್ಟಿಂಗ್ ಎನ್ನುವುದು ಲಭ್ಯವಿರುವ (free) ಮೆಮೊರಿಯ ಗುರಿಯಲ್ಲ. ಇದು ಒಟ್ಟು GPU ಮೆಮೊರಿಯ ಒಂದು ಭಾಗವಾಗಿದೆ.
ನಿಮ್ಮ ಬಳಿ 120 GB ಕಾರ್ಡ್ ಇದ್ದು, utilization ಅನ್ನು 0.80 ಎಂದು ಸೆಟ್ ಮಾಡಿದರೆ, vLLM ಒಟ್ಟು ಸಾಮರ್ಥ್ಯದ 96 GB ಅನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಇದು ಪ್ರಸ್ತುತ ಎಷ್ಟು ಮೆಮೊರಿ ಲಭ್ಯವಿದೆ ಎಂಬುದನ್ನು ನೋಡುವುದಿಲ್ಲ. ನೀವು ಎರಡು ಪ್ರಕ್ರಿಯೆಗಳನ್ನು (processes) ರನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದರೆ, ಅವುಗಳ ಶೇಕಡಾವಾರು ಮೊತ್ತವು 0.95 ಕ್ಕಿಂತ ಕಡಿಮೆ ಇರಬೇಕು. CUDA ಫ್ರೇಮ್ವರ್ಕ್ ಓವರ್ಹೆಡ್ (overhead) ಗಾಗಿ ನೀವು ಸ್ವಲ್ಪ ಜಾಗವನ್ನು ಬಿಡಲೇಬೇಕು.
𝗪𝗵𝗮𝘁 𝗛𝗮𝗽𝗽𝗲𝗻𝗲𝗱 𝗪𝗶𝘁𝗵 𝗧𝗵𝗲 𝗠𝗼𝗱𝗲𝗹𝘀
ನಾನು 80B ಮಾಡೆಲ್ನ Thinking ವರ್ಷನ್ ಅನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿದೆ. ಅದು ವಿಫಲವಾಯಿತು. ಮಾಡೆಲ್ <think> ಟ್ಯಾಗ್ಗಳ ಒಳಗೆ ರೀಸನಿಂಗ್ ಮಾಡುತ್ತಿತ್ತು ಆದರೆ ಎಂದಿಗೂ ಟೂಲ್ ಕಾಲ್ (tool call) ಅನ್ನು ಟ್ರಿಗ್ಗರ್ ಮಾಡುತ್ತಿರಲಿಲ್ಲ. ಅದು ಸುಮ್ಮನೆ ನಿಂತುಹೋಗುತ್ತಿತ್ತು.
ನಾನು 80B ಬ್ಯಾಕ್ಬೋನ್ ಅನ್ನು Instruct ವರ್ಷನ್ಗೆ ಬದಲಾಯಿಸಬೇಕಾಯಿತು. ಇದು ಏಜೆಂಟ್ ಸರಿಯಾಗಿ ಟೂಲ್ಗಳನ್ನು ಬಳಸಲು ಅನುವು ಮಾಡಿಕೊಟ್ಟಿತು.
𝗧𝗵𝗲 𝗔𝗰𝘁𝘂𝗮𝗹 𝗠𝗮𝘁𝗵 ಪರೀಕ್ಷೆಯ ನಂತರ, ನನ್ನ ಸೆಟಪ್ಗೆ ಈ ಅಂಕಿಅಂಶಗಳು ಕೆಲಸ ಮಾಡುತ್ತವೆ ಎಂದು ನಾನು ಕಂಡುಕೊಂಡೆ:
• Qwen3-Next-80B (0.80 ಟಾರ್ಗೆಟ್ನಲ್ಲಿ): ~87.8 GiB ನೈಜ ಮೆಮೊರಿಯನ್ನು ಬಳಸುತ್ತದೆ. • Qwen3-4B (0.10 ಟಾರ್ಗೆಟ್ನಲ್ಲಿ): ~13.8 GiB ನೈಜ ಮೆಮೊರಿಯನ್ನು ಬಳಸುತ್ತದೆ. • ಒಟ್ಟು ಬಳಕೆ: ~101.6 GiB. • ಲಭ್ಯವಿರುವ ಹೆಚ್ಚಿನ ಜಾಗ (Free headroom): ~18 GiB.
ನಾನು 80B ಅನ್ನು 0.85 ಕ್ಕೆ ಏರಿಸಿದರೆ, 4B ಮಾಡೆಲ್ ಪ್ರಾರಂಭವಾಗುತ್ತಿರಲಿಲ್ಲ. 80B ತುಂಬಾ ಹೆಚ್ಚು ಮೆಮೊರಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳುತ್ತಿತ್ತು, ಇದರಿಂದ 4B ಮಾಡೆಲ್ಗೆ ಬೇಕಾದ ಕನಿಷ್ಠ ಅವಶ್ಯಕತೆಗಳಿಗೂ ಜಾಗವಿರುತ್ತಿರಲಿಲ್ಲ.
𝗠𝘆 𝗣𝗹𝗮𝘆𝗯𝗼𝗼𝗸 𝗳𝗼𝗿 𝗖𝗼-𝗿𝗲𝘀𝗶𝗱𝗲𝗻𝘁 𝗠𝗼𝗱𝗲𝗹𝘀
- ಮೊದಲು ದೊಡ್ಡ ಮಾಡೆಲ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಿ.
- ಅದು ಸ್ಥಿರವಾಗಲು ಬಿಡಿ (Let it settle).
- ಬಳಸಲಾದ ನೈಜ ಮೆಮೊರಿಯನ್ನು ನೋಡಲು
nvidia-smiರನ್ ಮಾಡಿ. - ಉಳಿದಿರುವ ಫ್ರೀ ಮೆಮೊರಿಯಿಂದ 5 GB ಓವರ್ಹೆಡ್ ಅನ್ನು ಕಳೆದು, ಉಳಿದ ಜಾಗಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಸಣ್ಣ ಮಾಡೆಲ್ನ ಗಾತ್ರವನ್ನು ನಿರ್ಧರಿಸಿ.
- ಸ್ಥಿರತೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಎರಡೂ ಮಾಡೆಲ್ಗಳನ್ನು ಎರಡು ಬಾರಿ ರೀಸ್ಟಾರ್ಟ್ ಮಾಡಿ.
ನಿಮ್ಮ ಮೆಮೊರಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಊಹಿಸಬೇಡಿ. ನಿಮ್ಮ ವಾಸ್ತವವನ್ನು ನೋಡಲು ಈ ಕಮಾಂಡ್ ಬಳಸಿ:
nvidia-smi --query-gpu=memory.used --format=csv
ನಿಮ್ಮ ಟಾರ್ಗೆಟ್ ಅಲೋಕೇಶನ್ ಮತ್ತು ನಿಮ್ಮ ನೈಜ ಬಳಕೆ 10% ಕ್ಕಿಂತ ಹೆಚ್ಚು ವ್ಯತ್ಯಾಸವಾಗಿದ್ದರೆ, ನಿಮ್ಮ ಗಣಿತ ತಪ್ಪಾಗಿದೆ ಎಂದರ್ಥ. ನಿಮ್ಮ ಏಜೆಂಟ್ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ನಿಯೋಜಿಸುವ (deploy) ಮೊದಲು ಅದನ್ನು ಸರಿಪಡಿಸಿ.
Optional learning community: https://t.me/GyaanSetuAi