---
title: 角色切换
description: "主要用于在PD集群节点数量固定的场景下，由于业务的变化，期望PD集群节点间可以相互切换，充分利用资源。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/hixlug/llmcdv2_42_18.html
sourcePath: /source/zh/canncommercial/900/API/hixlug/llmcdv2_42_18.html
indexId: 5b78b8b6588769295092780cc34563e2c15d15849645f85e0aad87e0644d4d2b59
---
# 角色切换

#### 使用场景

主要用于在PD集群节点数量固定的场景下，由于业务的变化，期望PD集群节点间可以相互切换，充分利用资源。


#### 涉及的接口

调用SetRole接口对LLM-DataDist的角色进行切换，并通过option切换Client或者Server。


#### 功能示例

示例由角色Decoder切换为Prompt， 从Client切换为Server。切换角色后，根据业务功能调用LLM-DataDist其他接口。

1. LLM-DataDist初始化。
  1 2 3 4 5 6 7 8 LlmDataDist llm_data_dist(DECODER_CLUSTER_ID, LlmRole::kDecoder); std::map<AscendString, AscendString> options; options[OPTION_DEVICE_ID] = "0"; auto ret = llm_data_dist.Initialize(options); if (ret != LLM_SUCCESS) { printf("[ERROR] Initialize failed, ret = %u\n", ret); return -1; }


2. 调用  SetRole
进行角色切换，Client切换为Server需指定侦听的Host IP和端口；Server切换为Client时，option不指定Host IP和端口。
  1 2 3 4 std::map<AscendString, AscendString> options; //替换成真实IP端口 options[OPTION_LISTEN_IP_INFO] = "ip:port"; llmDataDist.SetRole(LlmRole::kPrompt, options);


#### 异常处理

异常处理请参考LLM-DataDist错误码。
