๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

๐Ÿ’ป Programming/AI & ML16

[pytorch] ๋ชจ๋ธ ์ผ๋ถ€๋ถ„๋งŒ ์ €์žฅํ•˜๊ธฐ/๋ถˆ๋Ÿฌ์˜ค๊ธฐ PyTorch์—์„œ๋Š” ๋ชจ๋ธ์˜ ์ผ๋ถ€๋ถ„๋งŒ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋ชจ๋ธ์˜ ํŠน์ • ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œ์–ดํ•˜๊ณ  ๋ชจ๋ธ์˜ ์ผ๋ถ€๋ถ„๋งŒ์„ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. ๋ชจ๋ธ์˜ ํŠน์ • ๋ถ€๋ถ„์„ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด PyTorch์—์„œ๋Š” state_dict์˜ ํŠน์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (state_dict๋Š” ๋ชจ๋ธ์˜ ๊ฐ€์ค‘์น˜์™€ ํŽธํ–ฅ ๋“ฑ์„ ํฌํ•จํ•˜๋Š” ์‚ฌ์ „(dictionary)์ด๋‹ค) ๋‹ค์Œ์€ ๋ชจ๋ธ์˜ ํŠน์ • ๋ถ€๋ถ„์„ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์ด๋‹ค. import torch import torch.nn as nn # ์˜ˆ์ œ ๋ชจ๋ธ ์ •์˜ class ExampleModel(nn.Module): def __init__(self): super(ExampleModel, self).__init__() self.layer1 = nn.Line.. 2023. 12. 9.
[ONNX] ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ONNX Runtime์œผ๋กœ CPU ํ™˜๊ฒฝ์—์„œ ๊ฐ€์†ํ™”ํ•˜๊ธฐ ์š”์ฆ˜์€ ์–ด์ง€๊ฐ„ํ•œ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ GPU ์—†์ด ๋Œ๋ฆฌ๊ธฐ ์–ด๋ ต์ง€๋งŒ, ๋˜ ์˜์™ธ๋กœ ๊ฐ€๋ฒผ์šด ๋ชจ๋ธ๋“ค์€ CPU ๋งŒ์œผ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ํด๋ผ์šฐ๋“œ ๋น„์šฉ๋„ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์˜จ๋ผ์ธ ์˜ˆ์ธก์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด CPU ํ™˜๊ฒฝ์—์„œ ์ธํผ๋Ÿฐ์Šคํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•ด ๋ณผ ๋งŒํ•˜๋‹ค. ๋ฌผ๋ก  CPU๋กœ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ์ธํผ๋Ÿฐ์Šค๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์ƒ๋‹นํžˆ ๋Š๋ฆฌ๋‹ค. ๋•Œ๋ฌธ์— ONNX ๋ชจ๋ธ ๋ณ€ํ™˜์„ ํ•˜๊ณ , ONNX runtime์œผ๋กœ ์ธํผ๋Ÿฐ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ์กฐ๊ธˆ์ด๋ผ๋„ ๋ชจ๋ธ ์ธํผ๋Ÿฐ์Šค ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ TensorRT์™€ ๋‹ฌ๋ฆฌ ONNX ๋ชจ๋ธ ๋ณ€ํ™˜์˜ ๊ฒฝ์šฐ ์ž…๋ ฅ ํ…์„œ ํฌ๊ธฐ ๋˜ํ•œ ๋™์ ์œผ๋กœ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ๋ฌผ๋ก  ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ์— ๋”ฐ๋ผ, ๋ชจ๋ธ์— ๋”ฐ๋ผ, ์ž…๋ ฅ ํ…์„œ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์†๋„ ํ–ฅ์ƒ์˜ ์ •๋„๊ฐ€ ๋‹ค๋ฅด๊ฑฐ๋‚˜, ์˜คํžˆ๋ ค ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด.. 2023. 11. 16.
[Model Inference] Pytorch 2.0 Compile ์‚ฌ์šฉ ํ›„๊ธฐ ๋ฐ ์žฅ๋‹จ์  | pytorch compile ๋ชจ๋ธ ์ถ”๋ก  ์†๋„ ๊ฐœ์„  ํ…Œ์ŠคํŠธ Pytorch Compile ํŠœํ† ๋ฆฌ์–ผ Pytorch 2.0 Overview Pytorch 2.0 compiled_model = torch.compile(model) ๊ธด ์„ค๋ช…ํ•  ๊ฒƒ ์—†์ด Pytorch 2.0 ์ดํ›„ compile ์ด๋ผ๋Š” ๊ฒƒ์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”๋ฐ, ์œ„ ์˜ˆ์‹œ์ฒ˜๋Ÿผ torch.comile(model)์ด๋ผ๋Š” ์งง์€ ์ฝ”๋“œ ํ•œ ์ค„๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ชจ๋ธ ์ธํผ๋Ÿฐ์Šค ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด A100 GPU์—์„œ ๋ชจ๋ธ ํ•™์Šต ์†๋„๋Š” 43% ํ–ฅ์ƒ๋˜๊ณ , ๋ชจ๋ธ ์ธํผ๋Ÿฐ์Šค ์†๋„๋Š” Float32 precision์—์„œ 21%, AMP precision์—์„œ 51% ์ •๋„ ํ–ฅ์ƒ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. Pytorch 2.0 Compile ๋ชจ๋ธ ์ธํผ๋Ÿฐ์Šค ํ…Œ์ŠคํŠธ torchvision์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ชจ๋ธ์ธ resnet50์œผ๋กœ p.. 2023. 10. 7.
[Model Inference] Torch-TensorRT ์‚ฌ์šฉ๋ฒ• | ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ์ตœ์ ํ™” ๋ฐ ์ธํผ๋Ÿฐ์Šค ๊ฐ€์†ํ™” Torch-TensorRT๋Š” PyTorch์™€ NVIDIA์˜ TensorRT๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์ตœ์ ํ™”ํ•˜๊ณ  ๊ฐ€์†ํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” PyTorch/TorchScript/FX์šฉ ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค. Torch-TensorRT๋Š” PyTorch ์ต์Šคํ…์…˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ JIT(Just In Time) ๋Ÿฐํƒ€์ž„์— ์›ํ• ํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜๋Š” ๋ชจ๋“ˆ์„ ์ปดํŒŒ์ผํ•œ๋‹ค. NVIDIA TensorRT๋Š” NVIDIA GPU์—์„œ ๋ชจ๋ธ์„ ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์ ํ™”๋œ ๋Ÿฐํƒ€์ž„ ์—”์ง„์œผ๋กœ, ํŠนํžˆ ๋”ฅ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ ๋” ํšจ์œจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ  ์ถ”๋ก (inference) ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ๊ธฐ์กด์— ํŒŒ์ด์ฌ์œผ๋กœ TensorRT๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์˜คํ”ˆ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ฐœ๋ฐœํ•œ torch2trt ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด์„œ pytorch ๋ชจ๋ธ์„ tenso.. 2023. 10. 2.
[pytorch] Multi-GPU Training | ๋‹ค์ค‘ GPU ํ•™์Šต ์˜ˆ์‹œ| Distributed Data Parallel (DDP) | Data Parallel (DP) Multi-GPU Training Multi-GPU Training (๋‹ค์ค‘ GPU ํ•™์Šต)์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ GPU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์€ ์ ์  ์ปค์ง€๊ณ  ๋ฐ์ดํ„ฐ์…‹์˜ ํฌ๊ธฐ ๋˜ํ•œ ๋ฐฉ๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์ค‘ GPU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ƒ ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ด๋ผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. Pytorch์—์„œ๋Š” multi-gpu ํ•™์Šต์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. Data Prarallel (DP) # DataParallel ๋ชจ๋“ˆ๋กœ ๋ชจ๋ธ ๊ฐ์‹ธ๊ธฐ model = nn.DataParallel(model) torch.nn.DataParallel ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์กด์žฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์žฅ์  ์•„์ฃผ ๊ฐ„๋‹จํ•˜๋‹ค (๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ•ด๋‹น ํ•จ์ˆ˜๋กœ ๊ฐ.. 2023. 4. 17.
[pytorch]Box operator๋กœ Bounding Box ์‰ฝ๊ฒŒ ๋‹ค๋ฃจ๊ธฐ torchvision.ops torchvision.ops ์—์„œ๋Š” computer vision ๊ด€๋ จ ๊ฐ์ข… operator ๋“ค์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ๊ทธ์ค‘์—์„œ Bounding Box๋ฅผ ๋‹ค๋ฃจ๋Š” Box Operators๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค. Detection ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ๋งŒ์ง€๋‹ค๋ณด๋ฉด bounding box๋ฅผ ๋‹ค๋ฃฐ ์ผ์ด ๋งŽ์€๋ฐ, torchvision.ops ์—์„œ๋Š” bactch ๋‹จ์œ„๋กœ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•œ ๊ฐ์ข… ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. * box ๋ฉด์ , box๊ฐ„์˜ iou, box format ๋ณ€๊ฒฝ, clip ๋“ฑ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ ํ…Œ์ŠคํŠธ box 3๊ฐœ๋ฅผ ์ •์˜ํ•˜๊ณ  ์•ž์„œ ์‚ดํŽด๋ณธ box operator ๊ธฐ๋Šฅ๋“ค์„ ํ…Œ์ŠคํŠธ import numpy as np import cv2 import torch from torchvision.ops import * # boxes .. 2023. 3. 17.
728x90