ਇੱਕ GPU 'ਤੇ ਦੋ ਮਾਡਲ ਚਲਾਉਣਾ: ਲੋਕਲ LLMs ਦੇ ਪਿੱਛੇ ਦਾ ਗਣਿਤ

ਮੈਂ ਇੱਕ ਵਰਕਸਟੇਸ਼ਨ 'ਤੇ ਇੱਕ ਏਜੰਟ ਸਟੈਕ ਚਲਾਉਂਦਾ ਹਾਂ। ਮਾਡਲ ਇੱਕ LAN ਰਾਹੀਂ DGX Spark 'ਤੇ ਸਥਿਤ ਹਨ। ਮੈਂ ਮੈਮੋਰੀ ਨੂੰ ਬਿਹਤਰ ਤਰੀਕੇ ਨਾਲ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਲਈ Ollama ਦੀ ਬਜਾਏ vLLM ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹਾਂ।

ਮਕਸਦ ਇੱਕੋ ਸਮੇਂ ਦੋ ਮਾਡਲ ਚਲਾਉਣਾ ਹੈ:

ਦੋਵੇਂ ਮਾਡਲ ਇੱਕ LiteLLM ਪ੍ਰੌਕਸੀ ਰਾਹੀਂ ਇੱਕ ਹੀ URL 'ਤੇ ਪਹੁੰਚਦੇ ਹਨ। ਸਹੀ ਗਣਿਤ ਲੱਭਣ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਸੈੱਟਅੱਪ ਕਈ ਵਾਰ ਫੇਲ੍ਹ ਹੋ ਗਿਆ।

ਸੰਘਰਸ਼ ਤੋਂ ਮਿਲੇ ਸਬਕ ਇੱਥੇ ਹਨ।

ਮੈਮੋਰੀ ਦਾ ਜਾਲ gpu_memory_utilization ਦੀ ਸੈਟਿੰਗ ਖਾਲੀ ਮੈਮੋਰੀ ਲਈ ਟਾਰਗੇਟ ਨਹੀਂ ਹੈ। ਇਹ ਕੁੱਲ GPU ਮੈਮੋਰੀ ਦਾ ਇੱਕ ਹਿੱਸਾ ਹੈ।

ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ 120 GB ਦਾ ਕਾਰਡ ਹੈ ਅਤੇ ਤੁਸੀਂ ਯੂਟੀਲਾਈਜ਼ੇਸ਼ਨ ਨੂੰ 0.80 'ਤੇ ਸੈੱਟ ਕਰਦੇ ਹੋ, ਤਾਂ vLLM ਕੁੱਲ ਸਮਰੱਥਾ ਵਿੱਚੋਂ 96 GB ਦਾਅਵਾ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ। ਇਹ ਇਸ ਗੱਲ ਵੱਲ ਨਹੀਂ ਦੇਖਦਾ ਕਿ ਇਸ ਸਮੇਂ ਕਿੰਨੀ ਮੈਮੋਰੀ ਖਾਲੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਦੋ ਪ੍ਰੋਸੈਸ ਚਲਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹੋ, ਤਾਂ ਉਹਨਾਂ ਦੇ ਪ੍ਰਤੀਸ਼ਤ ਦਾ ਜੋੜ 0.95 ਤੋਂ ਘੱਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਤੁਹਾਨੂੰ CUDA ਫਰੇਮਵਰਕ ਦੇ ਓਵਰਹੈੱਡ ਲਈ ਥਾਂ ਛੱਡਣੀ ਪਵੇਗੀ।

ਮਾਡਲਾਂ ਨਾਲ ਕੀ ਹੋਇਆ ਮੈਂ 80B ਮਾਡਲ ਦੇ Thinking ਵਰਜ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ। ਇਹ ਫੇਲ੍ਹ ਰਿਹਾ। ਮਾਡਲ <think> ਟੈਗ ਦੇ ਅੰਦਰ ਰੀਜ਼ਨਿੰਗ ਤਾਂ ਕਰਦਾ ਸੀ ਪਰ ਕਦੇ ਵੀ ਅਸਲ ਵਿੱਚ ਟੂਲ ਕਾਲ ਟ੍ਰਿਗਰ ਨਹੀਂ ਕਰਦਾ ਸੀ। ਇਹ ਬੱਸ ਰੁਕ ਜਾਂਦਾ ਸੀ।

ਮੈਨੂੰ 80B ਬੈਕਬੋਨ ਨੂੰ Instruct ਵਰਜ਼ਨ ਨਾਲ ਬਦਲਣਾ ਪਿਆ। ਇਸ ਨਾਲ ਏਜੰਟ ਨੂੰ ਟੂਲਸ ਦੀ ਸਹੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਮਿਲੀ।

ਅਸਲ ਗਣਿਤ ਟੈਸਟਿੰਗ ਤੋਂ ਬਾਅਦ, ਮੈਂ ਪਾਇਆ ਕਿ ਮੇਰੇ ਸੈੱਟਅੱਪ ਲਈ ਇਹ ਅੰਕੜੇ ਕੰਮ ਕਰਦੇ ਹਨ:

• Qwen3-Next-80B (0.80 ਟਾਰਗੇਟ 'ਤੇ): ~87.8 GiB ਅਸਲ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। • Qwen3-4B (0.10 ਟਾਰਗੇਟ 'ਤੇ): ~13.8 GiB ਅਸਲ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। • ਕੁੱਲ ਵਰਤੋਂ: ~101.6 GiB। • ਖਾਲੀ ਹੈੱਡਰੂਮ: ~18 GiB।

ਜੇਕਰ ਮੈਂ 80B ਨੂੰ 0.85 ਤੱਕ ਵਧਾਉਂਦਾ, ਤਾਂ 4B ਮਾਡਲ ਸ਼ੁਰੂ ਨਹੀਂ ਹੋ ਸਕਦਾ ਸੀ।