2024년 9월 21일 토요일

레이저 데스에더 에센셜(Razer DeathAdder Essential) 유선 마우스

Razer DeathAdder Essential

로지텍 G102 더블클릭현상 나는 거 계속 살려가며 쓰다 이번에 사본 레이저의 염가판 마우스


사이즈: 127mm / 73mm / 43mm, 무게 96g, 케이블 1.8m


측면 버튼

사이즈 비교샷

케이블 묶는 고무줄하고 USB포트 커버가 고급지다.

매뉴얼과 스티커

로지텍하고 MS만 쓰다 레이저는 처음 써 봤는데 묵직하니 좋다.

스위치는 튼튼할 것 같은데 염가판 버전이다보니 휠 고장 이슈가 있는 모양이다. 그래도 보증기간이 2년이니 문제생기면 A/S 받으면 될듯

2024년 8월 19일 월요일

애드거 앨런 포 단편선 후기

이름만 겁나 많이 들어본 애드거 앨런 포

민음사에서 나온 단편집이 도서관에 있길래 빌려봤다. 그냥 시인인줄 알았는데 소설가로 분류됨.

인기도서라 서가에 있는 시간보다 사람들 빌려가는 시간이 많은 것 같음.

연장하려고 다음날 연장신청 하니 바로 누가 예약해놔서 예약불가 뜸.


작가가 미스테리함을 좋아하는 것 같음. 고딕스럽기도 하고 도파민이 계속 터지는 내용들이긴 한데 내 취향과는 거리가 좀 있는듯. 읽어보면 왜 명작이라는지 알 수 있다.

조금 어렵기도 하다. 어디서 소개하기로는 보르헤스의 원조격이라 할 수 있다고도 하는데 보르헤스의 단편을 읽을 때처럼 상상력을 자극하는 부분이 있다.

그중에는 물론 교훈을 주는 단편도 들어있음. 자기반성인지 교훈 전파인지는 모르겠지만 읽는 입장에서는 긍정적으로 보이기도 함.

공통된 소재로는 높은 파도나 소용돌이, 아편 등이 있는데 작가가 약물 경험이 있는지 아니면 그 시대상 마약이 문제가 되어서인지 약에 취한것과 비슷한 상태의 묘사를 하고싶어한다.

이런 부분 나올 때 긍정적으로 읽히지는 않으니 약물에 반대하는 입장에서 그렇게 썼을지도 모르겠다. 내 뇌피셜임.

넷플릭스 드라마 웬즈데이에서도 기숙학교 동문에 까마득한 선배로도 나오는데 드라마의 미스테리한 분위기와 어울리는 것 같다.

조금 어렵지만 재밌는 책이었음

2024년 7월 29일 월요일

PyTorch vs Tensorflow 코드 비교

목표는 파이토치로 모델을 구현하고 안드로이드용 모바일 버전 포팅 시에만 TFLite로 변환
공부하다 보니 근본적인 구조는 비슷한 것 같다.

간단한 모델 비교: PyTorch 버전

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset

# 데이터셋 생성
x_data = torch.randn(100, 10)
y_data = torch.randint(0, 2, (100, 1)).float()
dataset = TensorDataset(x_data, y_data)
dataloader = DataLoader(dataset, batch_size=10, shuffle=True)

# 모델 정의
class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.layer = nn.Linear(10, 1)
    
    def forward(self, x):
        return torch.sigmoid(self.layer(x))

model = SimpleNN()

# 손실 함수 및 최적화
criterion = nn.BCELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 학습 루프
for epoch in range(100):
    for batch_x, batch_y in dataloader:
        # 순전파
        outputs = model(batch_x)
        loss = criterion(outputs, batch_y)
        
        # 역전파 및 최적화
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    
    if (epoch + 1) % 10 == 0:
        print(f'Epoch [{epoch+1}/100], Loss: {loss.item():.4f}')

# 추론
with torch.no_grad():
    new_data = torch.randn(5, 10)
    predictions = model(new_data)
    print(predictions)


같은 모델의 Tensorflow 구현버전

import tensorflow as tf

# 데이터셋 생성
x_data = tf.random.normal([100, 10])
y_data = tf.random.uniform([100, 1], minval=0, maxval=2, dtype=tf.int32)

dataset = tf.data.Dataset.from_tensor_slices((x_data, y_data))
dataset = dataset.batch(10).shuffle(100)

# 모델 정의
class SimpleNN(tf.keras.Model):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.layer = tf.keras.layers.Dense(1, activation='sigmoid')
    
    def call(self, x):
        return self.layer(x)

model = SimpleNN()

# 손실 함수 및 최적화
criterion = tf.keras.losses.BinaryCrossentropy()
optimizer = tf.keras.optimizers.SGD(learning_rate=0.01)

# 학습 루프
for epoch in range(100):
    for batch_x, batch_y in dataset:
        with tf.GradientTape() as tape:
            outputs = model(batch_x)
            loss = criterion(batch_y, outputs)
        
        grads = tape.gradient(loss, model.trainable_variables)
        optimizer.apply_gradients(zip(grads, model.trainable_variables))
    
    if (epoch + 1) % 10 == 0:
        print(f'Epoch [{epoch+1}/100], Loss: {loss.numpy():.4f}')

# 추론
new_data = tf.random.normal([5, 10])
predictions = model(new_data)
print(predictions)

2024년 7월 23일 화요일

진짜 아스가르드 선수



Aasgaard (아스고르)

풋빈 가보면 댓글 난리나있음.

이 선수를 토르가 좋아합니다.


Transformer Model 직접 구현해보기 튜토리얼

Build your own Transformer from scratch using Pytorch


Building a Transformer model step by step in Pytorch


Pytorch를 이용해서 트랜스포머 모델을 밑바닥부터 구현해보는 예제

medium 블로그에 해외 저자가 쓴 튜토리얼인데 번역기 돌려도 읽을만 하고 천천히 공부하기에 좋아 보인다.

“Attention is All You Need” 논문이 나온지 오래 지났지만 어쨌든 아직도 많이 사용되고 언어모델 외에도 광범위하게 활용되고 있기 때문에 코드까지 공부하고 지나가면 도움이 많이 될 것 같다.


2024년 6월 7일 금요일

Android 신버전 gradle 빌드 에러(Naver Maps SDK)

시간이 좀 된 프로젝트를 빌드하려 했더니 나베르 API 부분에서 에러 발생

Certificate for <navercorp.bintray.com> doesn't match any of the subject alternative names: [*.jfrog.io, *.int.jfrog.io, jfrog.io, *.pe.jfrog.io]


아래 답변보고 해결함. 역시 누군가 먼저 고생을..

https://developers.naver.com/forum/posts/30884


https://navercorp.bintray.com/maps 주소를

https://naver.jfrog.io/artifactory/maven/

로 변경


API나 저장소 주소같은 걸 바꿔버리면 좀 치명적이지 않나..

deprecation warning같은 걸 띄워주는 유예기간을 주긴 하겠지만 그래도

2024년 5월 29일 수요일

P-Flow TTS 논문 번역(3장)

논문 링크

코드: https://github.com/p0p4k/pflowtts_pytorch (비공식)


3. METHOD

본 연구의 목표는 고품질 및 빠른 non-autoregressive TTS 모델에서 제로샷 화자 적응을 위한 context 내 학습 기능을 제공하는 것이다. 참조 음성에서 화자 정보를 추출하는 화자 임베딩 접근법의 잠재적 병목 현상을 피하기 위해, 신경 코덱 언어 모델과 유사하게 참조 음성을 화자 적응을 위한 프롬프트로 직접 활용하는 접근 방식을 채택한다. 음성 프롬프트 방법 외에도 효율적인 샘플링을 위해 플로우 매칭 생성 모델을 사용한다. 본 방법의 개요는 3.1절에서 제공되며, 3.2절에서 디코더에 대한 자세한 설명을 제공하고, 나머지 세부 사항은 3.3절에서 설명한다.

3.1 P-Flow

P-Flow 훈련은 마스크드 오토인코더와 유사하다. <텍스트, 음성> 쌍 데이터를 주어, 음성의 멜-스펙트로그램을 x, 텍스트를 c로 표시한다. x에서 임의로 위치한 3초 세그먼트를 마스킹하는 $m^p$를 정의한다. 우리는 $x^p = (1−m^p)·x$로 정의한다. 훈련 중 P-Flow의 목표는 c와 일부 세그먼트 $x^p$가 주어진 상태에서 x를 재구성하는 것이다. 훈련 중에는 P-Flow가 $x^p$를 포함한 x 전체를 재구성할 것으로 예상하지만, 모델은 x 내의 $x^p$의 정확한 위치를 지정하지 않는다.

P-Flow는 c와 일부 세그먼트 $x^p$가 주어진 상태에서 음성의 조건부 확률 분포 $p(x|c, x^p)$을 모델링하는 법을 학습한다. 많은 제로샷 TTS 모델이 모든 정보를 고정 크기 벡터로 압축하는 것과 달리, 우리는 텍스트 c와 음성 프롬프트 $x^p$를 받아 화자 조건 텍스트 표현을 생성하는 텍스트 인코더 $f_{enc}$를 도입한다. 우리는 이 텍스트 인코더를 음성 프롬프트 텍스트 인코더라 부른다. 이 텍스트 인코더의 출력은 플로우 매칭 생성 모델을 사용하여 멜-스펙트로그램으로 매핑되고, 마지막으로 오디오 보코더를 사용하여 waveform으로 변환된다.

음성 프롬프트 텍스트 인코더:

그림 1a와 같이, 우리는 텍스트 입력 c와 함께 음성 프롬프트로써 임의 세그먼트 $x^p$의 멜-스펙트로그램을 입력한다. 그런 다음 둘 다 동일한 차원으로 투영하여 텍스트 인코더의 입력으로 사용한다. 음성 프롬프트 텍스트 인코더의 역할은 프롬프트 $x^p$에서 추출된 화자 정보를 사용하여 화자 조건 텍스트 표현 $h_c = f_{enc}(x^p, c)$를 생성하는 것이다. 대규모 코덱 언어 모델과 유사하게, 우리는 임의의 텍스트 위치에서 음성 프롬프트에 어텐션할 수 있는 non-autoregressive 트랜스포머 구조를 사용한다.

Figure 1: The overall diagram of P-Flow. P-Flow is a model composed of a speech-prompted text encoder, which outputs a representation containing speaker information from the speech prompt, and a flow matching decoder generates high-quality speech significantly faster than real-time.

음성 프롬프트 텍스트 인코더가 음성 프롬프트에서 화자 정보를 효과적으로 추출하도록 훈련하기 위해, 텍스트 인코더 표현과 멜-스펙트로그램 사이의 거리를 최소화하는 인코더 손실을 사용한다. 이는 단일 화자 TTS 모델의 샘플링 단계를 줄이기 위한 Grad-TTS [30]에서의 원래 목적 외에도, 생성된 텍스트 표현에 화자 관련 세부 사항을 포함하도록 인코더를 장려한다.

음성 프롬프트된 인코더 출력 $h_c$와 멜-스펙트로그램 x의 길이가 다르기 때문에, Glow-TTS [21]에서 제안된 monotonic alignment search (MAS) 알고리즘을 사용하여 텍스트 인코더 출력을 멜-스펙트로그램과 정렬한다. MAS를 적용하여 텍스트 인코더 출력과 멜-스펙트로그램 사이의 전체 L2 거리를 최소화하는 정렬 $A = MAS(h_c, x)$을 도출한다. 정렬 A를 기반으로 각 텍스트 토큰의 지속 시간 d를 결정하고 텍스트 토큰의 지속 시간에 따라 인코더 출력을 복제하여 $h_c$를 확장한다. 이 정렬 프로세스는 멜-스펙트로그램 x와 정렬된 텍스트 인코더 출력 h를 생성한다. 비교적 간단한 재구성 손실은 $L_{enc} = MSE(h, x)$로 작성된다.

실제 훈련에서는 모델이 훈련 중 x 내에서 $x^p$의 정확한 위치를 제공받지 않더라도 여전히 $x^p$의 사소한 복사-붙여넣기(collapse to trivial copy-pasting)로 수렴한다. 이를 피하기 위해, 우리는 $x^p$에 해당하는 세그먼트의 재구성 손실을 단순히 마스킹한다. 그럼에도 불구하고 최종 모델은 여전히 연속적인 멜-스펙트로그램 시퀀스를 추론할 수 있다. 마스크된 인코더 손실 $L^p_{enc}$는 멜-스펙트로그램 x의 무작위 세그먼트 xp에 대해 $m^p$를 사용하여 다음과 같이 정의된다:

$L^p_{enc} = MSE(h · m^p, x · m^p)$

이 손실을 최소화함으로써, 인코더는 주어진 음성 x와 유사한 정렬된 출력을 생성하기 위해 음성 프롬프트에서 가능한 한 많은 화자 정보를 추출하도록 훈련된다. 이는 화자 적응을 위한 context 내 학습 기능을 향상시킨다.

플로우 매칭 디코더:

고품질 및 빠른 제로샷 TTS를 수행하기 위해, 우리는 플로우 매칭 생성 모델을 디코더로 사용하여 $p(x|h)$의 조건부 확률 분포를 모델링한다. 플로우 매칭 디코더는 연속 정규화 플로우(CNF)의 조건부 벡터 필드 $v_t(·|h)$를 모델링하여 표준 정규 분포에서 데이터 분포로의 조건부 매핑을 나타낸다. 디코더는 $L^p_{cfm}$이라는 플로우 매칭 손실을 사용하여 무작위 세그먼트에 대한 마스크를 적용하여 훈련된다. 자세한 내용은 3.2절에서 제공된다.

지속시간(duration) 예측기:

MAS가 사용되지 않는 추론 중 텍스트-토큰 지속 시간을 재현하기 위해, 우리는 [21]과 유사한 방식으로 훈련된 지속 시간 예측기를 사용한다. 지속 시간 예측기는 텍스트 인코더의 숨겨진 표현을 추가 화자 조건 없이 입력으로 사용하며, 이 표현은 이미 화자 정보를 포함하고 있다. 이는 텍스트 인코더 훈련에 영향을 미치지 않기 위해 분리된 입력을 사용하여 모델의 나머지 부분과 동시에 훈련된다. 지속 시간 예측기는 각 텍스트 토큰의 로그-스케일 지속 시간 log d̂를 추정하며, 지속 시간 예측기의 훈련 목표 $L_{dur}$는 훈련 중 MAS를 통해 얻은 로그-스케일 지속 시간 log d와의 평균 제곱 오차를 최소화하는 것이다.

P-Flow의 전체 훈련 손실은 다음과 같다:

$L = L^p_{enc} + L^p_{cfm} + L_{dur}$

제로샷 추론에서는 텍스트 인코더에 입력으로 사용할 참조 샘플에서 무작위 청크를 사용하며, 원하는 텍스트를 입력으로 사용하여 $h_c$를 얻는다. 우리는 음성 프롬프트에 해당하는 전사를 제공하지 않는다. 그런 다음, 지속 시간 예측기에서 예측된 d̂를 사용하여 $h_c$를 확장하고, 플로우 매칭 디코더를 사용하여 개인화된 음성을 생성한다.

3.2 플로우 매칭 디코더

플로우 매칭을 사용하여 멜-스펙트로그램 디코더 작업의 조건부 분포 $p(x|h)$을 모델링한다. 먼저 플로우 매칭의 개요를 제공한 후 샘플링 절차와 추가적인 질적 개선을 위한 가이드 관련 기술을 설명한다.

Figure 2: Conditional Flow Matching [23] can be supervised with linear conditional trajectories during training when mapping between the complex pdata and the sampling Gaussian, leading to simpler marginal trajectories during inference. Simpler trajectories require fewer function evaluations.


플로우 매칭 개요:

플로우 매칭 [23, 35, 24]은 데이터 밀도 $p_1(x)$와 더 간단한 샘플링 밀도 $p_0(x)$ (기본적으로 표준 정규 분포)를 연결하는 시간 종속 확률 경로에 맞추는 방법이다. 이는 연속 정규화 플로우와 밀접한 관련이 있지만, 확산 및 스코어 매칭 모델 [13, 16, 34]의 일반적인 설정과 유사한 방식으로 시뮬레이션 없는 효율적인 훈련이 가능하다. 우리는 [23]에서 명시된 조건부 플로우 매칭을 채택하여, 소스와 타겟 분포 간의 더 간단하고 종종 직선적인 궤적을 권장한다. 더 간단한 궤적은 추가 증류 없이 테스트 시 샘플링 단계를 줄이는 데 유리하다. 간단히 하기 위해, 이 개요에서는 조건부 변수 h를 무시한다.

Lipman et al. [23]을 따라, 우리는 플로우 $ϕ : [0, 1] × \mathbb{R}^d → \mathbb{R}^d$를 다음 ODE를 사용하여 두 밀도 함수 간의 매핑으로 정의한다:

$\frac{d}{dt} ϕ_t(x) = v_t(ϕ_t(x)); ϕ_0(x) = x$

여기서 $v_t(x)$는 시간 종속 벡터 필드로, 시간에 따른 확률 흐름의 궤적을 지정한다. $v_t(x)$는 또한 우리의 학습 가능한 구성 요소로, 앞으로는 $v_t(ϕ(x); θ)$로 표시한다. 분포에서 샘플링하려면, $t = 0$에서 샘플링 분포 $p_0$에서 초기 조건을 샘플링하고, Eq. (2)에서 ODE를 해결한다. 특히, [23]의 공식은 더 직선적인 궤적을 권장하여, 10개의 오일러 단계로 ODE 해를 저렴하게 근사할 수 있다.

실제로 $ϕ_t(x)$의 주변 흐름을 결정하는 것은 어렵다. 따라서 Lipman은 이를 다음과 같이 여러 조건부 흐름 $ϕ_t,x_1(x)$을 통해 주변화(marginalizing)하는 방식으로 공식화한다:

$ϕ_t,x_1(x) = σ_t(x_1)x + μ_t(x_1)$

여기서 $σ_t(x_1)$와 $μ_t(x_1)$는 시간 조건부 아핀 변환으로, 가우시안 분포 $p_1$과 $p_0$ 간의 변환을 매개변수화한다. 마지막으로, $q(x_1)$를 우리의 데이터에 대한 실제지만 아마도 비가우시안 분포로 정의한다. 우리는 $σ_{min}$(경험적으로 0.01로 설정됨)으로 약간의 백색 잡음을 추가하여 개별 샘플을 섭동하여 q의 혼합 가우시안 근사치로 $p_1$을 정의한다. 우리는 SDE 공식에서의 확률성에서 오는 복잡함 없이 궤적을 지정할 수 있다.

이를 활용하여, Lipman et al.은 간단한 선형 궤적을 권장하며, $ϕ_t$를 위한 다음 매개변수를 도출한다:

$μ_t(x) = tx_1, σ_t(x) = 1 - (1 - σ_{min})t$

벡터 필드를 훈련하는 것은 조건부 플로우 매칭 목표 함수 LCFM (θ)를 사용하여 수행된다:

$L_{CFM} (θ) = \mathbb{E}_{t∼U [0,1],x_1∼q(x_1),x_0∼p(x_0)} ∥v_t(ϕ_t,x_1 (x_0); θ) - \frac{d}{dt} ϕ_t,x_1 (x_0)∥^2$

Eq. (4)를 Eq. (3) 및 (5)에 대입하면 최종 CFM 목표가 도출된다:

$L_{CFM} (θ) = \mathbb{E}{t,q(x_1),p(x_0)} ∥v_t(ϕ_t,x_1(x_0); θ) - (x_1 - (1 - σ{min})x_0)∥^2$

 

마스크된 플로우 매칭 손실:

플로우 매칭 디코더는 텍스트 인코더의 출력 h로 제공된 하위 세그먼트 $x^p ∈ x$에 의해 제공되므로, $x^p$에 해당하는 출력 부분에 대한 손실을 다시 마스킹해야 할 필요가 있었다. 일반적인 $v_t(x_t; θ)$는 $v̂_θ(x_t, h, t)$로 매개변수화되어 조건부를 설명한다. 여기서 t는 연속적인 사인파 임베딩으로 표현된다. 이를 통해 마스크된 CFM 목표가 도출된다:

$L^p_{CFM} (θ) = \mathbb{E}{t,q(x_1),p(x_0)} ∥m^p · (v̂_θ(ϕ_t,x_1(x_0), h, t) - (x_1 - (1 - σ{min})x_0))∥^2$

 

샘플링:

조건부 플로우 매칭 손실은 조건부 벡터 필드를 주변화하여 샘플링 중에 사용되는 주변 벡터 필드를 달성한다. 선형적으로 보간된 조건부 궤적은 결과적으로 동일한 직선성을 보장하지는 않지만, 우리는 여전히 꽤 유사한 것을 얻는다. 본 연구에서는 첫 번째 오일러 방법을 사용하여 10단계로 ODE를 해결하는 것이 충분히 간단한 궤적을 제공하는 것을 발견했다. N 오일러 단계로 샘플링은 다음 재귀 관계를 사용하여 수행된다:

$x_0 ∼ N (0, I); x_{t+ \frac{1}{N}} = x_t + \frac{1}{N} v̂_θ(x_t, h, t)$

 

가이디드 샘플링:

발음 명확성을 더욱 향상시키기 위해, classifier-free guidance (CFG) 방법 [14]에서의 기술을 적용한다. 관련 연구에서, GLIDE [29]는 빈 텍스트 시퀀스에 대한 궤적을 빼는 방식으로 텍스트 조건부 샘플링 궤적을 증폭시킨다. 우리는 유사한 공식을 사용하여, 평균 특징 벡터에서 궤적을 멀리 유도한다. γ를 가이드 스케일로 한다. 우리의 가이드 증폭된 오일러 공식은 다음과 같다:

$x_{t+ \frac{1}{N}} = x_t + \frac{1}{N} (v̂_θ(x_t, h, t) + γ(v̂_θ(x_t, h, t) - v̂_θ(x_t, h̄, t))$

 

3.3 모델 세부 사항

고수준 모델 아키텍처는 그림 1에 나와 있다. 본 모델은 세 가지 주요 구성 요소로 구성된다: 프롬프트 기반 텍스트 인코더, 추론 중 음소 지속 시간을 복원하기 위한 지속 시간 예측기, 및 Wavenet 기반 플로우 매칭 디코더. 실험에서는 텍스트 인코더가 단지 3백만 개 파라미터의 소형 트랜스포머 구조를 포함하더라도 강력한 제로샷 결과를 보인다. 각 구성 요소에 대한 추가 아키텍처 세부 사항은 섹션 B에 제공된다.


주요 인용(우선순위 순으로)

[23] Lipman, Y., Chen, R. T. Q., Ben-Hamu, H., Nickel, M., & Le, M. (2022). Flow Matching for Generative Modeling. arXiv preprint arXiv:2210.02747.

[37] Wang, C., Chen, S., Wu, Y., Zhang, Z., Zhou, L., Liu, S., Chen, Z., Liu, Y., Wang, H., Li, J., et al. (2023). Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers. arXiv preprint arXiv:2301.02111.

[24] Liu, X., Gong, C., & Liu, Q. (2022). Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow. arXiv preprint arXiv:2209.03003.


2024년 5월 28일 화요일

Google Colab에 생긴 프롬프트 기반 코드 생성

어느샌가 Colab에도 프롬프트 입력란이 생겼길래 써봤음.
프롬프트만 잘 쓰면 간단한 코드는 거의 의도된대로 만들어준다.
그냥 생각없이 써봤는데 생성 결과가 잘 나와서 놀랐음.
라이선스 체크까지 해주는 건 아니므로 업무적 사용 시 주의 필요

[원본 예제]



[AI 생성코드]




2024년 5월 27일 월요일

오늘은 메모리얼 데이(미국장 휴장일)

2024년 5월 27일은 메모리얼 데이로 미국증시 휴장


남북전쟁에서 전사한 군인들을 추모하는 날이었다가 제 1차 세계대전 이후로 전쟁 및 군사작전에서 사망한 모든 군인들을 기리는 날로 바뀜

매년 5월 마지막주 월요일로 지정

우리나라의 현충일하고 시기가 비슷하다.


휴장스인줄 모르고 설레발쳤다. 지난번 대통령의 날처럼 주요 일정은 미리미리 알아두자.

2024년 5월 21일 화요일

[EA FC24] 토츠 쇠붕이 SBC 출시!

 

Laliga TOTS Sørloth 완료

EA의 마지막 선물 쇠붕이 토츠버전 카드가 드디어 나왔다.
엊그제 레알전에서 4골을 몰아친 미친 득점력
게임에서도 무서울 것 같다.
뚝배기에 컴포저99에 Mostly 렝시에 금특에 스탯만 봐도 막강해 보임

재료값: 대략 6만코인대

83, 86짜리 깨면 되니까 대충 가지고있는걸로 금방 연성함

자야 해서 아직 못돌려봄

올시즌 득점왕까지 했는데 안내주면 섭하지..

인폼만 해도 꽤 좋았는데 기대가 됩니다.

2024년 5월 17일 금요일

glot.io 브라우저 기반 간단한 무료 온라인 코딩 도구

glot.io

https://glot.io/new/c


C언어 외에도 다양한 언어를 지원한다. 간만에 가보니 종류가 더 늘은 것 같다. 요새 핫한 Dart, Rust, Typescript 등도 있음.




편집기와 실행 화면. 그자리에서 컴파일된다. 입력 데이터도 별도로 지정가능


저장 기능(공유를 위한 public, 혼자 보기 위한 private 둘 다 지원)도 있고, 간단한 테스트나 공부하는 용도로 좋음





2024년 5월 10일 금요일

유로 트럭용 미친 스티어링 휠 컨트롤러 등장(HORI)

유튜브에서 유로트럭 시뮬레이터 영상 한 번 봤다고 갑자기 메인에 이런 게 뜸




호리에서 나온 드라이빙용 포스 피드백 트럭 컨트롤 시스템

깜빡이 넣는 펑션 스틱까지 있는 것이 놀랍다. 기어봉 앞에있는 대형트럭용 버튼들도.


Windows PC용이고 유로트럭2나 아메리칸트럭 시리즈에 대응해서 나온듯




2024년 5월 7일 화요일

분류성능평가지표 - F1 Score와 정확도, 정밀도, 재현도

F1 Score: 정밀도(Precision)와 재현도(Recall)의 조화평균

                  2 * Precision * Recall
F1 Score = ----------------------------
                    Precision + Recall


정확도(Accuracy): 전체 데이터 중 모델이 올바르게 분류한(TP+TN) 비율

          TP + TN
  ----------------------
  TP + FN + FP + TN


정밀도(Precision): Positive로 분류된 예측값(TP+FP) 중 실제로 맞춘 비율(TP)

      TP
  ---------
  TP + FP


재현도(Recall): Sensitivity라고도 불린다. 실제값 Positive 중 예측값이 Positive로 분류된 비율

      TP
  ---------
  TP + FN


2024년 5월 4일 토요일

축구 잡담 - 지로나 FC

라리가 34R 경기를 시청 중 이제야 알게 된 나만 모르고 있던 사실.


해설자 설명에 지로나도 카탈루냐 지역이라고 한다.

(바르샤에서 1시간~1시간 반 정도의 거리)


역시 나는 축알못이었음.


마침 지로나에서 뛰던 백승호의 EFL 챔피언십 데뷔골도 좀전에 터짐 ㅅㅅㅅ


아무튼 올시즌 지로나의 막강한 화력이 인상적이다.


ATM도 아니고 비야레알도 아님


2024년 5월 3일 금요일

C언어의 memcpy() src와 dst 순서가 헷갈린다면

메모리를 복사하는 memcpy()함수의 인자 순서는
memcpy(dst, src, size) 인데

아직도 종종 생각없이 쓰다가 혹시 실수했나 싶어서 레퍼런스를 찾아본다.
다행히도 여태 실수로 순서를 뒤집은 적은 없음.



혼동된다면 우변에서 좌변으로 값을 보내는 변수대입 시 기본문법으로 기억해야겠다.

2024년 4월 30일 화요일

WIndows 10의 Hyper-V 에서 우분투 20 가상머신 GUI 커서반응이 느릴 때 해결법

Hyper-V에서 우분투 20.04 LTS를 GUI로 사용중인데 커서 반응이 답답하고 딜레이가 일정하게 살짝 있어서 실수를 유발할 수도 있었다.

대부분 사람들은 콘솔창 기반으로 사용하지만 나는 우분투 리눅스용 VSCode를 설치해서 사용중임. 그리고 GitHub Desktop도 있다.


아래와 같이 해결


1. nano 에디터로 conf 파일 편집

sudo nano /etc/modprobe.d/blacklist.conf


blacklist.conf 파일 편집화면 예


2. 파일의 맨 아래로 가서 아래 라인 추가 후 저장 -> 종료 -> 재부팅하면 적용됨

blacklist hyperv_fb

저장은 Ctrl + X 후 Y키로 Yes 선택

파일명 그대로 Enter 입력


3. 재부팅 후 해상도가 1024*768로 리셋된다. 디스플레이 설정으로 되돌리면 됨


적용해보니 성공함. 진짜로 커서이동이 부드러워짐. 아직 미세한 딜레이가 체감되긴 하지만 설정 적용 전의 프레임레이트 반토막난듯한 끊기는 느낌+딜레이 보다는 훨씬 나음.

아래 참조 페이지에 있던 답변처럼 그야말로 much better다.


참조: https://askubuntu.com/questions/1263977/ubuntu-on-hyper-v-sluggish-slow-ui-experience

2024년 4월 5일 금요일

VITS2 코드 Windows에서 실행해보기

VITS2 논문 구현 코드 실행기


소스코드는 다른 분이 구현한 코드도 있지만 아래 github 링크의 코드로 실행함

https://github.com/p0p4k/vits2_pytorch

- Dataset: LJSpeech

- Windows에서 특정 디렉토리로 심볼릭 링크는 mklink /d 명령어를 이용한다. cmd에서 되고 powershell에서는 없는 명령어라 나옴.

- Monotonic Alignment 툴 빌드중 에러가 난다면 MS Visual Studio의 build tool을 설치해주면 된다.


1. Windows에서 espeak 설치

여기에서 x64용 msi파일을 다운로드받음.

https://github.com/espeak-ng/espeak-ng/releases

(espeak-ng-X64.msi)

참고로 sourceforage에 있는 espeak 설치본은 깔아봐도(SAPI5 어쩌고 있는 패키지) 해결 불가

msi 패키지를 설치했으나 이런 에러가 나온다. 설치만 하면 끝이 아니고 환경변수 설정이 필요함.


환경변수 설정(msi패키지에서 시스템에 설치해서 나도 그냥 시스템 환경변수에다 함)

시작메뉴의 찾기 입력란(돋보기 아이콘 있는 칸)에 path를 타이핑하면 설정 메뉴가 바로 뜸






x64버전으로 설치했으므로 Program Files (x86) 이 아닌 그냥 Program Files 경로로 설정

PHONEMIZER_ESPEAK_LIBRARY=”C:\Program Files\eSpeak NG\libespeak-ng.dll” (default path)


“파일 찾아보기” 버튼을 클릭해서 .dll파일명까지 포함한 전체경로를 값으로 설정

PHONEMIZER_ESPEAK_PATH=”C:\Program Files\eSpeak NG”


“디렉터리 찾아보기” 버튼을 클릭해서 폴더 경로까지만 값으로 설정

환경변수 설정 후 다시 실행했더니 넘어간다. (안되면 재부팅 후 시도)


2. NVidia CUDA 관련

그다음은 NVidia cuda 관련 에러들이다

torch.cuda.is_available() == false로 나옴

torch 패키지를 지우고 cuda 버전에 맞춰 다시 설치

아래는 pytorch 홈페이지에서 내 환경에 맞춰 만들어준 명령어

(https://pytorch.org/get-started/locally/)

Windows + pycharm pip + cuda 12.1

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121


그다음은 NCCL 관련 에러

RuntimeError: Distributed package doesn't have NCCL built in

아래 코드와 관련된 에러였음

dist.init_process_group(backend="nccl", init_method="env://", world_size=n_gpus, rank=rank)


NCCL 다운로드 페이지에 가서 로그인 후(NVIDIA 계정 가입 필요) 설문양식 제출까지 해야 다운로드 시켜줌

찾아보니 Windows에서 NCCL 분산GPU 설정은 아직 pytorch에서 지원하지 않는다고 한다. 우분투 등은 지원함. 다음번엔 Docker로 도전

일단 “nccl”을 “gloo”로 바꾸고 시작

(gloo는 분산 cpu 사용, backend설정과 CPU/GPU 사용여부 테이블은 https://pytorch.org/docs/stable/distributed.html 참조)

json파일에 "use_duration_discriminator": true, 라고 해놓고 type이 기재가 안되어있었음

바로 아래 줄에 type 추가

"duration_discriminator_type": "dur_disc_1",


다시 실행했더니 성공했다.

돌다가 메모리 부족으로 튕기면 batch size를 낮춰주면 된다.


2024년 3월 13일 수요일

FC24 얼티 시간빌게이츠용 무동(무한동력) 빌드

특별할 것도 없고 아시는 분들은 이미 다 아시겠지만 정리해봄


(2024년 3월 현재 기준)

[거의 거저 주는 팩]

일일 브론즈 업그레이드 x2

일일 실버 업그레이드 x2

일일 골드 업그레이드 x4

시즌 프로모 관련 매일 주는 챌린지 SBC (거래가능 프리미엄 골드 선수 팩)


(프리미엄) 혼합 리그 업그레이드용 카드 나오면 쟁여둬가며 돌린다


[혼합 리그]

콘메볼 실버 이하

세리에 BKT, 분데스2

라리가 하이퍼모션, 리그2 BKT

MLS, EFL 챔피언십




[프리미엄 혼합 리그]

리그앙 or 에레디비시

콘메볼: 가성비 골카 몇장 + 오버롤 68 이상 실버 조합으로

세리에A, 분데스

EPL, 라리가






무동 돌리다 보면 비교적 빨리 모이는 팀: 모나코, 니스, 스타드 렌, OM, 아약스, PSV 등

콘메볼 가성비 추천카드 Rodrigo AliendroMarcos RojoSergio Romero, 라싱 클루브 골카, IDV 골카, 바르샤 SC 골카 등


*인핸서 같은 스크립트 애드온 사용은 소프트밴 또는 해킹의 위험이 있어서 비추, 손으로 직접 하는 것이 안전

*도박팩은 제끼고

*인폼 SBC 섞어서 진행중인 무동 SBC이벤트와 돌리다 보면 원하는 아이콘 정도는 돈 안쓰고 연성 가능

*시간 많고 인내력 강하면 모조리 언트로도 가능하지만 대충 즐기며 현생을 사는 것이 나은 것 같음


#얼티 #피창 #무동 #무한동력 #sbc #시간빌게이츠

2024년 3월 3일 일요일

행정안전부 추천문서 소프트웨어 개발보안 가이드

행정안전부와 KISA에서 2021년에 발간한 유익한 문서


행안부 홈페이지 링크:

https://www.mois.go.kr/frt/bbs/type001/commonSelectBoardArticle.do;jsessionid=TjAX2IwVk6hpONx8dKSZ4VTj.node10?bbsId=BBSMSTR_000000000015&nttId=88956#none



이 영상을 보다가 소개가 나와서 알게 되었다.

대충 훑어보니 진짜로 유익한 내용이 많이 들어있음.

기본만 지켜도 어이없이 털리는 일은 없을 것이다.


당장 밥벌이 판도가 바뀐다는 것은 아님.

C/C++ 그동안 오래 쓰기도 했고 보안 관련 이슈들 때문에 당장은 아니더라도 언젠가는 넘어갈 때를 맞이해야 할듯

매뉴얼대로만 만들어도 문제는 안생기겠지만 휴먼 에러 및 나태함 등으로 인해 생길 수 있는 문제들은 원천부터 막아버리자는 건가


다음 주자는 RUST가 유력하다고 한다.

실제로 주변에 RUST를 사용해서 제품을 만드는 사람도 있기도 하고

2024년 3월 2일 토요일

2024년 스팀 할인일정 오피셜 공지

스팀에 공식 일정 공지 떴음


봄 할인: 03/14~03/21

여름 할인: 06/27~07/11

타워 디펜스 게임 축제: 07/29~08/05

격투 게임 축제:  08/05~08/12

리듬 게임 축제: 08/19~08/26

우주 탐험 게임 축제: 09/02~09/09

이동 수단 게임 축제: 09/16~09/23

턴제 RPG 축제: 09/30~10/07

Steam Next Fest 10월 에디션: 10/14~10/23

Steam 스크림 축제 3: 10/28~11/04

요리 게임 축제: 11/11~11/18

가을 할인: 11/27~12/04

겨울 할인: 12/19~01/02(내년)


주요 계절 할인 기간을 기억해 두자

하지도 않는 겜들 충동구매 그만 하자

FC24 미페 커플샷

정렬 중에 우연히




FC24 얼티 진화 버서스 얼음 학포

 뽑기 SBC팩에서 이렇게 나와서 망했다고 생각했는데


뜻밖에도 바로 다음날 진화버전으로 나와버렸다.

관련 게임 커뮤니티 보는 사람들은 이미 유출이 떠서 알았다고 하지만

아무튼 다행히도 살려냄


사실 지난 진화중에 75000코인 주고 업글한 학포도 있었음

몇판 써보다 음바페 만들어서 잊혀져버림


[판타지 FC 어시스트 윙어]



양발의 퀵스텝+정확한 패스를 가진 윙어를 얻을 수 있음


스배만 하면 되는데 귀찮아서 아직 시작도 못함




2024년 2월 28일 수요일

Diffusion Model을 위해 필요한 공부

우선 잘 정리된 블로그: Diffusion Model 입문하기

https://velog.io/@bismute/Diffusion-Model-%EC%9E%85%EB%AC%B8%ED%95%98%EA%B8%B0


그 외

모두의 연구소 모두팝 유튜브 강의(2강~4강 정도 보면 충분할듯)

https://www.youtube.com/watch?v=jaPPALsUZo8


DDPM 논문

https://arxiv.org/pdf/2006.11239.pdf


코드 실습

MNIST Diffusion

학습 시간은 오래 안걸린다고 함(분 단위 정도)

https://github.com/bot66/MNISTDiffusion


2024년 2월 25일 일요일

23-24 카라바오컵 리버풀 우승

최다 우승팀 클라스, 이번이 통산 10회

클롭 감독의 마지막 시즌 선물


연장후반 반다이크 골

양쪽에서 더럽게 안들어가더니 승부차기 가는 줄 알았음


끝났다


우승컵. 엔도는 자기가 뒤로 가서 얼굴을 셀프로 가려버림


샴페인


단체샷


다함께 You will never walk alone


임팩트민트 카카오프렌즈 허니듀멜론향

 


전면


후면


케이스 오픈

약국에서 팔길래 사봄

독일에서 만들었다고 한다.

가격: 3천원

메로나 비슷한 맛

먹을만함.


2024년 2월 19일 월요일

2/19일 미국장 휴장하는 이유

2월 22일은 조지 워싱턴 대통령의 탄생일이어서 2월 셋째 주 월요일을 연방공휴일(워싱턴기념일/대통령의 날)로 지정하고 있다.

이런 것도 모르는 채로 무지성투자를 하고 있었다. 왜 휴장인가 했었음.


추가로 오는 3월 29일 금요일도 부활절이라 미국 증시가 휴장한다고 함.


2024년 2월 18일 일요일

FIFA23 얼티 선수 픽 미페

 


테오와 로메로

둘이서 미리 짜놨냐


FIFA21 미페 데칼코마니

사진첩 역주행중

의도치 않은 장면인데 저러고 있길래 찍어둠



날짜가 21년 7월 4일

미쿡 독립기념일이었구만


[FC24] 카드팩 뽑기 결과 2

이번엔 87 * 4

정직한 결과 2편


어차피 확률은 누구에게나 동일하다


[FC24] 현실적인 카드팩 뽑기 결과

 84*5 공짜팩이긴 한데 정직한 아웃풋


다 아는 얼굴들이구만


일확천금을 바라지 말 것


이클립스 신제품 배&비파향 사이즈 비교

배비파향이라 쓰여있는데 정체가 배&비파인듯

꿀레몬향에 이은 신제품

이번엔 기존의 이클립스 알갱이 사이즈와 비교해보았다.



이것도 맛있음.

꿀레몬 배&비파 모두 겨울에 어울리는 향인 것 같다.


농심 먹태깡 큰사발면 청양마요맛

연휴 때 장보러 마트갔다 신기해서 집었는데

새우깡 신버전인 먹태깡 과자가 지금은 어떤지 모르겠지만 무슨 허니버터칩 초창기마냥 적은 물량에 맨날 품절나고 구하기 힘들었다던데

맛이 어떻길래 그러지 하고 궁금한 것도 있었고 이걸로라도 호기심을 해소해 볼 생각이었음

뭔지도 모르고 사서 포장 뜯기 전까지 비빔면인 것도 몰랐다.


제품 구성

면 익히고 소스 넣기 전


소스 넣고 비비고 나면 이런 모습

좀 맵지만 대충 맛있음
마요네즈 소스 맛이 독특해서 괜찮음

[FC24] 신누형 다윈 누녜스 진화

만료진화 꼼수를 이용해 키운 누붕이

이제는 만료진화법 막혀서 안될듯


이 게시물을 참조함

https://www.fmkorea.com/6609356247


'거기 멈춰' 진화 수행 후 마지막 보상 만료 지날때까지 미수령

-> '개인기 훈련' 진화 하고 수령하는 방법





후기: 누녜스 4성개인기에 은특 많이 줘서 그냥 즐겜할 정도는 된다. 대체할 선수가 많아서 결국 안쓰게 됨 ㅋㅋ


2024년 1월 15일 월요일

C++에서의 namespace

namespace는 직역하면 이름공간이 될 텐데 어느 강의에서 단순히 이름공간이라고 부르면 와닿지 않으니, 의역해서 "소속"이라고 부르는 건 어떻냐는 얘기가 나왔다.

용도를 생각해보면 그냥 "네임스페이스"라고 그대로 부르거나

이름공간이라고 할 거면 소속이라고 부르는 것도 개발자들 간 소통에도 좋을 것 같긴 하다.

용어사전에도 없던 소속 이라는 말은 갑자기 어디서 나오고 무슨 의미냐고 따지면 그건 할 말 없음.