code: def gpu_with_max_free_mem():
      "get [gpu_id, its_free_ram] for the first gpu with highest available RAM"
      mem_all = gpu_mem_get_all()
      if not len(mem_all): return None, 0
      free_all = np.array([x.free for x in mem_all])
      id = np.argmax(free_all)
      return id, free_all[idf gpu_with_max_free_mem():
      "get [gpu_id, its_free_ram] for the first gpu with highest available RAM"
      mem_all = gpu_mem_get_all()
      if not len(mem_all): return None, 0
      free_all = np.array([x.free for x in mem_all])
      id = np.argmax(free_all)
      return id, free_all[id]
docs: get [gpu_id, its_free_ram] for the first gpu with highest available RAM