diff --git a/apps/assets/automations/gather_facts/format_asset_info.py b/apps/assets/automations/gather_facts/format_asset_info.py
index d3184bf59..0aed98b0e 100644
--- a/apps/assets/automations/gather_facts/format_asset_info.py
+++ b/apps/assets/automations/gather_facts/format_asset_info.py
@@ -1,3 +1,5 @@
+from collections import Counter
+
 __all__ = ['FormatAssetInfo']
 
 
@@ -7,13 +9,37 @@ class FormatAssetInfo:
         self.tp = tp
 
     @staticmethod
-    def posix_format(info):
-        for cpu_model in info.get('cpu_model', []):
-            if cpu_model.endswith('GHz') or cpu_model.startswith("Intel"):
-                break
-        else:
-            cpu_model = ''
-        info['cpu_model'] = cpu_model[:48]
+    def get_cpu_model_count(cpus):
+        try:
+            models = [cpus[i + 1] + " " + cpus[i + 2] for i in range(0, len(cpus), 3)]
+
+            model_counts = Counter(models)
+
+            result = ', '.join([f"{model} x{count}" for model, count in model_counts.items()])
+        except Exception as e:
+            print(f"Error processing CPU model list: {e}")
+            result = ''
+
+        return result
+
+    @staticmethod
+    def get_gpu_model_count(gpus):
+        try:
+            model_counts = Counter(gpus)
+
+            result = ', '.join([f"{model} x{count}" for model, count in model_counts.items()])
+        except Exception as e:
+            print(f"Error processing GPU model list: {e}")
+            result = ''
+
+        return result
+
+    def posix_format(self, info):
+        cpus = self.get_cpu_model_count(info.get('cpu_model', []))
+        gpus = self.get_gpu_model_count(info.get('gpu_model', []))
+
+        info['gpu_model'] = gpus
+        info['cpu_model'] = cpus
         info['cpu_count'] = info.get('cpu_count', 0)
         return info
 
diff --git a/apps/assets/automations/gather_facts/host/posix/main.yml b/apps/assets/automations/gather_facts/host/posix/main.yml
index 0b083c94b..9acfc7e7e 100644
--- a/apps/assets/automations/gather_facts/host/posix/main.yml
+++ b/apps/assets/automations/gather_facts/host/posix/main.yml
@@ -23,5 +23,16 @@
           arch: "{{ ansible_architecture }}"
           kernel: "{{ ansible_kernel }}"
 
+
+    - name: Get GPU info with nvidia-smi
+      shell: |
+        nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader,nounits
+      register: gpu_info
+      ignore_errors: yes
+
+    - name: Merge GPU info into final info
+      set_fact:
+        info: "{{ info | combine({'gpu_model': gpu_info.stdout_lines | default([])}) }}"
+
     - debug:
         var: info
diff --git a/apps/assets/serializers/asset/info/gathered.py b/apps/assets/serializers/asset/info/gathered.py
index 71722c072..6474d08fc 100644
--- a/apps/assets/serializers/asset/info/gathered.py
+++ b/apps/assets/serializers/asset/info/gathered.py
@@ -6,7 +6,7 @@ class HostGatheredInfoSerializer(serializers.Serializer):
     vendor = serializers.CharField(max_length=64, required=False, allow_blank=True, label=_('Vendor'))
     model = serializers.CharField(max_length=54, required=False, allow_blank=True, label=_('Model'))
     sn = serializers.CharField(max_length=128, required=False, allow_blank=True, label=_('Serial number'))
-    cpu_model = serializers.CharField(max_length=64, allow_blank=True, required=False, label=_('CPU model'))
+    cpu_model = serializers.CharField(allow_blank=True, required=False, label=_('CPU model'))
     cpu_count = serializers.CharField(max_length=64, required=False, allow_blank=True, label=_('CPU count'))
     cpu_cores = serializers.CharField(max_length=64, required=False, allow_blank=True, label=_('CPU cores'))
     cpu_vcpus = serializers.CharField(max_length=64, required=False, allow_blank=True, label=_('CPU vcpus'))
@@ -17,6 +17,8 @@ class HostGatheredInfoSerializer(serializers.Serializer):
     distribution_version = serializers.CharField(max_length=16, allow_blank=True, required=False, label=_('OS version'))
     arch = serializers.CharField(max_length=16, allow_blank=True, required=False, label=_('OS arch'))
 
+    gpu_model = serializers.CharField(allow_blank=True, required=False, label=_('GPU model'))
+
 
 category_gathered_serializer_map = {
     'host': HostGatheredInfoSerializer,