7장: 메타데이터 및 버전 관리

모델 계보, 재현성 및 거버넌스

弘益人間 · 널리 인간을 이롭게 하라

7.1 메타데이터의 중요성

메타데이터는 모델에 대한 데이터입니다 - 모델이 어떻게 생성되었는지, 무엇을 하는지, 어떻게 사용하는지를 설명하는 정보입니다. 적절한 메타데이터는 재현성을 가능하게 하고, 협업을 촉진하며, 규정 준수를 보장하고, 프로덕션 환경에서 모델 거버넌스를 지원합니다.

필수 메타데이터 카테고리

7.2 포괄적 메타데이터 스키마

신경망 모델을 위한 잘 구조화된 메타데이터 스키마:

{
  "model_info": {
    "name": "ResNet50-ImageNet",
    "version": "2.1.0",
    "description": "ImageNet-1K 데이터셋으로 훈련된 ResNet-50",
    "task": "image_classification",
    "domain": "computer_vision",
    "license": "Apache-2.0",
    "created_date": "2025-01-15T10:30:00Z",
    "modified_date": "2025-01-20T14:22:00Z"
  },

  "authors": [
    {
      "name": "AI 연구팀",
      "email": "research@company.com",
      "organization": "회사 AI 연구소"
    }
  ],

  "training": {
    "framework": "pytorch",
    "framework_version": "2.1.0",
    "dataset": {
      "name": "ImageNet-1K",
      "version": "2012",
      "num_samples": 1281167,
      "num_classes": 1000,
      "split": "train",
      "preprocessing": "resize_224_normalize"
    },
    "hyperparameters": {
      "batch_size": 256,
      "learning_rate": 0.1,
      "optimizer": "SGD",
      "momentum": 0.9,
      "weight_decay": 0.0001,
      "epochs": 90,
      "lr_schedule": "step_decay",
      "augmentation": ["random_crop", "horizontal_flip"]
    },
    "hardware": {
      "gpus": "8x NVIDIA V100",
      "training_time_hours": 48
    }
  },

  "performance": {
    "metrics": {
      "top1_accuracy": 0.761,
      "top5_accuracy": 0.931,
      "loss": 0.932
    },
    "evaluation_dataset": "ImageNet-1K val",
    "inference_latency_ms": {
      "batch_1_cpu": 45.2,
      "batch_1_gpu": 3.8,
      "batch_32_gpu": 28.5
    }
  },

  "deployment": {
    "target_platforms": ["cloud", "edge", "mobile"],
    "min_memory_mb": 256,
    "recommended_hardware": "GPU with 4GB+ VRAM",
    "serving_framework": ["torchserve", "tensorflow_serving", "onnx_runtime"]
  }
}

7.3 모델 버전 관리 전략

모델 버전에 시맨틱 버저닝(SemVer)을 사용하세요:

시맨틱 버저닝 형식

MAJOR.MINOR.PATCH

예시:
  1.0.0 → 초기 릴리스
  1.1.0 → 새로운 기능 (데이터 증강 추가)
  1.1.1 → 버그 수정 (전처리 수정)
  2.0.0 → 호환성 없는 변경 (다른 입력 형식)

규칙:
  MAJOR: 호환되지 않는 API/아키텍처 변경
  MINOR: 하위 호환되는 기능 추가
  PATCH: 하위 호환되는 버그 수정

버전 관리 구현

import json
from pathlib import Path
from datetime import datetime

class ModelVersion:
    """모델 버전 관리 클래스"""

    def __init__(self, major, minor, patch):
        self.major = major
        self.minor = minor
        self.patch = patch

    def __str__(self):
        return f"{self.major}.{self.minor}.{self.patch}"

    def bump_major(self):
        return ModelVersion(self.major + 1, 0, 0)

    def bump_minor(self):
        return ModelVersion(self.major, self.minor + 1, 0)

    def bump_patch(self):
        return ModelVersion(self.major, self.minor, self.patch + 1)

class ModelRegistry:
    """모델 레지스트리"""

    def __init__(self, registry_path="models/registry.json"):
        self.registry_path = Path(registry_path)
        self.load()

    def load(self):
        if self.registry_path.exists():
            with open(self.registry_path) as f:
                self.data = json.load(f)
        else:
            self.data = {"models": {}}

    def save(self):
        self.registry_path.parent.mkdir(parents=True, exist_ok=True)
        with open(self.registry_path, 'w') as f:
            json.dump(self.data, f, indent=2, ensure_ascii=False)

    def register_model(self, name, version, metadata):
        """모델 등록"""
        if name not in self.data["models"]:
            self.data["models"][name] = {"versions": {}}

        version_str = str(version)
        self.data["models"][name]["versions"][version_str] = {
            **metadata,
            "registered_at": datetime.utcnow().isoformat()
        }
        self.save()

    def get_latest_version(self, name):
        """최신 버전 가져오기"""
        if name not in self.data["models"]:
            return None

        versions = self.data["models"][name]["versions"].keys()
        latest = max(versions, key=lambda v: tuple(map(int, v.split('.'))))
        return latest

# 사용 예
registry = ModelRegistry()
version = ModelVersion(1, 0, 0)

metadata = {
    "description": "초기 ResNet50 모델",
    "accuracy": 0.761,
    "model_path": "models/resnet50_v1.0.0.pth"
}

registry.register_model("ResNet50", version, metadata)
print(f"최신 버전: {registry.get_latest_version('ResNet50')}")

7.4 모델 카드

모델 카드는 Google의 모델 카드 프레임워크를 따르는 표준화된 문서를 제공합니다:

# 모델 카드: ResNet50-ImageNet

## 모델 세부사항
- **개발자:** 회사 AI 연구소
- **모델 날짜:** 2025년 1월
- **모델 버전:** 2.1.0
- **모델 유형:** 합성곱 신경망 (CNN)
- **라이선스:** Apache 2.0

## 의도된 사용
- **주요 사용 목적:** 1000개 ImageNet 클래스의 이미지 분류
- **주요 사용자:** 연구자, 개발자, 기업
- **범위 외 사용:** 의료 진단, 감시, 해악

## 훈련 데이터
- 데이터셋: ImageNet-1K (ILSVRC 2012)
- 128만 훈련 이미지, 1000개 클래스
- 데이터 증강: 랜덤 크롭, 수평 뒤집기, 색상 지터

## 평가 데이터
- ImageNet-1K 검증 세트 (5만 이미지)
- 훈련과 동일한 전처리

## 성능
| 메트릭 | 값 |
|--------|-------|
| Top-1 정확도 | 76.1% |
| Top-5 정확도 | 93.1% |
| 추론 (GPU) | 3.8ms |

## 한계
- ImageNet 클래스로만 훈련됨
- 분포 외 이미지에서 성능 저하
- ImageNet 데이터셋의 편향 포함 가능

## 윤리적 고려사항
- ImageNet으로 훈련된 모델은 클래스 불균형 존재
- 얼굴 인식이나 감시에 사용 금지
- 편향 평가 완료 (규정 준수 문서 참조)

## 주의사항 및 권장사항
- 최상의 결과를 위해 도메인별 데이터로 미세 조정
- 프로덕션에서 분포 이동 모니터링
- 정기적 재훈련 권장 (분기별)

7.5 모델 계보 추적

import hashlib
import json
from dataclasses import dataclass, asdict
from typing import List, Optional

@dataclass
class ModelLineage:
    """모델 계보 정보"""
    model_id: str
    version: str
    parent_model_id: Optional[str]
    parent_version: Optional[str]
    training_data_hash: str
    code_commit_hash: str
    created_at: str
    created_by: str
    modifications: List[str]

    def compute_fingerprint(self):
        """이 모델 버전의 고유 지문 계산"""
        data = f"{self.model_id}{self.version}{self.training_data_hash}"
        return hashlib.sha256(data.encode()).hexdigest()

class LineageTracker:
    """계보 추적 시스템"""

    def __init__(self, storage_path="lineage.json"):
        self.storage_path = storage_path
        self.lineage_db = {}
        self.load()

    def load(self):
        try:
            with open(self.storage_path) as f:
                data = json.load(f)
                self.lineage_db = {
                    k: ModelLineage(**v) for k, v in data.items()
                }
        except FileNotFoundError:
            pass

    def save(self):
        with open(self.storage_path, 'w') as f:
            data = {k: asdict(v) for k, v in self.lineage_db.items()}
            json.dump(data, f, indent=2, ensure_ascii=False)

    def record(self, lineage: ModelLineage):
        """계보 기록"""
        key = f"{lineage.model_id}:{lineage.version}"
        self.lineage_db[key] = lineage
        self.save()

    def get_ancestry(self, model_id: str, version: str):
        """전체 조상 체인 가져오기"""
        ancestry = []
        current_id, current_version = model_id, version

        while current_id:
            key = f"{current_id}:{current_version}"
            if key not in self.lineage_db:
                break

            lineage = self.lineage_db[key]
            ancestry.append(lineage)

            current_id = lineage.parent_model_id
            current_version = lineage.parent_version

        return ancestry

# 사용 예
tracker = LineageTracker()

# 초기 모델 기록
initial = ModelLineage(
    model_id="resnet50",
    version="1.0.0",
    parent_model_id=None,
    parent_version=None,
    training_data_hash="a1b2c3...",
    code_commit_hash="xyz789",
    created_at="2025-01-15T10:00:00Z",
    created_by="researcher@company.com",
    modifications=["ImageNet에서 초기 훈련"]
)
tracker.record(initial)

# 미세 조정된 버전 기록
finetuned = ModelLineage(
    model_id="resnet50",
    version="1.1.0",
    parent_model_id="resnet50",
    parent_version="1.0.0",
    training_data_hash="d4e5f6...",
    code_commit_hash="abc123",
    created_at="2025-01-20T14:00:00Z",
    created_by="engineer@company.com",
    modifications=["도메인별 데이터로 미세 조정", "데이터 증강 추가"]
)
tracker.record(finetuned)

# 조상 가져오기
ancestry = tracker.get_ancestry("resnet50", "1.1.0")
for i, lineage in enumerate(ancestry):
    print(f"세대 {i}: {lineage.version} by {lineage.created_by}")

7.6 실험 추적 통합

MLflow 통합

import mlflow
import mlflow.pytorch

# 실험 시작
mlflow.set_experiment("resnet50-imagenet")

with mlflow.start_run(run_name="v2.1.0"):
    # 파라미터 로깅
    mlflow.log_param("batch_size", 256)
    mlflow.log_param("learning_rate", 0.1)
    mlflow.log_param("optimizer", "SGD")

    # 훈련 루프
    for epoch in range(num_epochs):
        train_loss = train_one_epoch()
        val_acc = validate()

        # 메트릭 로깅
        mlflow.log_metric("train_loss", train_loss, step=epoch)
        mlflow.log_metric("val_accuracy", val_acc, step=epoch)

    # 모델 로깅
    mlflow.pytorch.log_model(
        model,
        "model",
        registered_model_name="ResNet50"
    )

    # 아티팩트 로깅
    mlflow.log_artifact("config.yaml")
    mlflow.log_artifact("training_log.txt")

    # 태그 설정
    mlflow.set_tag("version", "2.1.0")
    mlflow.set_tag("task", "image_classification")
    mlflow.set_tag("status", "production")

7.7 모델 파일에 메타데이터 포함

PyTorch

import torch

# 메타데이터와 함께 모델 저장
torch.save({
    'model_state_dict': model.state_dict(),
    'optimizer_state_dict': optimizer.state_dict(),
    'epoch': epoch,
    'metadata': {
        'version': '2.1.0',
        'accuracy': 0.761,
        'training_data': 'ImageNet-1K',
        'created_at': '2025-01-15',
        'framework_version': torch.__version__
    }
}, 'model_with_metadata.pth')

# 로드 및 메타데이터 액세스
checkpoint = torch.load('model_with_metadata.pth')
print(f"모델 버전: {checkpoint['metadata']['version']}")
print(f"정확도: {checkpoint['metadata']['accuracy']}")

ONNX

import onnx
from onnx import helper

# 모델 로드
model = onnx.load("model.onnx")

# 메타데이터 추가 (doc_string 사용)
model.doc_string = """
모델: ResNet50
버전: 2.1.0
정확도: 76.1%
데이터셋: ImageNet-1K
생성일: 2025-01-15
"""

# 저장
onnx.save(model, "model_with_metadata.onnx")

7.8 데이터 버전 관리

import hashlib
from pathlib import Path

class DataVersioning:
    """데이터셋 버전 관리"""

    @staticmethod
    def hash_dataset(dataset_path):
        """전체 데이터셋 해시 계산"""
        hasher = hashlib.sha256()

        for file_path in sorted(Path(dataset_path).rglob('*')):
            if file_path.is_file():
                with open(file_path, 'rb') as f:
                    while chunk := f.read(8192):
                        hasher.update(chunk)

        return hasher.hexdigest()

    @staticmethod
    def hash_file_list(file_list):
        """파일 목록 해시 계산 (대용량 데이터셋용)"""
        hasher = hashlib.sha256()
        for path in sorted(file_list):
            hasher.update(str(path).encode())
        return hasher.hexdigest()

# 모델과 함께 데이터 버전 추적
data_hash = DataVersioning.hash_dataset("./data/imagenet")

model_metadata = {
    "model_version": "2.1.0",
    "data_version": data_hash,
    "data_source": "ImageNet-1K",
    "data_download_date": "2025-01-10"
}

7.9 재현성 체크리스트

완전한 재현성 요구사항

  1. 코드 버전: Git 커밋 해시
  2. 종속성: 고정된 버전의 requirements.txt
  3. 데이터 버전: 데이터셋 해시 또는 버전
  4. 난수 시드: 모든 난수 생성기 시드
  5. 하드웨어: GPU/CPU 모델 및 드라이버 버전
  6. 하이퍼파라미터: 완전한 구성 파일
  7. 훈련 로그: 전체 훈련 출력 및 메트릭
  8. 환경: Docker 이미지 또는 conda 환경

7.10 거버넌스 및 규정 준수

class ModelGovernance:
    """엔터프라이즈 모델 거버넌스 프레임워크"""

    def __init__(self):
        self.approval_workflow = [
            "technical_review",
            "security_review",
            "bias_assessment",
            "privacy_review",
            "legal_approval"
        ]

    def submit_for_approval(self, model_id, version):
        """승인 제출"""
        approval_record = {
            "model_id": model_id,
            "version": version,
            "submitted_at": datetime.utcnow().isoformat(),
            "status": "pending",
            "reviews": {}
        }

        for review_type in self.approval_workflow:
            approval_record["reviews"][review_type] = {
                "status": "pending",
                "reviewer": None,
                "comments": None,
                "approved_at": None
            }

        return approval_record

    def complete_review(self, approval_record, review_type,
                       approved, reviewer, comments):
        """검토 완료"""
        approval_record["reviews"][review_type] = {
            "status": "approved" if approved else "rejected",
            "reviewer": reviewer,
            "comments": comments,
            "approved_at": datetime.utcnow().isoformat()
        }

        # 전체 상태 업데이트
        all_approved = all(
            review["status"] == "approved"
            for review in approval_record["reviews"].values()
        )

        if all_approved:
            approval_record["status"] = "approved"
        elif any(review["status"] == "rejected"
                for review in approval_record["reviews"].values()):
            approval_record["status"] = "rejected"

        return approval_record

요약

복습 문제

  1. 신경망 모델의 다섯 가지 필수 메타데이터 카테고리는 무엇인가요?
  2. 시맨틱 버저닝을 설명하고 각 구성 요소를 증가시키는 시기는?
  3. 이미지 분류 모델을 위한 포괄적 메타데이터 스키마를 작성하세요.
  4. 모델 카드가 모델 문서화와 투명성을 어떻게 개선하나요?
  5. 부모-자식 관계를 기록하는 모델 계보 추적기를 구현하세요.
  6. 실험 추적을 위한 MLflow와 Weights & Biases를 비교하세요.
  7. PyTorch와 ONNX 모델에 메타데이터를 포함하는 방법은?
  8. 대용량 데이터셋 버전 관리를 위한 전략을 설명하세요.
  9. 완전한 재현성에 필요한 정보는 무엇인가요?
  10. 프로덕션 모델 승인을 위한 거버넌스 워크플로우를 설계하세요.
弘益人間 (홍익인간) · 널리 인간을 이롭게 하라

한국 통신 인프라 매핑 (제7장)

한국 통신 인프라 — 과기정통부(MSIT)·방송통신위원회(KCC)·정보통신기획평가원(IITP)·정보통신산업진흥원(NIPA)·KISA·NIS·KCMVP·TTA·KATS·KOLAS·NIA·ETRI·KAIST·KIST·POSTECH·삼성·LG·SK·KT·LG U+·NAVER·카카오 협력 「제5차 정보통신 전략 2024-2028」 운영. 「전기통신사업법」·「정보통신망법」·「전파법」·「방송법」·「개인정보 보호법」·「위치정보법」 적용. KS X 3GPP 4G LTE/5G NR/6G·KS X IETF 시리즈·KS X IEEE 802.11/802.15·KS X ITU-T G/H/Y 시리즈·KS X ISO/IEC 27000 시리즈 한국 프로파일 적용. 5G 가입자 3,500만 명 (2024)·6G 상용화 목표 2028년.

한국 디지털 전환·표준화 상세 매핑

한국의 디지털 전환과 표준화는 다음 협력 체계로 운영된다. 디지털 정부: 디지털플랫폼정부위원회(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 발의) 등 한국 디지털 전환 핵심 법령이 운영 중이다.

한국 산업·연구·교육 인프라 종합 매핑

한국의 산업 생태계와 표준화 체계는 다음 핵심 인프라로 구성된다. 한국 5대 그룹: 삼성·현대자동차·LG·SK·롯데. 각 그룹별 표준화 위원회와 ISO/IEC TC 한국 간사 활동. 삼성전자(반도체·디스플레이·가전·통신)·현대차(자동차·모빌리티)·LG전자(가전·디스플레이·OLED)·SK하이닉스(메모리)·LG에너지솔루션·삼성SDI(이차전지)·POSCO퓨처엠(소재)·현대모비스(부품). 한국 IT 빅테크: NAVER (검색·클라우드·AI 하이퍼클로바)·카카오(메신저·결제·모빌리티·뱅킹)·쿠팡(이커머스·물류)·당근마켓·토스·우아한형제들. 한국 통신3사: SK텔레콤·KT·LG U+. 5G·5G 특화망·B2B 클라우드·AI 사업 운영. 한국 7대 거점 대학: 서울대·KAIST·POSTECH·연세대·고려대·UNIST·DGIST·GIST. 모두 표준화 R&D 거점이며 ISO/IEC/IEEE 한국 의장 활동 중. 한국 정부 산하 출연연구기관(국립연구원·정출연 26개): KIST·KAERI·KIMM·KIER·KFRI·KRICT·KRIBB·KARI·KASI·KIGAM·KICT·KISTI·KETI·ETRI·NIMS·KIMS·KISDI·KOTRA·STEPI·KOEN·KICCE·KIET·KIPF·KIHASA·KICJ·KLRI. 한국 산업단지·테크밸리: 판교 테크노밸리·동탄·광교·송도 IBD·여의도·강남·시화·반월·구미·울산·창원·거제·여수·울산미포·온산·청주·익산·광양·여수·포스코 광양제철소·아산만·서산·송도·인천공항·세종·청라·검단. 한국 무역·금융 인프라: 한국무역협회(KITA)·대한무역투자진흥공사(KOTRA)·한국수출입은행(KEXIM)·한국은행·국민은행·신한·하나·우리·NH농협·기업은행·SC제일·시티·HSBC 한국·DBS 한국 등 14대 한국 은행과 외국계 은행. 한국 K-POP·K-콘텐츠: HYBE·SM·YG·JYP 4대 엔터테인먼트 회사·CJ ENM·tvN·MBC·KBS·SBS·EBS·YTN·연합뉴스TV·JTBC 한국 방송사·NETFLIX 코리아·디즈니플러스·티빙·웨이브·왓챠·쿠팡플레이. 한국 게임 산업: 넥슨·엔씨소프트·크래프톤·넷마블·카카오게임즈·펄어비스·컴투스·게임빌·NHN·스마일게이트·웹젠. 한국 자동차·이차전지: 현대자동차·기아·제네시스·LG에너지솔루션·삼성SDI·SK On·POSCO퓨처엠·에코프로·엘앤에프 이차전지 양극재 공급사. 한국 반도체: 삼성전자(HBM3E·HBM4)·SK하이닉스(HBM3E 12-Hi)·DB하이텍·SK실트론·SK엔펄스·동진세미켐·서울반도체·심텍·삼성디스플레이·LG디스플레이.

한국 표준화 인프라 종합 매핑

한국의 산업·기술 표준화는 다음 협력 체계를 통해 운영된다. 국가표준 거버넌스: 국가표준심의회(국무총리실 소속, 「국가표준기본법」 제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+개 한국 표준화 관련 법령이 운영된다.