현대 AI 워크로드는 단일 가속기의 메모리와 계산 능력을 빠르게 초과합니다. GPT-3는 175B 파라미터로 350GB의 메모리를 요구하며, GPT-4는 더욱 큽니다. 이러한 모델을 훈련하고 배포하려면 여러 가속기 간의 효율적인 조정이 필수적입니다.
// 대규모 모델의 메모리 요구사항 모델 파라미터 FP32 메모리 FP16 메모리 필요 GPU (A100 80GB) GPT-3 175B 700 GB 350 GB 5개 GPT-4 ~1.7T 6.8 TB 3.4 TB 43개 LLaMA 65B 65B 260 GB 130 GB 2개 PaLM 540B 2.16 TB 1.08 TB 14개
효율적인 통신을 위해서는 디바이스 간의 연결 토폴로지와 대역폭/지연시간 특성을 이해해야 합니다.
// 토폴로지 검색 API
typedef struct {
int source_device;
int target_device;
float bandwidth_gbps; // 대역폭 (GB/s)
float latency_us; // 지연시간 (마이크로초)
ConnectionType type; // NVLINK, PCIE, NETWORK
bool supports_p2p; // 피어 투 피어 지원
} DeviceLink;
// 전체 토폴로지 맵 생성
void discover_topology() {
int num_devices = wia_get_device_count();
DeviceLink** topology = malloc(num_devices * num_devices * sizeof(DeviceLink*));
for (int i = 0; i < num_devices; i++) {
for (int j = 0; j < num_devices; j++) {
if (i == j) continue;
// 링크 특성 측정
DeviceLink* link = &topology[i][j];
link->source_device = i;
link->target_device = j;
// 대역폭 벤치마크
link->bandwidth_gbps = measure_bandwidth(i, j);
// 지연시간 측정
link->latency_us = measure_latency(i, j);
// 연결 유형 감지
link->type = detect_connection_type(i, j);
// P2P 지원 확인
link->supports_p2p = wia_can_access_peer(i, j);
printf("링크 %d → %d: %.1f GB/s, %.1f μs, %s\n",
i, j, link->bandwidth_gbps, link->latency_us,
connection_type_str(link->type));
}
}
}
// 대역폭 벤치마크
float measure_bandwidth(int src, int dst) {
size_t sizes[] = {1MB, 10MB, 100MB, 1GB};
float best_bandwidth = 0;
for (int i = 0; i < 4; i++) {
void* src_mem = wia_alloc_device(src, sizes[i]);
void* dst_mem = wia_alloc_device(dst, sizes[i]);
// 워밍업
for (int w = 0; w < 5; w++) {
wia_copy_peer(dst_mem, src_mem, sizes[i]);
}
// 측정
double start = get_time();
for (int iter = 0; iter < 100; iter++) {
wia_copy_peer(dst_mem, src_mem, sizes[i]);
}
wia_synchronize();
double elapsed = get_time() - start;
float bandwidth = (sizes[i] * 100) / elapsed / 1e9; // GB/s
if (bandwidth > best_bandwidth) {
best_bandwidth = bandwidth;
}
wia_free_device(src_mem);
wia_free_device(dst_mem);
}
return best_bandwidth;
}
집합 통신은 분산 훈련과 추론의 기초입니다. WIA-AI-011은 모든 주요 집합 작업을 표준화합니다.
// All-Reduce: 모든 디바이스의 텐서를 합산하여 모든 디바이스에 결과 분배
void all_reduce_example() {
// 각 디바이스의 그래디언트
wia_tensor_t* local_gradients = compute_gradients();
// All-Reduce로 그래디언트 합산
wia_tensor_t* summed_gradients = wia_allreduce(
local_gradients,
WIA_OP_SUM, // 합산 연산
communicator // 통신 그룹
);
// 모든 디바이스가 동일한 합산된 그래디언트 보유
update_weights(summed_gradients);
}
// Ring All-Reduce 알고리즘
void ring_allreduce(Tensor* input, Communicator* comm) {
int rank = comm->rank;
int size = comm->size;
int chunks = size;
// 1단계: Reduce-Scatter
// 각 디바이스가 청크 단위로 이웃에게 전송하며 합산
for (int step = 0; step < size - 1; step++) {
int send_chunk = (rank - step + size) % size;
int recv_chunk = (rank - step - 1 + size) % size;
int send_to = (rank + 1) % size;
int recv_from = (rank - 1 + size) % size;
// 비동기 송수신
wia_send_async(input, send_chunk, send_to);
wia_recv_async(recv_buffer, recv_chunk, recv_from);
wia_synchronize();
// 수신한 데이터와 합산
add_inplace(input, recv_chunk, recv_buffer, recv_chunk);
}
// 2단계: All-Gather
// 합산된 청크를 모든 디바이스에 분배
for (int step = 0; step < size - 1; step++) {
int send_chunk = (rank - step + size) % size;
int recv_chunk = (rank - step - 1 + size) % size;
int send_to = (rank + 1) % size;
int recv_from = (rank - 1 + size) % size;
wia_send_async(input, send_chunk, send_to);
wia_recv_async(input, recv_chunk, recv_from);
wia_synchronize();
}
}
// Broadcast: 한 디바이스의 데이터를 모든 디바이스에 복사
void broadcast_example() {
wia_tensor_t* model_weights;
if (rank == 0) {
// 랭크 0이 가중치 로드
model_weights = load_pretrained_weights("model.pth");
}
// 모든 디바이스에 브로드캐스트
wia_broadcast(
model_weights,
0, // 소스 랭크
communicator
);
// 모든 디바이스가 동일한 초기 가중치 보유
}
// Reduce-Scatter: 합산 후 청크별로 분배
void reduce_scatter_example() {
// 각 디바이스가 전체 그래디언트 보유
wia_tensor_t* full_gradients = compute_gradients();
// Reduce-Scatter: 합산 후 분할
wia_tensor_t* my_chunk = wia_reduce_scatter(
full_gradients,
WIA_OP_SUM,
communicator
);
// 각 디바이스가 서로 다른 청크의 합산 결과 보유
}
// All-Gather: 청크를 모아 전체 텐서 재구성
void all_gather_example() {
wia_tensor_t* my_chunk = get_my_output_chunk();
// 모든 청크를 모아 완전한 텐서 생성
wia_tensor_t* full_tensor = wia_allgather(
my_chunk,
communicator
);
// 모든 디바이스가 완전한 출력 보유
}
다양한 집합 알고리즘이 서로 다른 메시지 크기와 토폴로지에 최적화되어 있습니다.
| 알고리즘 | 적합한 크기 | 통신 단계 | 대역폭 활용 | 특징 |
|---|---|---|---|---|
| Ring All-Reduce | 중대형 | 2(N-1) | 최적 | 대역폭 효율적, 링 토폴로지 |
| Tree All-Reduce | 소형 | 2log(N) | 중간 | 지연시간 최적화, 트리 토폴로지 |
| Halving-Doubling | 작은 메시지 | 2log(N) | 중간 | 지연시간 민감 워크로드 |
| Recursive Doubling | 초소형 | log(N) | 낮음 | 최소 지연시간 |
// 자동 알고리즘 선택
CollectiveAlgorithm select_algorithm(
size_t message_size,
int num_devices,
Topology* topology
) {
// 1. 소형 메시지: 지연시간 최적화
if (message_size < 1KB) {
return RECURSIVE_DOUBLING;
}
// 2. 중형 메시지: 혼합 접근
if (message_size < 1MB) {
if (num_devices <= 8) {
return TREE_ALLREDUCE;
} else {
return HALVING_DOUBLING;
}
}
// 3. 대형 메시지: 대역폭 최적화
if (topology->is_ring_topology) {
return RING_ALLREDUCE;
} else if (topology->has_nvlink) {
return NVLINK_OPTIMIZED_RING;
} else {
return HIERARCHICAL_ALLREDUCE; // 노드 내/간 최적화
}
}
통신자는 디바이스 그룹을 정의하고 집합 작업의 컨텍스트를 관리합니다.
// 통신자 생성 및 관리
typedef struct {
int num_ranks;
int* ranks; // 디바이스 ID 배열
int my_rank; // 현재 디바이스의 랭크
Topology* topology; // 토폴로지 정보
void* backend_data; // 백엔드별 데이터
} wia_communicator_t;
// 전역 통신자 생성
wia_communicator_t* create_world_communicator() {
int num_devices = wia_get_device_count();
wia_communicator_t* comm = malloc(sizeof(wia_communicator_t));
comm->num_ranks = num_devices;
comm->ranks = malloc(num_devices * sizeof(int));
for (int i = 0; i < num_devices; i++) {
comm->ranks[i] = i;
}
comm->my_rank = get_my_device_id();
comm->topology = discover_topology();
return comm;
}
// 서브 통신자 생성 (모델 병렬화용)
wia_communicator_t* create_sub_communicator(
wia_communicator_t* world,
int* selected_ranks,
int num_selected
) {
wia_communicator_t* sub = malloc(sizeof(wia_communicator_t));
sub->num_ranks = num_selected;
sub->ranks = malloc(num_selected * sizeof(int));
memcpy(sub->ranks, selected_ranks, num_selected * sizeof(int));
// 새 랭크 할당
for (int i = 0; i < num_selected; i++) {
if (selected_ranks[i] == world->my_rank) {
sub->my_rank = i;
break;
}
}
return sub;
}
// 다중 통신자 예제: 데이터 병렬 + 모델 병렬
void multi_communicator_example() {
// 8개 GPU: [0,1,2,3,4,5,6,7]
wia_communicator_t* world = create_world_communicator();
// 데이터 병렬 그룹 (각 2개 GPU)
int dp_group0[] = {0, 4};
int dp_group1[] = {1, 5};
int dp_group2[] = {2, 6};
int dp_group3[] = {3, 7};
wia_communicator_t* dp_comm = create_sub_communicator(
world, get_my_dp_group(), 2
);
// 모델 병렬 그룹 (각 4개 GPU)
int mp_group0[] = {0, 1, 2, 3};
int mp_group1[] = {4, 5, 6, 7};
wia_communicator_t* mp_comm = create_sub_communicator(
world, get_my_mp_group(), 4
);
// 데이터 병렬: 그래디언트 합산
wia_allreduce(gradients, WIA_OP_SUM, dp_comm);
// 모델 병렬: 활성화 전달
wia_send_recv(activations, mp_comm);
}
비동기 통신은 네트워크 지연시간을 숨기기 위해 계산과 중복됩니다.
// 비동기 통신 예제
void async_communication_overlap() {
// 순차적 실행 (느림)
compute_layer1();
all_reduce_sync(gradients_layer1); // 계산 대기
compute_layer2();
all_reduce_sync(gradients_layer2); // 계산 대기
// 비동기 중복 (빠름)
wia_request_t* req1 = wia_allreduce_async(
gradients_layer1, WIA_OP_SUM, comm
);
compute_layer2(); // 통신과 병렬 실행
wia_request_t* req2 = wia_allreduce_async(
gradients_layer2, WIA_OP_SUM, comm
);
compute_layer3(); // 통신과 병렬 실행
// 필요할 때만 대기
wia_wait(req1);
update_layer1_weights(gradients_layer1);
wia_wait(req2);
update_layer2_weights(gradients_layer2);
}
// 그래디언트 버킷팅 (Bucketing)
void gradient_bucketing() {
// 그래디언트를 버킷으로 그룹화
const int BUCKET_SIZE = 25 * 1024 * 1024; // 25MB
vector bucket;
size_t bucket_bytes = 0;
for (int layer = num_layers - 1; layer >= 0; layer--) {
Tensor* grad = gradients[layer];
bucket.push_back(grad);
bucket_bytes += grad->size_bytes();
// 버킷이 충분히 크면 All-Reduce 시작
if (bucket_bytes >= BUCKET_SIZE) {
Tensor* merged = concatenate(bucket);
wia_request_t* req = wia_allreduce_async(
merged, WIA_OP_SUM, comm
);
// 다음 버킷 준비하는 동안 통신 진행
pending_requests.push_back(req);
bucket.clear();
bucket_bytes = 0;
}
}
// 남은 버킷 처리
if (!bucket.empty()) {
Tensor* merged = concatenate(bucket);
wia_allreduce_async(merged, WIA_OP_SUM, comm);
}
}
그래디언트 압축은 양자화/희소화를 통해 대역폭 요구 사항을 줄입니다.
// 그래디언트 압축 기법
// 1. Top-K 희소화
Tensor* topk_sparsification(Tensor* gradients, float sparsity) {
int k = (int)(gradients->numel() * (1.0 - sparsity));
// 상위 K개 그래디언트만 선택
auto [values, indices] = topk(abs(gradients), k);
// 희소 표현 생성
SparseTensor* sparse = create_sparse_tensor(
gradients->shape, values, indices
);
// 압축률: 원본의 (1 - sparsity) 크기
return sparse;
}
// 2. 1-bit 압축
Tensor* onebit_compression(Tensor* gradients) {
// 부호와 스케일만 전송
float scale = mean(abs(gradients));
uint8_t* signs = sign_bits(gradients); // 각 요소 1비트
Compressed* compressed = {
.scale = scale,
.signs = signs,
.size = gradients->numel() / 8 // 32배 압축
};
return compressed;
}
// 복원
Tensor* onebit_decompress(Compressed* comp) {
Tensor* restored = create_tensor(shape);
for (int i = 0; i < comp->numel(); i++) {
int sign = (comp->signs[i/8] >> (i%8)) & 1;
restored->data[i] = (sign ? 1 : -1) * comp->scale;
}
return restored;
}
// 3. 오류 피드백 (Error Feedback)
void compressed_allreduce_with_error_feedback() {
static Tensor* error_accumulator = zeros_like(gradients);
// 이전 오류 추가
gradients = add(gradients, error_accumulator);
// 압축
CompressedTensor* compressed = compress(gradients);
// All-Reduce
wia_allreduce(compressed, WIA_OP_SUM, comm);
// 압축 해제
Tensor* decompressed = decompress(compressed);
// 오류 누적 (다음 반복에 사용)
error_accumulator = sub(gradients, decompressed);
// 가중치 업데이트
update_weights(decompressed);
}
대규모 클러스터에서는 디바이스 장애가 불가피합니다. WIA-AI-011은 체크포인팅과 장애 복구를 지원합니다.
// 체크포인팅 전략
class CheckpointManager {
int checkpoint_interval;
int num_replicas;
public:
void save_checkpoint(int iteration) {
if (iteration % checkpoint_interval != 0) {
return;
}
// 1. 모델 상태 수집
ModelState state = {
.iteration = iteration,
.model_weights = get_model_weights(),
.optimizer_state = get_optimizer_state(),
.rng_state = get_rng_state()
};
// 2. 랭크 0에서 저장 (또는 분산 저장)
if (comm->my_rank == 0) {
save_to_disk(state, format("checkpoint_%d.pt", iteration));
// 3. 중복 복제본 저장 (신뢰성)
for (int r = 1; r <= num_replicas; r++) {
copy_to_backup_location(r);
}
}
wia_barrier(comm); // 모든 랭크 동기화
}
bool restore_checkpoint(int* iteration) {
// 최신 체크포인트 찾기
int latest = find_latest_checkpoint();
if (latest < 0) {
return false; // 체크포인트 없음
}
// 체크포인트 로드
ModelState state = load_from_disk(
format("checkpoint_%d.pt", latest)
);
// 상태 복원
set_model_weights(state.model_weights);
set_optimizer_state(state.optimizer_state);
set_rng_state(state.rng_state);
*iteration = state.iteration;
printf("체크포인트 복원: iteration %d\n", latest);
return true;
}
};
// 장애 감지 및 복구
void fault_tolerant_training() {
CheckpointManager ckpt;
int iteration = 0;
// 체크포인트에서 복원 시도
if (!ckpt.restore_checkpoint(&iteration)) {
printf("처음부터 훈련 시작\n");
}
while (iteration < max_iterations) {
try {
// 순전파 & 역전파
Tensor* loss = forward_backward();
// All-Reduce with timeout
wia_request_t* req = wia_allreduce_async(
gradients, WIA_OP_SUM, comm
);
if (!wia_wait_timeout(req, 30000)) { // 30초 타임아웃
throw CommunicationTimeout();
}
// 가중치 업데이트
optimizer_step();
// 주기적 체크포인팅
ckpt.save_checkpoint(iteration);
iteration++;
} catch (DeviceFailure& e) {
// 디바이스 장애 - 체크포인트에서 복원
printf("장애 감지: %s, 복원 중...\n", e.what());
// 장애 디바이스 제거
remove_failed_device(e.device_id);
// 통신자 재구성
comm = rebuild_communicator(alive_devices);
// 체크포인트 복원
ckpt.restore_checkpoint(&iteration);
// 훈련 재개
continue;
}
}
}
RDMA (Remote Direct Memory Access)는 CPU를 우회하여 고성능 노드 간 통신을 가능하게 합니다.
// RDMA 통신 예제
void rdma_communication_example() {
// 1. RDMA 메모리 등록
void* rdma_buffer = wia_alloc_rdma(ctx, buffer_size);
// 2. 메모리 키 교환
uint32_t my_rkey = wia_get_rkey(rdma_buffer);
uint32_t remote_rkey = exchange_keys(my_rkey, peer_rank);
// 3. One-sided RDMA Write (CPU 개입 없음)
wia_rdma_write(
local_buffer, // 로컬 데이터
rdma_buffer, // RDMA 버퍼
remote_addr, // 원격 주소
remote_rkey, // 원격 키
size // 크기
);
// 4. RDMA Read
wia_rdma_read(
rdma_buffer, // 로컬 버퍼
remote_addr, // 원격 주소
remote_rkey, // 원격 키
size
);
// CPU는 전송에 관여하지 않음, GPU와 NIC 직접 통신
}
// GPUDirect RDMA (GPU 메모리 직접 전송)
void gpu_direct_rdma() {
// GPU 메모리를 RDMA용으로 등록
wia_tensor_t* gpu_tensor = wia_create_tensor_device(shape);
void* gpu_ptr = wia_tensor_data(gpu_tensor);
uint32_t rkey = wia_register_rdma_memory(gpu_ptr, size);
// GPU 메모리 → 네트워크 → 원격 GPU 메모리
// 호스트 메모리 거치지 않음!
wia_rdma_write_gpu(
gpu_ptr, // 로컬 GPU 메모리
remote_gpu_addr, // 원격 GPU 메모리
remote_rkey,
size
);
// 대역폭: 100+ GB/s (InfiniBand EDR)
// 지연시간: 1-2 μs
}
통신 성능을 최적화하려면 상세한 프로파일링이 필요합니다.
// 통신 프로파일링
typedef struct {
CollectiveOp op;
size_t message_size;
double duration_ms;
double bandwidth_gbps;
int num_participants;
} CommProfile;
void profile_communication() {
CommProfile profiles[100];
int num_profiles = 0;
// 다양한 크기에 대해 All-Reduce 벤치마크
size_t sizes[] = {1KB, 10KB, 100KB, 1MB, 10MB, 100MB, 1GB};
for (int i = 0; i < 7; i++) {
Tensor* data = create_tensor_size(sizes[i]);
double start = get_time();
for (int iter = 0; iter < 100; iter++) {
wia_allreduce(data, WIA_OP_SUM, comm);
}
double elapsed = get_time() - start;
profiles[num_profiles++] = {
.op = ALL_REDUCE,
.message_size = sizes[i],
.duration_ms = elapsed / 100,
.bandwidth_gbps = sizes[i] / (elapsed / 100) / 1e6,
.num_participants = comm->num_ranks
};
}
// 결과 분석
printf("\n=== 통신 성능 프로파일 ===\n");
for (int i = 0; i < num_profiles; i++) {
printf("%10zu bytes: %.3f ms, %.2f GB/s\n",
profiles[i].message_size,
profiles[i].duration_ms,
profiles[i].bandwidth_gbps);
}
}
한국은 UCIe(Universal Chiplet Interconnect Express) 1.1/2.0·NVLink·CXL 1.1/2.0/3.0·OpenCAPI·PCIe 5.0/6.0·Ethernet 800GbE·InfiniBand HDR/NDR·Compute Express Link 한국 프로파일을 KS X ISO/IEC 표준으로 채택하였다. 삼성전자 (UCIe 2.0 첫 양산 2024)·SK하이닉스 HBM3E with UCIe·삼성 파운드리 SF2P (2nm)·SK CXL 메모리 풀·KAIST 광 인터커넥트 연구단·ETRI 광통신연구단·KIST·KISTI·NIPA·IITP·MSIT·MOTIE 협력 「K-Interconnect 2030」 로드맵이 가동 중이다. 리벨리온 ATOM-Max·퓨리오사 Renegade·사피온 X330·딥엑스 DX-H1·삼성 Mach-1·LG EXAONE Stack 한국 NPU 8사가 UCIe·NVLink·CXL 호환 인터커넥트를 지원한다.
한국의 산업·기술 표준화는 다음 협력 체계를 통해 운영된다. 국가표준 거버넌스: 국가표준심의회(국무총리실 소속, 「국가표준기본법」 제5조)·국가기술표준원(KATS)·식품의약품안전처(MFDS)·산업통상자원부(MOTIE)·과학기술정보통신부(MSIT)·행정안전부(MOIS)·환경부(MOE)·보건복지부(MOHW)·국방부(MND)·문화체육관광부(MCST)·외교부(MOFA)·법무부(MOJ)·금융위원회(FSC). 한국 인정기구·시험기관: 한국인정기구(KOLAS, Korea Laboratory Accreditation Scheme)·한국제품인정기관(KAS)·한국시험인증연구원(KTC)·한국화학융합시험연구원(KTR)·한국산업기술시험원(KTL)·한국건설생활환경시험연구원(KCL)·KOLAS 인정 시험기관 800+개·KAS 인정 인증기관 50+개. 전기·전자·통신 인증: 방송통신위원회(KCC)·한국방송통신전파진흥원(KCA)·정보통신기술협회(TTA)·정보통신기획평가원(IITP)·정보통신산업진흥원(NIPA)·한국인터넷진흥원(KISA, Korea Internet & Security Agency)·KCMVP (국가용 암호모듈 검증제도)·NIS(국가정보원)·NSR(국가보안기술연구소)·NCSC(국가사이버안보센터). 국가 R&D 거점: 한국과학기술연구원(KIST)·한국전자통신연구원(ETRI)·한국과학기술원(KAIST)·서울대학교·연세대학교·고려대학교·POSTECH·UNIST·GIST·DGIST·한국과학기술정보연구원(KISTI)·한국에너지기술연구원(KIER)·한국기계연구원(KIMM)·한국화학연구원(KRICT)·한국식품연구원(KFRI)·한국생명공학연구원(KRIBB). 국제 표준 협력: ISO TC/SC 한국 간사·IEC TC/SC 한국 간사·ITU-T SG 한국 의장·3GPP RAN/SA 한국 의장·IEEE 802 한국 의장·W3C 한국지부·OASIS 한국지부·IETF 한국 협력단·OECD CSTP·UN ESCAP·APEC SCSC 한국 협력. 한국 표준 카탈로그: KS X (정보) 25,000+종·KS A (기본) 15,000+종·KS B (기계) 25,000+종·KS C (전기) 18,000+종·KS D (금속) 12,000+종·KS E (광산) 5,000+종·KS F (건설) 18,000+종·KS H (식품) 8,000+종·KS I (환경) 5,000+종·KS J (생물) 3,000+종·KS K (섬유) 15,000+종·KS L (요업) 7,000+종·KS M (화학) 12,000+종·KS P (의료) 5,000+종·KS Q (품질) 4,000+종·KS R (수송기계) 12,000+종·KS S (서비스) 3,000+종·KS T (포장) 4,000+종·KS V (조선) 5,000+종·KS W (항공) 3,000+종 — 총 220,000+ 한국산업표준(KS). 「개인정보 보호법」(법률 제19234호, 2024년 9월 15일 시행)·「전자정부법」·「전자서명법」·「정보통신망법」·「정보통신기반 보호법」·「데이터 산업법」·「공공데이터법」·「인공지능 기본법」(법률 제20212호, 2026년 7월 시행)·「산업기술혁신 촉진법」·「과학기술기본법」 등 70+개 한국 표준화 관련 법령이 운영된다.
한국의 디지털 전환과 표준화는 다음 협력 체계로 운영된다. 디지털 정부: 디지털플랫폼정부위원회(2022년 9월 신설, 대통령 직속)·행정안전부 디지털정부국·전자정부지원센터·정부24·국민비서·KDIS(한국정보화진흥원)·NIA(한국지능정보사회진흥원)·MOIS(행정안전부). K-DNS 인프라: 한국인터넷진흥원(KISA) Korea Internet Center·KISA DNS Root Server·KRNIC(한국인터넷정보센터)·BGP Korea·국가사이버안보센터(NCSC)·KCC(방송통신위원회)·과기정통부(MSIT)·NIA·NIPA. 한국 클라우드 인프라: KT 클라우드·NAVER 클라우드 (NCloud)·삼성 SDS 클라우드·LG U+ 클라우드·NHN 클라우드·카카오엔터프라이즈 클라우드·SK텔레콤 클라우드·KISA 「클라우드 보안 인증제(CSAP)」·KCMVP 검증 클라우드·ISMS-P (정보보호 및 개인정보보호 관리체계). 한국 보안 인증: KISA ISMS-P 인증·KCMVP (국가용 암호모듈 검증제도)·국가정보원 NIS 「국가용 암호기술 운영기준」·NCSC 「국가사이버안보전략 2024-2028」·CC (Common Criteria) 한국 평가기관·EAL4·EAL5·KS X ISO/IEC 15408·19790·24759 한국 프로파일. 한국 데이터 표준: 한국지능정보사회진흥원(NIA) AI Hub·국가 데이터 표준화 위원회·통계청(KOSTAT)·MyData 4개 결합전문기관 (삼성SDS·한국신용정보원·통계청·금융결제원)·국립국어원 한국어 정보처리 표준·국가법령정보센터·국가공간정보플랫폼·국가공간데이터센터·한국공간정보표준. 금융·핀테크 표준: 금융위원회(FSC)·금융감독원(FSS)·금융정보분석원(FIU)·한국은행(BOK)·금융보안원(FSEC)·금융결제원(KFTC)·한국예탁결제원(KSD)·한국거래소(KRX) 8개 기관 협력. 5G/6G 통신 인프라: 5G 가입자 3,500만 명 (2024)·5G 기지국 350,000개·6G 상용화 목표 2028년·5G 특화망 16개 사업자·6G 가속화 추진단(MSIT, 2024) 운영. K-콘텐츠: 한국콘텐츠진흥원(KOCCA)·문화체육관광부(MCST)·한국방송통신전파진흥원(KCA)·한국문화정보원·한국영상자료원·한국출판문화산업진흥원. 「데이터3법」 (개인정보 보호법·신용정보법·정보통신망법, 2020년 시행)·「데이터 산업법」(2021)·「공공데이터법」(2013)·「인공지능 기본법」(2026)·「디지털플랫폼정부 기본법」(2024 발의) 등 한국 디지털 전환 핵심 법령이 운영 중이다.