Tech (580) 썸네일형 리스트형 [Docker] 도커 이미지 다루어보기, 그리고 Dockerfile 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 도커 이미지에 대해 알아보고, 이미지를 다루어보는 방법에 대해 알아보자. 그리고 나만의 이미지를 만드는 데 활용되는 Dockerfile에 대해서도 배워보자. 참고로 Dockerfile에 대해서는 얕게나마 생활코딩 강의를 통해 배운적이 있었다. Dockerfile이 무엇인지에 대해 모른다면 간단히 이전 포스팅을 읽고 오는 것도 좋을 듯 하다.1. 도커 이미지를 생성하자, docker commit리눅스 배포판 중 Ubuntu는 패키지를 apt 레포지토리에서, CentOS는 패키지를 yum 레포지토리에서 설치하는 것처럼, 또 P.. [Docker] 도커 컨테이너 다루어보기 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅에서는 도커 엔진의 핵심 중 하나인 도커 컨테이너를 다루는 방법에 대해 알아보도록 하자. 1. 컨테이너 생성하기 가장 먼저 배워볼 것은 컨테이너를 생성하는 방법이다. docker run 명령어로 실행할 수 있는데, 이 명령어는 컨테이너를 생성하고 실행까지 할 수 있는 명령어이다. 명령어 형식은 아래와 같다. 공식 문서에 가면 여러가지 인자가 있긴 하지만, 여기서는 자주 쓰이며 핵심적인 명령어 인자만 알아보도록 하자. $ docker run [OPTIONS] [IMAGE] 아래와 같이 ubuntu:20.04 이미지를 활용해서 컨테이너.. [Docker] 도커란, 그리고 도커 엔진의 이미지와 컨테이너 🔊 해당 포스팅은 시작하세요! 도커/쿠버네티스 서적을 읽고 개인적인 목적 하에 작성되는 글입니다. 포스팅에 사용되는 모든 자료는 제가 직접 재구성하였음을 알립니다. 이번 포스팅을 시작으로 도커와 쿠버네티스 관련 개발 서적을 통해 본격적으로 깊이 있는 공부를 시작해보려고 한다. 도커 관련해서는 이전에 생활코딩 이고잉님의 기초 강의만 공부했었고 제대로 동작 원리와 깊이 있는 공부를 하지 못했었다. 최근 컨테이너를 기반으로 하는 인프라를 구성하는 트렌드로 가게 되면서 도커와 쿠버네티스에 대한 공부를 언젠가는 해야 한다고 생각했다. 그 첫 번째 주제로 도커란 어떤 개념인지 알아보고 도커라는 컨테이너를 생성하고 관리하는 주체이자 핵심인 도커 엔진의 이미지와 컨테이너에 대해 알아본다. 1. 가상머신과 도커 컨테이너.. [회고] 2022년을 보내며 어김없이 2022년이 지나갔다. 어느덧 회고 글도 세 번째 작성하게 되었다. 비록 23년 새해가 밝고 1개월이나 지난 2월 시점이지만, 22년엔 어떤 일이 있었고, 또 무엇을 느꼈으며, 앞으로 23년에는 어떤 일을 해나가며 살아야 할지에 대한 고민들 담아보려고 한다. 1. 커리어 작년 5월부터 정규 커리어가 시작이 되었다. 업무는 22년 1월부터 계속 해와서 그런지 작년 동안은 업무 적응에 집중해왔던 것 같다. 내가 다루는 데이터의 도메인 지식과 더불어서 회사 내의 인프라에 대한 큰 그림을 배우느라 정신이 없던 것 같았다. 업무에 어느정도 적응된 후, 중간 중간 내 커리어의 방향성에 대해서도 생각을 많이 했던 것 같다. 입사 초반에는 리서치(연구) 관련한 역량을 쌓아야 하나 해서 몇 년이 지나고 직장을 .. [Git] 버전 관리 시스템, git 🔊 해당 포스팅은 모두의 리눅스 서적 내용 중 19장에 해당하는 내용을 읽고 개인적인 정리 목적 하에 작성된 글입니다. 포스팅 내용은 해당 서적에 기반하였으며 포스팅에서 사용된 자료는 모두 직접 재구성하였음을 알립니다. 이번 포스팅에서는 버전 관리 시스템 즉, 파일 변경 이력을 관리하는 도구인 git에 대해 알아보려고 한다. 먼저 버전 관리 시스템이 무엇인지 부터 살펴보자. 리눅스 뿐만 아니라 맥, 윈도우를 사용하다 보면 특정 텍스트 파일이나 소스코드 또는 셸 스크립트 파일을 계속해서 추가하거나 변경하는 것이 일반적이다. 하지만 파일 내용을 변경할 때마다 매번 새로운 파일을 만들게 되면 이전 버전의 파일 상태로 돌아가기도 힘들고 파일 수가 계속 많아져 디스크를 차지하는 용량도 점진적으로 커질 것이다. 이.. [Linux] 아카이브와 압축, 그리고 yum, apt 소프트웨어 패키지 🔊 해당 포스팅은 모두의 리눅스 서적의 내용을 읽고 개인적인 정리 목적 하에 작성된 글임을 알립니다. 포스팅 내용의 기반 내용은 해당 서적에 기반하였으며 내용 자체는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 리눅스로 파일을 아카이브하고 압축하는 방법, 그리고 apt나 yum과 같은 소프트웨어 패키지를 관리하는 명령어에 대해 알아보자. 1. 아카이브와 압축 우선 아카이브와 압축에 대한 개념 구분부터 지어보자. 아카이브란 파일을 모으는 행위이고 압축은 아카이브로 모은 파일들을 작게 만드는 행위이다. 윈도우나 맥에서는 주로 zip을 활용해서 파일을 압축하는데, 이 때 zip은 파일을 아카이브하고 압축하는 것을 한 번에 실행한다. 즉, zip 이라는 명령어에서 아카이브와 압축을 구분하지는 않는다. 하.. [Linux] 셸 스크립트 기초와 활용하기 🔊 해당 포스팅은 모두의 리눅스 서적의 내용을 읽고 개인적인 정리 목적 하에 작성된 글임을 알립니다. 포스팅 내용의 기반 내용은 해당 서적에 기반하였으며 내용 자체는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 셸 스크립트란 무엇이고, 셸 스크립트의 기초와 더불어 기초를 쌓은 뒤 잘 활용할 수 있는 방법에 대해서 알아보도록 하자. 가장 먼저 셸 스크립트가 무엇인지 개념적으로 배워보도록 하자.1. 여러 개의 명령어를 하나의 파일로 실행하자, 셸 스크립트!셸 스크립트란, 셸에서 실행될 하나 또는 그 이상의 커맨드 라인을 입력해 놓은 파일이다. 단순히 명령어를 여러개 나열하는 것을 넘어서서 조건 분기, 반복과 같은 복잡한 제어구조도 수행할 수 있다. 마치 Python 이나 Java 같은 프로그래밍 언.. [Linux] 정규표현식과 텍스트 고도화 처리가 가능한 sed, awk 명령어 🔊 해당 포스팅은 모두의 리눅스 서적의 내용을 읽고 개인적인 정리 목적 하에 작성된 글임을 알립니다. 포스팅 내용의 기반 내용은 해당 서적에 기반하였으며 내용 자체는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 텍스트 처리를 고도화하는 데 핵심이라고 할 수 있는 정규표현식, 그리고 이를 활용해 리눅스에서 텍스트를 고도화해서 처리하는 방법에 대해 알아본다. 1. 정규 표현식 리눅스에서는 수많은 것들이 텍스트 파일로 되어 있기 때문에 특정 문자열 패턴을 검색하는 기능이 필수적이다. 리눅스에서는 grep 이라는 명령어로 문자열을 검색하며 또 정규표현식까지 같이 활용하면 여러가지 복잡한 패턴의 문자열도 필터링할 수 있다. 먼저 grep 명령어의 활용 방식은 아래와 같다. 인자로 지정한 파일 속에서 [검색.. [Linux] 프로세스와 잡, 표준 입/출력, 그리고 기본 텍스트 처리 🔊 해당 포스팅은 모두의 리눅스 서적의 내용을 읽고 개인적인 정리 목적 하에 작성된 글임을 알립니다. 포스팅 내용의 기반 내용은 해당 서적에 기반하였으며 내용 자체는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 리눅스에서의 프로세스와 잡에 대한 설명, 표준 입출력과 파이프라인, 그리고 리눅스를 이용해 기본적으로 할 수 있는 텍스트 처리에 대해 알아보자. 가장 먼저 리눅스의 프로세스와 잡이다. 1. 프로세스와 잡 먼저 프로세스가 무엇인지 알아보고, 우리가 현재 사용하고 있는 리눅스에서 실제 어떤 프로세스가 돌아가고 있는지도 확인하는 명령어를 배워보자. 앞서서 우리가 그동안 배워온 여러가지 명령어(cat, less, man 등등..)들의 실체는 디스크에 있는 '파일'임을 알 수 있었다. 그러면 셸에서.. [Linux] 리눅스로 파일과 디렉터리를 내 맘대로 조작하기 🔊 해당 포스팅은 모두의 리눅스 서적의 내용을 읽고 개인적인 정리 목적 하에 작성된 글임을 알립니다. 포스팅 내용의 기반 내용은 해당 서적에 기반하였으며 내용 자체는 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 리눅스를 활용해서 파일과 디렉토리를 내맘대로 조작해보는 방법에 대해 배워보자. 먼저 리눅스는 파일로 구성되어 있다고 할 수 있다. 그리고 리눅스를 처음에 깔게되면 주요 디렉터리 구조가 존재하는데, 각 디렉터리가 대략 어떤 역할을 하는지를 알아보도록 하자. 먼저 아래 그림은 리눅스의 주요 디렉터리만 표시한 구조이다. 여기서 윈도우 OS와 리눅스 간에 명확한 디렉터리 구조 차이점이 있다. 윈도우는 물리 디스크가 2개 있다면 위와 같은 디렉터리 구조가 시스템 전체에 2개 존재한다. 하지만 리눅스.. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 더 큰 도전으로(2) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 이번 포스팅에서는 그동안 만들어온 Dezero라는 딥러닝 프레임워크가 더 복잡한 모델인 CNN, RNN도 구현할 수 있도록 기능을 고도화해볼 것이다. 그리고 난 후 대표적인 CNN, RNN 계열 모델인 VGG16, LSTM 모델을 Dezero만을 활용해 빌딩해보도록 하자. 드디어 책의 마지막 챕터이다. 이제 그 끝을 향해 달려나가보도록 하자! 1. CNN 메커니즘 - 2차원일 경우 CNN을 코드로 구현하기 위해서는 CNN에 대한 개념 이해가 선행되어야 .. [Linux] 리눅스의 개념과 셸 다루기 🔊 해당 포스팅은 모두의 리눅스 서적의 내용을 읽고 개인적인 정리 목적 하에 작성된 글임을 알립니다. 포스팅 내용의 기반 내용은 해당 서적에 기반하였으며 내용 자체는 제가 직접 재구성했음을 알립니다. 이번에 회사를 다니면서 팀 내에 뛰어난 동료 분께서 리눅스 공부를 해보는게 어떤지 제안해주셨다. 덕분에 해볼 공부거리가 생겼다! 어떻게 보면 이전부터 했었어야 할 공부 주제인데 마냥 내가 잘 모르는 쪽이다보니 무의식적으로 회피해오던 게 아닌가 싶었다. 공부거리를 제공해주신 동료 분께 깊은 감사 인사 드립니다! 이번에 공부해볼 분야는 바로 리눅스이다. 이번 포스팅에서는 리눅스라는 개념자체가 무엇인지, 그리고 리눅스와 사용자를 연결하는 도구인 셸(Shell)이 무엇이고 사용하는 방법에 대해서도 배워보도록 하자... [밑시딥] 나만의 딥러닝 프레임워크 만들기, 더 큰 도전으로(1) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 어느덧 책의 마지막 챕터에 도달했다. 이번 포스팅에서는 그동안 만들어온 Dezero라는 나만의 딥러닝 프레임워크를 더 큰 도전을 향해 나아가도록 발전시켜본다. 학습시킨 모델의 파라미터를 저장하거나 로드하는 기능 뿐만 아니라 더 효율적인 학습을 위한 기법인 드롭아웃 같은 기능을 추가해본다. 다음 포스팅에서는 지금까지는 Fully Connected Layer 로만 구성된 DNN 딥러닝 모델을 구현했지만, 더 복잡한 모델인 CNN, RNN의 계층도 구현해볼 .. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 신경망 만들기(2) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 이번 포스팅에서는 드디어 우리가 흔히 아는 오픈소스 딥러닝 프레임워크, 예를 들어 Tensorflow, Pytorch, Chainer를 사용하면서 접했던 API 형태로 Dezero를 추상화시켜볼 예정이다. 매개변수를 한데 모아주는 계층, Linear 계층같은 것들도 한데 모아주는 계층, 더 나아가 Optimizer, Dataset, DataLoader 까지 만들어볼 예정이다. 아마 딥러닝 프레임워크를 많이 사용해본 분들이라면 해당 이름의 API들이 어떤.. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 신경망 만들기(1) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 이번 포스팅에서는 드디어 Dezero 프레임워크를 활용해서 신경망을 만들 수 있도록 기능을 추가할 예정이다. 신경망을 만들기 위해서는 추가적으로 다양한 함수의 기능들이 추가되어야 하는데 이번에는 이러한 함수들을 추가하는 포스팅이 주요 내용이 될 예정이다. 또한 이전까지는 우리가 만들어온 Dezero는 주로 입력이 스칼라인 형태를 다루어왔지만, 현실에서 가장 빈번하게 다루어지는 텐서의 입력 형태도 처리될 수 있도록 확장할 예정이다. 1. 우리가 만들어온 .. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 고차 미분 계산(2) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 저번 포스팅에서는 고차 미분 계산을 수학적으로 어떻게 구현해낼 수 있는지, 또 미분을 사용하는 이유는 목적함수를 최적화하는 것인데, 최적화 하는 방법론으로서 경사 하강법(Gradient Descent)과 뉴턴 방법(Newton's Method)의 개념이 무엇이고 차이점이 무엇인지도 알아보았다. 이번 포스팅에서는 뉴턴 방법 최적화 기법의 근간이 되는 고차 미분을 우리의 Dezero 프레임워크에 어떻게 녹여낼지에 대해서 배워보도록 하자. 그리고 고차미분이 .. [CS] 네트워크의 OSI 7계층에 대해 알아보자 🔊 해당 포스팅은 로스카츠의 AI 머신러닝 네트워크 목차 블로그 내용을 공부하면서 배운 내용을 저만의 방식으로 재정리하고자 하는 목적 하에 작성되는 포스팅입니다. 사용되는 모든 자료는 원본 블로그의 내용을 참고하되 제가 직접 재구성했음을 알립니다. 이번 포스팅에서는 CS 지식 중 네트워크, 그 중에서도 서로 다른 컴퓨터 간에 통신할 때 사용되는 OSI 7계층에 대해 알아보고 각 계층이 어떤 역할을 수행하는지에 대해 알아보려고 한다. 네트워크, OSI 계층같은 개념이 자리잡지 않았던 시절, 서로 다른 컴퓨터 간에 통신을 한다는 것은 상상하기 힘든 일이었다고 한다. 즉, 예를 들어 같은 브랜드의 컴퓨터끼리만 통신이 가능하고 서로 다른 브랜드의 컴퓨터 간에는 통신을 할 수 없었던 시절이 있었다(상상이 안 된다.. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 고차 미분 계산(1) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 저번 포스팅까지 우리가 만들어온 Dezero라는 프레임워크가 미분 계산을 자동화할 수 있어 역전파 시 미분 계산을 자연스레 할 수 있도록 만들었다. 하지만 더 어려운 작업을 자동화시켜야 해야 하는데, 그 작업이 바로 고차 미분 계산이다. 고차 미분이란, 1차 미분에서 미분을 $N$번 더 수행하는 2차 미분, 3차 미분, ... 을 의미한다. 이렇게 고차 미분을 수행해야 하는 이유는 함수를 최적화하는 것과 관련이 있다. 함수 최적화가 필요한 이유는 뭘까?.. [Git] confilct 와 결부되는 cherry-pick, rebase, revert 알아보기 해당 포스팅은 얼마 전 업로드된 이고잉님의 오픈튜토리얼스 Git 강의를 보고 개인적으로 정리하는 목적 하에 작성되는 포스팅입니다. 아래 포스팅 내용의 모든 출처는 원본 영상임을 밝힙니다. 이번 포스팅에서는 Git을 어느정도 알고 나면 더 알고싶어 지는(?) 기능들인 cherry-pick, rebase, revert 기능에 대해 알아보고 실습도 해보려고 한다. 우선 해당 기능들은 이전 포스팅에서 배운 Git 에서의 conflict를 마주하고 해결하는 방법에 대해 알고 있어야 학습이 수월하다는 점 참고해두자. 물론 여기서 배울 3가지 기능들이 무조건적으로 conflict 와 결부되는 것은 아니지만, 해당 기능들을 사용하다 보면 conflict가 자주 발생할 수 있기 때문에 conflict가 무엇인지, 또 어.. [밑시딥] 나만의 딥러닝 프레임워크 만들기, 더 복잡한 미분 자동 계산(2) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 3권을 개인적으로 공부하면서 배운 내용을 기록하고 해당 책을 공부하시는 다른 분들에게 조금이나마 도움이 되고자 하는 목적 하에 작성된 포스팅입니다. 포스팅 내용의 모든 근거는 책의 내용에 기반하였음을 알립니다. 저번 포스팅까지 해서 일직선의 계산 그래프 형태만이 아닌 더 복잡한 계산 그래프 형태도 자동미분할 수 있도록 여러가지 클래스들을 개선했었다. 하지만 직전까지 만든 코드들에 대해서도 개선사항들이 존재한다. 먼저 메모리를 절약할 수 있다는 점과 변수 사용성 개선, 연산자 오버로드 등이 있다. 그러면 이제 하나씩 개선시켜보도록 하자. 그 첫번째 내용으로는 메모리를 관리하는 것이다. 1. Python은 메모리를 어떻게 관리하고 있을까? 먼저 해당 목차에서 소개.. 이전 1 2 3 4 5 6 7 ··· 29 다음