<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>wxxk_o.log</title>
        <link>https://velog.io/</link>
        <description>누구나 AI를 할 수 있게 쉽게 설명하기!</description>
        <lastBuildDate>Wed, 04 Mar 2026 06:37:11 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>wxxk_o.log</title>
            <url>https://velog.velcdn.com/images/wxxk_o/profile/dfd3aed8-3e5c-4378-9669-041905919378/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. wxxk_o.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/wxxk_o" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[대규모분산학습-1]]></title>
            <link>https://velog.io/@wxxk_o/%EB%8C%80%EA%B7%9C%EB%AA%A8%EB%B6%84%EC%82%B0%ED%95%99%EC%8A%B5</link>
            <guid>https://velog.io/@wxxk_o/%EB%8C%80%EA%B7%9C%EB%AA%A8%EB%B6%84%EC%82%B0%ED%95%99%EC%8A%B5</guid>
            <pubDate>Wed, 04 Mar 2026 06:37:11 GMT</pubDate>
            <description><![CDATA[<h1 id="분산학습-성공-기록-corpus-pretrain">분산학습 성공 기록 (Corpus Pretrain)</h1>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/1a94a5ed-1519-4d90-86f5-20f41520f0d5/image.png" alt=""></p>
<p><strong>180 GiB GPU × 16개 = 총 2.8 TiB</strong></p>
<p>이번에는 <code>accelerate</code> 기반으로 분산학습을 어떻게 성공시켰는지 정리한다. 코드는 이미 있었고, 실행 환경만 맞추면 됐다.</p>
<hr>
<h2 id="사전-확인-사항">사전 확인 사항</h2>
<ol>
<li><strong>스토리지 공유 여부</strong></li>
<li><strong>마스터 노드 공유 여부</strong></li>
</ol>
<h3 id="1-스토리지">1. 스토리지</h3>
<p>해당 서버는 NAS로 구성돼 있어 추가 설정은 필요 없었다.<br>실행 config를 서버별로 다르게 두고, 각 서버에서 실행만 하면 됐다.</p>
<h3 id="2-마스터-노드">2. 마스터 노드</h3>
<p>서버 1·2가 같은 마스터 포트(보통 29500)로 서로 연결돼 있어야 한다.</p>
<hr>
<h2 id="연결-확인-절차">연결 확인 절차</h2>
<h3 id="step-1-마스터-서버-결정">Step 1. 마스터 서버 결정</h3>
<p>서버 1, 2 중 마스터를 정한다. 여기서는 <strong>서버 1</strong>을 마스터로 사용했다.</p>
<h3 id="step-2-서버-1의-메인-ip-확인">Step 2. 서버 1의 메인 IP 확인</h3>
<pre><code class="language-bash">hostname -I</code></pre>
<p>출력에서 <strong>가장 앞에 나오는 IP</strong>가 메인 내부 IP다.</p>
<h3 id="step-3-포트-연결-테스트">Step 3. 포트 연결 테스트</h3>
<p><strong>서버 1</strong>에서 리스닝:</p>
<pre><code class="language-bash">nc -l 29500</code></pre>
<p><strong>서버 2</strong>에서 연결 테스트:</p>
<pre><code class="language-bash">nc -vz 10.x.x.xx 29500</code></pre>
<p>아래처럼 나오면 성공이다.</p>
<pre><code>Connection to 10.x.x.xx 29500 port [tcp/*] succeeded!</code></pre><h3 id="방화벽-주의">방화벽 주의</h3>
<blockquote>
<p>방화벽은 건드리지 말 것.<br>방화벽 해제로 시도했다가 서버 이상 동작으로 장애가 난 사례가 있었다.</p>
</blockquote>
<hr>
<h2 id="tmux-사용-이슈">Tmux 사용 이슈</h2>
<p>연결 확인 후 <code>accelerate</code>로 학습을 돌리면 된다. 학습이 오래 걸리므로 <code>nohup</code>이나 <code>tmux</code>를 많이 쓸 텐데, 여기서는 <strong>tmux 사용 방식</strong> 때문에 문제가 있었다.</p>
<p><strong>증상</strong></p>
<ul>
<li>서버 1에서 tmux로 학습 실행 → 멈춤</li>
<li>서버 1 tmux 안에서 서버 2로 SSH 접속 후 학습 실행 → 서버 2만 동작</li>
</ul>
<p><strong>원인 추정</strong></p>
<ul>
<li>서버 1이 GPU·CPU 메모리를 거의 다 쓰면서, 같은 세션 내 SSH 연결까지 유지하기 어려웠을 가능성</li>
</ul>
<p><strong>해결</strong></p>
<ul>
<li><strong>로컬 PC</strong>에서 tmux 실행</li>
<li>같은 tmux 세션에서 서버 1, 서버 2에 각각 SSH 접속</li>
<li>각 터미널에서 학습 실행</li>
</ul>
<blockquote>
<p>이런 이슈를 피하려면 <code>nohup</code>으로 돌리는 방식이 더 단순하다.</p>
</blockquote>
<hr>
<h2 id="기타-참고">기타 참고</h2>
<ul>
<li><strong>B200 GPU:</strong> Flash Attention 4 미지원이라 사용할 수 없었다.</li>
</ul>
<hr>
<h2 id="다음-글-예고">다음 글 예고</h2>
<p>코드 설정(accelerate config 등)을 어떻게 했는지 정리할 예정이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[컨테이너 생성방법]]></title>
            <link>https://velog.io/@wxxk_o/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%83%9D%EC%84%B1%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@wxxk_o/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%83%9D%EC%84%B1%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Wed, 04 Mar 2026 05:50:03 GMT</pubDate>
            <description><![CDATA[<h1 id="대규모-gpu-서버-컨테이너-설정-가이드">대규모 GPU 서버 컨테이너 설정 가이드</h1>
<h2 id="개요">개요</h2>
<p>회사에서 첨단 GPU 활용 지원 사업으로 <strong>B200 × 8개</strong> 서버 2대를 사용할 수 있게 되었다.</p>
<p><strong>목표</strong></p>
<ul>
<li>대규모 GPU 서버 접속 문제 해결</li>
<li>버티컬 AI Corpus pretrain 성공</li>
</ul>
<p><strong>클라우드 업체:</strong> NHN (자잘한 이슈 문의는 NHN으로)</p>
<hr>
<h2 id="배경">배경</h2>
<ul>
<li>2026년 02월 23일 업체 사용 설명회 진행, PDF 자료 제공</li>
<li><strong>제약사항:</strong> 베타서비스 특성상 Docker로 서버를 올리기 때문에 <strong>Docker in Docker 불가</strong></li>
<li>vLLM 등 별도 도커 이미지 사용 불가 → 패키지 직접 설치 후 환경 구축 필요</li>
</ul>
<hr>
<h2 id="컨테이너-생성-ui">컨테이너 생성 UI</h2>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/b1e3e609-e7a7-4907-8558-968638bca923/image.png" alt=""></p>
<hr>
<h2 id="핵심-정보-요약">핵심 정보 요약</h2>
<ol>
<li><a href="#1-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%EC%84%A0%ED%83%9D-%EC%8B%9C-%EC%9C%A0%EC%9D%98%EC%82%AC%ED%95%AD">컨테이너 선택 시 유의사항</a></li>
<li><a href="#2-vnc%EB%9E%80">VNC란?</a></li>
<li><a href="#3-%EC%88%98%EB%8F%99%EB%B3%B5%EA%B5%AC-vs-%EC%9E%90%EB%8F%99%EB%B3%B5%EA%B5%AC">수동복구 vs 자동복구</a></li>
</ol>
<hr>
<h2 id="1-컨테이너-선택-시-유의사항">1. 컨테이너 선택 시 유의사항</h2>
<h3 id="pytorch-컨테이너">PyTorch 컨테이너</h3>
<p>Ubuntu 24.04 기반, CUDA 13 계열 지원</p>
<table>
<thead>
<tr>
<th align="left">컨테이너 이름 (Image Tag)</th>
<th align="center">Python</th>
<th align="center">PyTorch</th>
<th align="center">CUDA</th>
<th align="center">JupyterLab</th>
<th align="center">VSCode</th>
</tr>
</thead>
<tbody><tr>
<td align="left"><code>rntier4-ngc-ubuntu2404-pytorch2508-vnc</code></td>
<td align="center">3.12.3</td>
<td align="center">2.8</td>
<td align="center">13.0</td>
<td align="center">4.4.5</td>
<td align="center">4.106.3</td>
</tr>
<tr>
<td align="left"><code>rntier4-ngc-ubuntu2404-pytorch2510-vnc</code></td>
<td align="center">3.12.3</td>
<td align="center">2.9</td>
<td align="center">13.0</td>
<td align="center">4.3.6</td>
<td align="center">4.106.3</td>
</tr>
<tr>
<td align="left"><code>rntier4-ngc-ubuntu2404-pytorch2512-vnc</code></td>
<td align="center">3.12.3</td>
<td align="center">2.10</td>
<td align="center">13.1</td>
<td align="center">4.5.1</td>
<td align="center">4.106.3</td>
</tr>
</tbody></table>
<h3 id="tensorflow-컨테이너">TensorFlow 컨테이너</h3>
<p>OS·CUDA 버전이 이미지별로 상이하므로 확인 필요</p>
<table>
<thead>
<tr>
<th align="left">컨테이너 이름 (Image Tag)</th>
<th align="center">Python</th>
<th align="center">TF</th>
<th align="center">CUDA</th>
<th align="center">JupyterLab</th>
<th align="center">VSCode</th>
</tr>
</thead>
<tbody><tr>
<td align="left"><code>rntier4-ngc-ubuntu2204-tensorflow2410-vnc</code></td>
<td align="center">3.10.12</td>
<td align="center">2.16</td>
<td align="center">12.6</td>
<td align="center">4.2.5</td>
<td align="center">4.106.3</td>
</tr>
<tr>
<td align="left"><code>rntier4-ngc-ubuntu2404-tensorflow2412-vnc</code></td>
<td align="center">3.12.3</td>
<td align="center">2.17</td>
<td align="center">12.6</td>
<td align="center">4.3.2</td>
<td align="center">4.106.3</td>
</tr>
<tr>
<td align="left"><code>rntier4-ngc-ubuntu2404-tensorflow2502-vnc</code></td>
<td align="center">3.12.3</td>
<td align="center">2.17</td>
<td align="center">12.8</td>
<td align="center">4.3.5</td>
<td align="center">4.106.3</td>
</tr>
</tbody></table>
<blockquote>
<p><strong>공통:</strong> 모든 컨테이너에 <strong>Tmux 3</strong> 기본 설치</p>
</blockquote>
<p><strong>체크포인트:</strong> Ubuntu 버전, 프레임워크 버전 → Python·CUDA 호환성 확인 필수. 나머지는 가상환경 구축 후 설치하면 됨.</p>
<hr>
<h2 id="2-vnc란">2. VNC란?</h2>
<p><strong>VNC (Virtual Network Computing)</strong><br>SSH는 터미널만 사용하는 반면, VNC는 마우스·GUI로 원격 제어하는 방식이다.</p>
<p>JupyterLab, VSCode 등을 웹 브라우저가 아닌 전용 뷰어로 접속할 때 사용한다.</p>
<h3 id="포트-33000-의미">포트 33000 의미</h3>
<ul>
<li><strong>내부 통로:</strong> 33000번 포트가 화면 전송용으로 할당됨</li>
<li><strong>접속 예시:</strong> IP가 <code>59.150.32.1</code>이면 VNC 뷰어에서 <code>59.150.32.1:33000</code> 입력</li>
</ul>
<hr>
<h2 id="3-수동복구-vs-자동복구">3. 수동복구 vs 자동복구</h2>
<table>
<thead>
<tr>
<th align="left">옵션</th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td align="left"><strong>자동복구</strong></td>
<td align="left">장애 발생 약 10분 후 자동 복구 시도. <strong>컨테이너가 초기 상태로 되돌아갈 수 있음</strong></td>
</tr>
</tbody></table>
<blockquote>
<p>매뉴얼: 자동 복구 사용 시 위 사항을 반드시 확인할 것.</p>
</blockquote>
<hr>
<h2 id="서버-스펙">서버 스펙</h2>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/ece92a3d-ac80-4a16-b6c9-9957c06c3ddc/image.png" alt=""></p>
<ul>
<li><strong>메모리:</strong> 1400GB</li>
<li><strong>IB (InfiniBand):</strong> 초고속 네트워크</li>
</ul>
<p>컨테이너는 <strong>최대 2개</strong> 생성 가능 → 분산학습 구성 가능</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/5b10dc09-b0c6-44e3-8551-66aff9b42b17/image.png" alt=""></p>
<hr>
<h2 id="폴더-구성">폴더 구성</h2>
<table>
<thead>
<tr>
<th align="left">경로</th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td align="left">개인폴더</td>
<td align="left">NVMe 연결, OS 포함</td>
</tr>
<tr>
<td align="left">내 워크스페이스</td>
<td align="left">NVMe 연결, OS 포함</td>
</tr>
<tr>
<td align="left"><strong>xtmp</strong></td>
<td align="left">NVMe 연결, 데이터 로딩 빠름. OS 미포함이라 공유 없이 읽기/쓰기 시 성능 우수</td>
</tr>
</tbody></table>
<blockquote>
<p>확인 시 모든 경로가 NVMe로 되어 있었음. SATA(sda, sdb)보다 빠름.<br><strong>참고:</strong> NVMe는 대용량이 없음. 데이터 10TB 이상이면 SATA 사용 고려.</p>
</blockquote>
<hr>
<h2 id="추가-설정">추가 설정</h2>
<h3 id="데이터-전송-포트">데이터 전송 포트</h3>
<p>4주 지원 사업 기간 동안 <strong>데이터 백업 필수</strong> → 다운로드용 포트 연결 권장</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/30dc4402-cf7e-46f0-bdf0-562f498f7a50/image.png" alt=""></p>
<h3 id="컨테이너-시작-명령-command">컨테이너 시작 명령 (Command)</h3>
<p>학습용이면 기본값으로 충분. 서비스 운영 시 <code>python main.py</code> 또는 <code>/bin/bash</code> 등 지정.</p>
<h3 id="컨테이너-포트-동적-vs-고정">컨테이너 포트: 동적 vs 고정</h3>
<table>
<thead>
<tr>
<th align="left">구분</th>
<th align="left">동적 (Dynamic)</th>
<th align="left">고정 (Static)</th>
</tr>
</thead>
<tbody><tr>
<td align="left"><strong>컨테이너 내부 포트</strong></td>
<td align="left">9999 (사용자 입력)</td>
<td align="left">9999 (사용자 입력)</td>
</tr>
<tr>
<td align="left"><strong>외부 접속 포트</strong></td>
<td align="left">매번 랜덤</td>
<td align="left">항상 동일</td>
</tr>
<tr>
<td align="left"><strong>용도</strong></td>
<td align="left">테스트 후 버릴 때</td>
<td align="left">서비스 운영, 고정 주소 필요 시</td>
</tr>
<tr>
<td align="left"><strong>편의성</strong></td>
<td align="left">접속할 때마다 포트 확인</td>
<td align="left">한 번 설정 후 계속 사용 가능</td>
</tr>
</tbody></table>
<h3 id="환경-변수">환경 변수</h3>
<p>서비스에 필요한 변수 설정 예시:</p>
<pre><code>LANG=ko_KR.UTF-8
TZ=Asia/Seoul</code></pre><hr>
<h2 id="설정-완료-후">설정 완료 후</h2>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/87fd115a-06d1-4b87-a1e8-a0cb09135302/image.png" alt=""></p>
<ul>
<li><strong>컨테이너 현황:</strong> 생성 여부 확인</li>
<li><strong>&quot;&gt;&quot; 버튼:</strong> SSH 접속 정보 조회</li>
<li><strong>&quot;&gt;_&quot; 버튼:</strong> 웹 터미널 접속</li>
</ul>
<h3 id="ssh-접속-예시">SSH 접속 예시</h3>
<p>주의 : 키 다운로드시 재발급이 됨, 한명이 다운로드 후 공유</p>
<pre><code class="language-bash">chmod 600 ./DCTN-0226172020-1_key &amp;&amp; ssh -i ./DCTN-0226172020-1_key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30001 hanskim@59.150.32.1</code></pre>
<p><strong>옵션 설명</strong></p>
<ul>
<li><code>-o UserKnownHostsFile=/dev/null</code> — known_hosts에 저장 안 됨</li>
<li><code>-o StrictHostKeyChecking=no</code> — 접속 시 &quot;계속할까요?&quot; 묻지 않음</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[1699][DP]]]></title>
            <link>https://velog.io/@wxxk_o/1699DP</link>
            <guid>https://velog.io/@wxxk_o/1699DP</guid>
            <pubDate>Tue, 08 Aug 2023 13:51:51 GMT</pubDate>
            <description><![CDATA[<pre><code>
n = int(input())

dp = [x for x in range(n+1)]

for i in range(1, n+1):
    for j in range(1, i):
        if j*j &gt; i :
            break
        if dp[i] &gt; dp[i-j*j] +1:
            dp[i] = dp[i-j*j] + 1
print(dp[n])</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[2747][math]]]></title>
            <link>https://velog.io/@wxxk_o/2747math</link>
            <guid>https://velog.io/@wxxk_o/2747math</guid>
            <pubDate>Mon, 07 Aug 2023 14:23:48 GMT</pubDate>
            <description><![CDATA[<pre><code>n = int(input())
a, b = 0, 1
for i in range(n):
    a, b = b, a+b
print(a)
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[DP][2579]]]></title>
            <link>https://velog.io/@wxxk_o/DP2579</link>
            <guid>https://velog.io/@wxxk_o/DP2579</guid>
            <pubDate>Tue, 25 Jul 2023 13:59:39 GMT</pubDate>
            <description><![CDATA[<pre><code>n=int(input()) # 계단 개수
s=[int(input()) for _ in range(n)] # 계단 리스트
dp=[0]*(n) # dp 리스트
if len(s)&lt;=2: # 계단이 2개 이하일땐 그냥 다 더해서 출력
    print(sum(s))
else: # 계단이 3개 이상일 때
    dp[0]=s[0] # 첫째 계단 수동 계산
    dp[1]=s[0]+s[1] # 둘째 계단까지 수동 계산
    for i in range(2,n): # 3번째 계단 부터 dp 점화식 이용해서 최대값 구하기
        dp[i]=max(dp[i-3]+s[i-1]+s[i], dp[i-2]+s[i])
    print(dp[-1])</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[DP][1149]]]></title>
            <link>https://velog.io/@wxxk_o/DP1149</link>
            <guid>https://velog.io/@wxxk_o/DP1149</guid>
            <pubDate>Mon, 24 Jul 2023 16:04:37 GMT</pubDate>
            <description><![CDATA[<pre><code>import sys
input = sys.stdin.readline

n = int(input())
RGB = []
for i in range(n):
    RGB.append(list(map(int, input().strip().split())))


for i in range(1, n):
    # 빨간집
    RGB[i][0] = min(RGB[i-1][1], RGB[i-1][2]) + RGB[i][0]
    # 초록집
    RGB[i][1] = min(RGB[i-1][0], RGB[i-1][2]) + RGB[i][1]
    # 파란집
    RGB[i][2] = min(RGB[i-1][0], RGB[i-1][1]) + RGB[i][2]

print(min(RGB[n-1]))

</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[DP][1003]]]></title>
            <link>https://velog.io/@wxxk_o/DP1003</link>
            <guid>https://velog.io/@wxxk_o/DP1003</guid>
            <pubDate>Thu, 20 Jul 2023 16:09:53 GMT</pubDate>
            <description><![CDATA[<pre><code>T = int(input())
for _ in range(T):
    N = int(input())
    zero,one=1,0 # zero: 0개수, one: 1개수
    for i in range(N):
        zero,one = one,zero+one # zero와 one에 대해 피보나치적용
    print(zero,one)
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[DP][1463]]]></title>
            <link>https://velog.io/@wxxk_o/DP1463</link>
            <guid>https://velog.io/@wxxk_o/DP1463</guid>
            <pubDate>Wed, 19 Jul 2023 14:52:16 GMT</pubDate>
            <description><![CDATA[<pre><code>x=int(input()) # 수 입력받기

d=[0]*(x+1) # 1-based

for i in range(2,x+1): # 2부터 x까지 반복
    d[i]=d[i-1]+1 # 1을 빼는 연산 -&gt; 1회 진행

    if i%2==0: # 2로 나누어 떨어질 때, 2로 나누는 연산
        d[i]=min(d[i],d[i//2]+1)

    if i%3==0: # 3으로 나누어 떨어질 때, 3으로 나누는 연산
        d[i]=min(d[i],d[i//3]+1)

print(d[x])</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[DP][2839]]]></title>
            <link>https://velog.io/@wxxk_o/%EB%8F%99%EC%A0%812839</link>
            <guid>https://velog.io/@wxxk_o/%EB%8F%99%EC%A0%812839</guid>
            <pubDate>Wed, 19 Jul 2023 14:36:46 GMT</pubDate>
            <description><![CDATA[<pre><code>num = int(input())
count = 0

while num &gt;= 0:
    if num % 5 ==0:
        count += int(num // 5)
        print(count)
        break
    num -=3
    count += 1
else:
    print(-1)
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[백준][정렬][10817]]]></title>
            <link>https://velog.io/@wxxk_o/%EB%B0%B1%EC%A4%80%EC%A0%95%EB%A0%AC10817</link>
            <guid>https://velog.io/@wxxk_o/%EB%B0%B1%EC%A4%80%EC%A0%95%EB%A0%AC10817</guid>
            <pubDate>Tue, 11 Jul 2023 15:03:51 GMT</pubDate>
            <description><![CDATA[<pre><code>num_list = list(map(int, input().split()))
num_list.sort()
print(num_list[1])</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[백준][정렬]11399]]></title>
            <link>https://velog.io/@wxxk_o/%EB%B0%B1%EC%A4%80%EC%A0%95%EB%A0%AC11399</link>
            <guid>https://velog.io/@wxxk_o/%EB%B0%B1%EC%A4%80%EC%A0%95%EB%A0%AC11399</guid>
            <pubDate>Fri, 07 Jul 2023 04:53:54 GMT</pubDate>
            <description><![CDATA[<pre><code>n = int(input())  # 첫째줄 입력, 5명이니까, 5입력
peoples = list(map(int, input().split()))  # 기다리는 사람들 리스트 형태로 입력 받음, 3 1 4 3 2 요렇게 입력해야함

peoples.sort()  # 작은 순서대로 정렬
answer = 0  # 정답 변수를 0으로 만듭니다.

for x in range(1, n+1):
    answer += sum(peoples[0:x])  # 리스트의 0번째 수부터 x번째 수까지를 더해줍니다.
print(answer)  # 정답 제출</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[백준][정렬] 2751번]]></title>
            <link>https://velog.io/@wxxk_o/%EB%B0%B1%EC%A4%80%EC%A0%95%EB%A0%AC-2751%EB%B2%88</link>
            <guid>https://velog.io/@wxxk_o/%EB%B0%B1%EC%A4%80%EC%A0%95%EB%A0%AC-2751%EB%B2%88</guid>
            <pubDate>Thu, 06 Jul 2023 13:23:26 GMT</pubDate>
            <description><![CDATA[<pre><code>num=int(input())
numbers=[]
for i in range(num):
    numbers.append(int(input()))
for i in sorted(numbers):
    print(i)</code></pre><p>주피터에서는? 안되는 이상한 현상,,</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/0a9c780e-c1c6-4de9-90e9-4cf147a332f1/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] 2750번]]></title>
            <link>https://velog.io/@wxxk_o/%EB%B0%B1%EC%A4%80-2750%EB%B2%88</link>
            <guid>https://velog.io/@wxxk_o/%EB%B0%B1%EC%A4%80-2750%EB%B2%88</guid>
            <pubDate>Wed, 05 Jul 2023 04:20:45 GMT</pubDate>
            <description><![CDATA[<pre><code>x = int(input())
num_list = []
for i in range(x):
    num_list.append(int(input()))
num_list1 = sorted(num_list)
for i in range(len(num_list)):
    print(num_list1[i])</code></pre><p><img src="https://velog.velcdn.com/images/wxxk_o/post/07baaf0f-09b4-4fb7-9541-e75587ed3ff4/image.png" alt=""></p>
<p><img src="blob:https://velog.io/ce24589b-4aec-4175-835c-38616adddb68" alt="업로드중.."></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[고려대 sw 인공지능 아카데미 2기 1회차]]></title>
            <link>https://velog.io/@wxxk_o/%EA%B3%A0%EB%A0%A4%EB%8C%80-sw-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-%EC%95%84%EC%B9%B4%EB%8D%B0%EB%AF%B8-2%EA%B8%B0-1%ED%9A%8C%EC%B0%A8</link>
            <guid>https://velog.io/@wxxk_o/%EA%B3%A0%EB%A0%A4%EB%8C%80-sw-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-%EC%95%84%EC%B9%B4%EB%8D%B0%EB%AF%B8-2%EA%B8%B0-1%ED%9A%8C%EC%B0%A8</guid>
            <pubDate>Thu, 02 Mar 2023 00:09:08 GMT</pubDate>
            <description><![CDATA[<h1 id="python">python</h1>
<p>a = 1
(name) = (expression)</p>
<p>expression = 하나의 결과 값으로 축약 할 수 있는 식</p>
<h2 id="expression">expression</h2>
<h3 id="1-numberatomic더이상-쪼개지지-x">1. number(atomic)(더이상 쪼개지지 x)</h3>
<ul>
<li>숫자는 쪼개지면, 의미가 달라진다. 
int : 정수 ex) literal(특수기호) 없는 그냥 숫자
float : 부동소수점 ex) (1.) or (1e-4)
complex : 복소수 ex) 1+3j
bool : true = 1 , false = 0</li>
</ul>
<h4 id="int-4가지">int (4가지)</h4>
<ul>
<li>0b는 2진수, 0o는 8진수, 0x는 16진수를 의미합니다.  &gt; literal</li>
<li>a = 100_00 (사람이 읽고 싶은 숫자)
<img src="https://velog.velcdn.com/images/wxxk_o/post/569ee954-77a5-40ce-9ad1-d8d898f8e575/image.png" alt=""></li>
</ul>
<ul>
<li>Int의 크기는 무한대 </li>
</ul>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/b60e4449-2b29-47c6-af4e-ca173cdf0760/image.png" alt=""></p>
<ul>
<li><p>파이썬은 overflow 가 없다. 왜? 숫자가 굉장히 크니까</p>
</li>
<li><p>but 단점은 애초에 메모리를 크게 잡는다. &gt; 속도가 느려진다. </p>
</li>
<li><p>요기서 numpy가 사용되는 이유가 나온다. </p>
</li>
</ul>
<h4 id="float">float</h4>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/98a85595-de7b-40e3-a9e3-fb85facde3e0/image.png" alt="">
max=1.7976931348623157e+308</p>
<p>a = a+1 
가능할때는 무한대 일때만</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/95ec5d99-eb1f-48f9-9550-35c37b833ba7/image.png" alt=""></p>
<p>파이썬은 근사적으로, 대충 값을 정한다. </p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/47424b81-fc82-4806-b953-9ed6ef1126ff/image.png" alt=""></p>
<p>파이썬 inf(무한대) 타입은 float
float(&#39;inf&#39;) = inf</p>
<p>질문
이렇게 데이터를 만드는 방식을 뭐라고 했지?
답
instance 방식으로 만드는 것
값을 만드는 방식은 2가지</p>
<ol>
<li>literal </li>
<li>instance ex) float(&#39;inf&#39;) = inf</li>
</ol>
<p>질문
숫자가 아닌것을 숫자에 포함할 수 있을까?
답
숫자가 아닌것도 float으로 만든다. 
float(&#39;nan&#39;) = nan</p>
<p>결론
numpy 로 넘어간다. </p>
<h3 id="2-string문자열containerhomo-sequence-immutable">2. string문자열(container)(homo, sequence, immutable)</h3>
<ul>
<li>str 유니코드</li>
<li>bite 유니코드로 못쓰고
<code>a = b&#39;abc&#39;</code></li>
<li>bitearray (mutable)</li>
<li>(memoryview)</li>
</ul>
<p><code>len</code>    </p>
<blockquote>
<p>&lt;function len(obj, /)&gt;</p>
</blockquote>
<p>파이썬은 문자열을 다루기 너무 편하다.</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/c99c175a-83fe-4548-992f-732b6d88388e/image.png" alt=""></p>
<h4 id="container">container</h4>
<ul>
<li><p>헤테로=헤테로지니어스 (Heterogenous) : 안에 들어갈 데이터 타입이 다른 것</p>
<ul>
<li>[1 , &#39;1&#39;] </li>
<li>ex) set, list 등</li>
</ul>
</li>
<li><p>호모=호모지니어스 (Homogenous) : 안에 들어갈 데이터 타입이 같은 것 </p>
<ul>
<li>속도가 빠르다. </li>
<li>import array 는 다 호모</li>
<li>딥러닝은 무조건 호모여야 한다. </li>
<li>ex) str 삼총사, range 등</li>
</ul>
</li>
<li><p>sequential Or non sequential</p>
</li>
</ul>
<p>sequential 문자
non sequential 집합</p>
<p>set 은 내부적으로는 순서를 만들지만, 우리 눈에은 안보이는 거지</p>
<p>질문 
순서가 있다면, indexing 할 수 있다.
<img src="https://velog.velcdn.com/images/wxxk_o/post/1b1c1318-9b18-4c08-8ecf-8bfd28f9a509/image.png" alt=""></p>
<p>여러개 뽑는건 slice 
<img src="https://velog.velcdn.com/images/wxxk_o/post/121c303f-95e1-4587-9941-61182074b0f1/image.png" alt="">
왜? 에러가 안나는거야?</p>
<ul>
<li>immutable</li>
</ul>
<h3 id="list-tuple">list, tuple</h3>
<p>list or tuple 차이는 mutable 차이
range(10)[3]
인덱싱 
슬라이싱 가능하다.</p>
<p>실무에서 리스트 쓰면 싸대기 맞는다. 
문제점이 많다.</p>
<p>what is mutable?
그렇다면 상수의 개념부터 정리하고 가야한다.</p>
<p>what is variable(변수), constant(상수)</p>
<p>a 는 변수가 아니다. name 이다. 
파이썬에는 상수가 없다. 그러면 변수는 뭐야?
상수처럼 취급은 가능하지만, 상수는 없다. 
<img src="https://velog.velcdn.com/images/wxxk_o/post/8a1088fe-d065-4907-a17e-fbde48f0384f/image.png" alt=""></p>
<p>변수는 재할당 가능하다. </p>
<p>a = 1
a = 2 
a는 1,2 로 변할 수 있잖아? 그러면 변수</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/ca39cb85-e948-4c7f-81d7-8d72c0a7456f/image.png" alt="">
자바에서는 오류 떠유!</p>
<p>변수는 재할당할때 id 이 달라진다. </p>
<p>Mutable(변하기 쉬운) 은 id가 바뀌지 않는다. </p>
<p>딥러닝의 weight는 Mutable 자기 자신 값이 바뀌게 한다. </p>
<p>mutable 내부적으로 메모리를 공유한다. </p>
<p>mutable 의 특징
<img src="https://velog.velcdn.com/images/wxxk_o/post/6a8e46b1-e9c8-4b40-87aa-4c47bc2f372a/image.png" alt="">
보면 
a = [1,2,3] 일거 같지만, [1,2,3,4 ]</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/99cd37ff-3925-4107-8405-c26a3503d9ce/image.png" alt="">
요렇게는, 명백하지 않기때문에 쓰지 않는다. </p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/0e9b20f9-c978-469c-9fc1-57ee727e964d/image.png" alt="">
요렇게 해야한다. </p>
<p>copy 방법
얕은 복사(shallow copy)와 깊은 복사(deep copy)</p>
<p>함수형 패러다임에서는 Mutable이 없는 데이터 타입을 한다.</p>
<p>tensorflow의 기본 타입은 tensor immutable(불변) 이다. </p>
<h4 id="list-hetero-sequencemutable">list (hetero, sequence,mutable)</h4>
<h4 id="tuple-hetero-sequenceimmutable">tuple (hetero, sequence,immutable)</h4>
<h4 id="1set-heteromutable">(1)set (hetero,mutable)</h4>
<h4 id="1frozenset-hetero-immutable">(1)frozenset (hetero, immutable)</h4>
<p>내가 정할 수 없는 순서를 가지고 있따. 
안에는 immutable 데이터만 넣을 수 있다. (tuple) but list는 불가능하다. </p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/aaacf3b9-3bf9-4e46-aee3-250afee1fe79/image.png" alt="">
mutable</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/d4c68cba-0bf2-4ec3-a5a8-4404da503d42/image.png" alt=""></p>
<h4 id="dict-mutablemapping-data">dict (mutable)mapping data</h4>
<p>dict = {&#39;a&#39;, 1} = {key , value}</p>
<p>key = 해시 데이터 타입 
는 immutable data</p>
<p>질문
a = {(1,2,3):1} 될까?
답
가능하다!</p>
<p>연습 
<img src="https://velog.velcdn.com/images/wxxk_o/post/506682e2-96c3-4249-9d8c-596454a8703e/image.png" alt=""></p>
<p>dict 기반으로 set 을 만들었다. </p>
<p>질문
data 와  value 의 차이점?
답
data = low 그자체!
value =  type으로! &gt; 그래서 이상한 타입을 본거야 </p>
<p>그러면 타입에 따라 다양한 기능이 나온다. 
식은 하나의 결과 값으로 축약이 가능하다. 
그러면 
연산을 알아야 한다. 연산자 알아야한다. </p>
<h2 id="연산자를-알아보자">연산자를 알아보자</h2>
<h3 id="산술-연산자">산술 연산자</h3>
<p>a = True + True
a =2 </p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/7698c9d6-7024-47cb-8ea4-5f43d9b5e094/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/35386855-6548-42e2-a8e7-395984769325/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/e9117d50-971f-44b1-a05e-aacda28b486a/image.png" alt="">
망했다 요 차이가 뭐야?
나머지 정리 알아봐야 한다. 
마이너스로 나누어서 나머지가 -
플러스로 나누어서 나머지가 +</p>
<p>3x + a 
a = 0,1,2</p>
<p>2<em>2</em>2</p>
<p>2**3 </p>
<p>두개 속도가 다른다. </p>
<p>opencv 를 보면, </p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/90d82702-30b5-4d8a-b167-2cbc0d43a696/image.png" alt=""></p>
<p>data type 마다 연산자 다르다! 성능다르다</p>
<p>질문
문자열 곱하기 가능해?
답변
<img src="https://velog.velcdn.com/images/wxxk_o/post/f58068e1-1af1-49eb-b709-00bfb5b59ab7/image.png" alt="">
이 데이터 타입에서는 이 연산자 지원하지 않는다는 의미</p>
<p>seq * 4 는 같다.
<img src="https://velog.velcdn.com/images/wxxk_o/post/32520622-3fdc-4aa3-8803-a870e3ae7580/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/6594d717-4d89-4119-a7d1-0bc70d6ecdbf/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/377af08f-3fd7-4df8-be1d-225e9c5310d3/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/1f884161-7df0-4c1b-ace5-9d16eb7551af/image.png" alt=""></p>
<p>(1,2,3) + [2,3,4]
= 오류 
집합 mutable, 리스트 immutable</p>
<p>정리 
값은 값이여도 데이터 마다 연산자가 다르기 때문에 속도가 달라지는 거다. </p>
<p>3 + 3.1
int + float 인데, 변경해서 하는거
= 6.1</p>
<p>pandas?</p>
<p>coercion (코어션)
같은 형의 두 인자를 수반하는 연산이 일어나는 동안, 한 형의 인스턴스를 다른 형으로 묵시적으로 변환하는 것. 예를 들어, int(3.15)는 실수를 정수 3으로 변환합니다. 하지만, 3+4.5 에서, 각 인자는 다른 형이고 (하나는 int, 다른 하나는 float), 둘을 더하기 전에 같은 형으로 변환해야 합니다. 그렇지 않으면 TypeError를 일으킵니다. 코어션 없이는, 호환되는 형들조차도 프로그래머가 같은 형으로 정규화해주어야 합니다, 예를 들어, 그냥 3+4.5 하는 대신 float(3)+4.5.</p>
<p>더 큰 데이터 타입으로 변경하고 더 해준다. </p>
<h3 id="비교연산자">비교연산자</h3>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/2e86d03c-288d-4a98-b026-d65b95bcdacf/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/e0360061-4deb-43c7-8bf7-40d83689528f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/2b7854a4-8c91-401f-a06d-5b8dbf22ca94/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/161b20ba-fd69-42ff-9cdd-675853fe401c/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/f1d735c6-1537-4ce8-b5b7-3e829312f1ef/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/f1926c5e-fb91-418c-9da1-6a1f5cd44e4a/image.png" alt="">
옹 메모리 값이 왜 똑같이?</p>
<p>연산자마다 특징이있다. 
파이썬은 너무 느려서 범위를 정해놓았다. </p>
<p>-5 ~ 256 까지는 동일한 메모리 = interning</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/bf6ed185-ef26-4f5f-8838-4a4d752247ea/image.png" alt="">
재밌는 세상이 열린다. </p>
<h4 id="and-or">and, or</h4>
<p>정수에 없다? = 0
없는 것은 거짓이다. = </p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/4732f403-e598-47c7-bce6-6eb40b125566/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/703f03e7-4129-498b-ba6d-d75df3f794d6/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/13804700-4e61-44ab-b0f6-53bb80b1afea/image.png" alt="">
옹 신기한다, 앞이 참이니까, 에러가 </p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/cacd6d7c-2219-4016-85bd-33d1d02c4f91/image.png" alt="">
반대는 틀리겠지?
^^^
|||
short circuit 테크닉</p>
<p>Operator overloadding 을 알게 되어야 한다. </p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/b3418cf8-5741-4fc0-bd61-221ef164b267/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/6b4027f2-66da-457b-9c03-5a1748bb9c87/image.png" alt="">
요기보면 차이가 나네? keyword 면 두껍네 </p>
<p>걍 help(&#39;and&#39;) 해봐 그러면 알려줄거야!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[일주일 한편 논문 읽기]]></title>
            <link>https://velog.io/@wxxk_o/%EC%9D%BC%EC%A3%BC%EC%9D%BC-%ED%95%9C%ED%8E%B8-%EB%85%BC%EB%AC%B8-%EC%9D%BD%EA%B8%B0</link>
            <guid>https://velog.io/@wxxk_o/%EC%9D%BC%EC%A3%BC%EC%9D%BC-%ED%95%9C%ED%8E%B8-%EB%85%BC%EB%AC%B8-%EC%9D%BD%EA%B8%B0</guid>
            <pubDate>Wed, 01 Mar 2023 08:55:29 GMT</pubDate>
            <description><![CDATA[<p>ㅇㅇ</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Colab 디스크 용량과 구글 Drive 용량은 서로 별개다.]]></title>
            <link>https://velog.io/@wxxk_o/Colab-%EB%94%94%EC%8A%A4%ED%81%AC-%EC%9A%A9%EB%9F%89%EA%B3%BC-%EA%B5%AC%EA%B8%80-Drive-%EC%9A%A9%EB%9F%89%EC%9D%80-%EC%84%9C%EB%A1%9C-%EB%B3%84%EA%B0%9C%EB%8B%A4</link>
            <guid>https://velog.io/@wxxk_o/Colab-%EB%94%94%EC%8A%A4%ED%81%AC-%EC%9A%A9%EB%9F%89%EA%B3%BC-%EA%B5%AC%EA%B8%80-Drive-%EC%9A%A9%EB%9F%89%EC%9D%80-%EC%84%9C%EB%A1%9C-%EB%B3%84%EA%B0%9C%EB%8B%A4</guid>
            <pubDate>Sun, 26 Feb 2023 09:57:50 GMT</pubDate>
            <description><![CDATA[<p>여러분!</p>
<p>아무리 구글 드라이브 용량을 확장해도, 코랩에는 영향이 없습니다.</p>
<p>colab에서 디스크 용량은, google drive 랑 아무관계가 없습니다.</p>
<p>예를 들어서</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/407ffff2-ae18-45ce-8dc7-402426281d64/image.png" alt=""></p>
<p>google colab pro 같은 경우, 디스크 용량이 166.8GB로 주어지고, 기본 할당이 25.8gb 정도입니다.
제가 google drive 용량은 200GB을 쓰고 있지만, colab pro를 쓰고 있기때문에 166gb 디스크 용량을 할당 받았습니다..</p>
<p><img src="https://velog.velcdn.com/images/wxxk_o/post/a08cb019-3c2f-49b1-a9c0-6de990c518bb/image.png" alt="">
기본 colab은 78.2gb 를 할당 받고, 25.8gb가 기본 할당이다.</p>
]]></description>
        </item>
    </channel>
</rss>