본문 바로가기
노코딩AI/AI설명

확장자에 ckpt 말고 safetensors가 붙는 이유는 뭘까? safetensors란?

by 노마드랩스 2023. 3. 4.
728x90
반응형

safetensors란?

safetensors는 AI 모델의 데이터를 저장하고 배포하기 위한 새로운 형식으로, HuggingFace가 주도적으로 개발하고 있습니다. safetensors는 기존의 ckpt 형식의 여러 단점을 개선하기 위해 만들어졌으며, 웹 UI에서 쉽게 불러오고 사용할 수 있습니다. safetensors는 JSON 헤더와 바이너리 텐서 데이터로 구성되어 있으며, 리틀 엔디언 방식을 사용합니다.

 

기존 ckpt의 단점은?

ckpt 형식은 텐서플로우에서 모델의 가중치나 그래프를 저장하는 파일입니다. ckpt 형식의 단점은 다음과 같습니다.

1. 모델의 구조나 코드를 저장하지 않으므로, 별도의 파이썬 파일이 필요합니다.
2. 형식은 특정한 파이썬 직렬화 방식을 사용하므로, 다른 언어나 프레임워크와 호환되지 않습니다.
3. 형식은 여러 개의 파일로 구성되므로, 관리하기 어렵고 용량이 큽니다.

 

그럼 ckpt를 Safetensor로 바꿨을 때 장점은?

safetensors 형식은 ckpt 형식의 단점을 다음과 같이 개선합니다.

1. 모델의 구조와 코드를 JSON 헤더에 저장하므로, 별도의 파이썬 파일이 필요하지 않습니다.
2. 형식은 리틀 엔디언 방식을 사용하므로, 다른 언어나 프레임워크와 호환될 수 있습니다.
3. 형식은 하나의 파일로 구성되므로, 관리하기 쉽고 용량이 작습니다.

 

보안측면에서 ckpt와 safetensor 비교?

ckpt와 safetensor는 AI 모델을 저장하고 불러오는 파일 형식입니다. ckpt는 피클화 파일로 임의의 파이썬 코드를 포함할 수 있어 악성 코드의 위험이 있습니다. safetensor는 이러한 위험을 방지하기 위해 개발된 안전한 형식으로 ckpt보다 빠르다고도 합니다.

 

safetensor를 만드는 방법은?

safetensor를 만드는 방법은 huggingface의 safetensors 라이브러리를 사용하는 것입니다. 이 라이브러리는 텐서를 저장하고 불러오는 간단한 API를 제공하며 ckpt 파일을 safetensor로 변환하는 기능도 있습니다. safetensor 파일은 .safetensors 확장자를 가지며 텐서의 이름과 크기를 메타데이터로 저장합니다1. safetensor 파일을 만들려면 다음과 같은 코드를 사용할 수 있습니다.

예시 코드를 실행하려면 safetensors 라이브러리를 설치해야 합니다.

python에 safetensors 라이브러리 설치하고 실행해주세요.

명령어는 다음과 같습니다.

 

pip install safetensors

 

safetensor 코드 예시

import torch
from safetensors import SafeTensor

# Create a tensor
x = torch.randn(3, 4)

# Save it as a safetensor file
SafeTensor.save("x.safetensors", x)

# Load it back
y = SafeTensor.load("x.safetensors")

 

결과값

오늘은 ckpt와 safetensor에 대해 알아보았습니다.

2023.03.12 - [노코딩AI/AI설명] - diffusion의 확장 모델인 dreambooth에 대해 알아보고 이미지 생성해보기

2023.03.12 - [노코딩AI/AI설명] - diffusion 모델 중 LoRA 모델에 대해 알아보고 이미지 생성해보기

2023.04.03 - [노코딩AI/Stable Diffusion] - 스테이블 디퓨전 Web UI Colab으로 5분 안에 설치하는 방법

 

https://github.com/huggingface/safetensors

 

GitHub - huggingface/safetensors: Simple, safe way to store and distribute tensors

Simple, safe way to store and distribute tensors. Contribute to huggingface/safetensors development by creating an account on GitHub.

github.com

https://huggingface.co/docs/safetensors/index

 

Safetensors

 

huggingface.co

 

728x90
반응형

댓글