Hong의 모든 글

docker comose stop과 down의 차이

Docker를 사용하는 것이 이미 일반화되었지만 가끔 코맨드의 기능을 명확하게 기억하지 못할때가 있다.

stop과 down의 차이인데 다음과 같다.

  • stop 은 컨테이너를 잠시 멈추는 것뿐이다.
  • down 은 컨테이너와 컨테이너에 연결된 네트워크를 멈추고 삭제까지 한다.

도커이미지를 구성할 때 down 명령을 사용할 경우를 대비해서 설명에 네트워크 설정에 대한 것도 문서에 자세히 기록할 필요가 있다. 익숙하다고 방심하면 빠뜨려서 문제를 만드는 경우가 많아진다.

LLM은 스스로 데이터분석을 할 수 있을까?

LLM

기술통계와 같은 설명기반의 분석은 할 수 있습니다.
연과분석과 같은 원인을 파악하고 통찰을 얻는 것은 할 수 없습니다.

LLM은 데이터분석을 할 수 없다고 할 수 있습니다.
데이터분석가들이 말하는 능동적인 고급데이터 분석에 대한 것을 말한다면 그렇습니다.

데이터분석은 결과물에 따라 2가지로 나눌 수 있는데

  • 데이터 그 자체에 대해 설명하는 탐색적데이터분석
  • 데이터로부터 알고자 하는 사실을 확인하고 인과, 요인 분석을 통해 어떤 결정을 하는데 필요한 근거 자료를 찾는 것

LLM은 인과분석과 같은 논리적 사고를 할 수 있게 고안된 것이 내부에 없습니다.
대형 뉴럴네트워크에서 대량의 학습이 되면 마치 인과추론과 사고를 하는 것 처럼 만들 수 있는데
그것은 하는 것 처럼 보이는 것이지 진짜 하는 것이 아닙니다.
아직 LLM이 사고를 하고 데이터분석을 한다는 것이 증명된 적도 없습니다.

그래서 LLM은 데이터를 넣어주는 것 만으로는 인과분석과 같은 고급데이터 분석을 하지 못합니다.
다만 프롬프트를 단계적으로 입력하거나 절차형으로 넣어서 (CoT) 비슷하게 할 수는 있지만
인간과 같은 깊은 고찰에서 나오는 결론과 답을 내주지는 않습니다.

ChatGPT의 코드인터프리터와 같은 별도의 모듈을 이용하면 하는 것처럼 보이도록 하는게 가능하지만 근본적으로 데이터 분석을 하는 것은 아닙니다.

LLM은 아직 스스로 고뇌하고 고민하는 사고를 하지 못합니다.
데이터분석의 결과물은 인간의 깊은 고민과 사고의 결과물입니다.

mysqldump할 때 lock 방지하기

mysqldump를 하면 DB에 lock를 걸게 된다. 기본 설정이 그렇게 되어 있다.
서비스 운영중인 데이터베이스에 그런 것을 하면 큰 문제가 생긴다.
mysqldump를 할 때 lock을 걸지 않도록 하는 옵션을 해야 한다.

mysqldump를 할 때 자주하는 것이 아니라서 실수하기 쉬운데 다음과 같이 옵션을 주고 처리할 수 있다.

mysqldump --skip-add-locks --skip-lock-tables db table > dump.sql

덤프하는 중에도 다른 세션에서 insert, update, delete 가능하다.

mysqldump --single-transaction  db table > dump.sql

덤프하는 중에도 다른 세션에서 insert, update, delete 가능하다.

mysqldump --lock-tables  db table > dump.sql

덤프하는 중에 다른 세션에서 insert, update, delete 불가능하다.

LLM은 스스로 사고할 수 있는가?

LLM이 스스로 사고를 하는지에 대한 것은 이제 더 이상하지 않는 조금 지난 주제입니다.

아직까지 그런 생각을 하는 분들이 있어서 포스트를 올려둡니다.

현재의 LLM은 구글의 트랜스포머 AI 아키텍쳐를 계승받은 AI모델 중에 초대량의 학습데이터와 파라미터를 가진 모델들을 말합니다.

그 중 대표적인 것이 트랜스포머에서 생성형 부분만 따로 분리해서 만든 모델인 GPT입니다. 그 외에 구글의 Palm이나 메타의 LLamma가 있지만 구조는 차이가 별로 없습니다.

LLM은 Large Language Model의 약어입니다. 이름이 내포하듯이 LLM은 언어처리를 위한 인공지능 모델입니다. 언어처리와 관련된 것 외의 것을 하도록 설계된 것은 구조만 볼때는 거의 없습니다.

LLM은 사고를 하지 못합니다.
혹시 LLM은 의식을 가지고 있거나 사고를 할 수 있는것이 아닐까하는 의심에
빅테크 회사와 많은 과학자들이 테스트를 했지만 그 증거가 있다는 발표나 연과결과는 없습니다.

오히려 관련이 없다는 연구결과만 있습니다.

LLM은 의식이 없습니다.

영혼이 없습니다. 사고를 하지 못하연 영혼도 없고, 의식이 없으면 자아도 없습니다.

이 역시 의식이 있는지 테스트한 연구가 있었지만 의식이 있다는 결론이 난 것은 없습니다.

LLM은 계산을 하지 못합니다.

LLM은 단순한 사칙연산도 수리적으로는 하지 못합니다.
1 + 2 = 3이라는 대답을 LLM이 한다고 계서 계산을 했다고 생각해서는 안됩니다.
문제에 대한 답을 외웠다고 생각해야 합니다.

트랜스포머의 구조에 대해서 이해하고 있다면 이런 것들이 당연히 되지 않는 다는 것을 알게되는데 이해가 부족하게 되면 그와 같은 주장을 하게됩니다.

그럴만도 한데 LLM에 프롬프트를 주면 마치 생각을 하는 것 처렁 대답하기 때문입니다.
하지만 그것은 명백한 착각입니다.


아직까지 LLM이 사고를 가지고 있거나 의식이 있다는 것을 증명한 사람은 없으며
실제로 그런 결과를 LLM이 내놓는 경우도 없습니다.

그러니 그런 착각으로 LLM의 가능성에 접근하게 되면 큰 낭패를 보게 됩니다.

더닝크루거 현상이라는 유명한 신드롬에 대한 용어가 있습니다.
아는 만큼 보이고 어설픈 지식이 얼마나 큰 착각과 오해를 불러일으키는지에 대한 용어입니다.

R에서 T-test, 카이제곱으로 가설검정 결과 간단하게 확인하기

R언어에서 T-test와 Chi-square 검정을 하는 간단한 스니펫입니다.
간단한 것이지만 자주 쓰지 않으면 너무 기본이라서 오히려 기억이 잘 나지 않기 마련입니다.

t.test와 chisq.test 함수 모두 list(object)를 리턴하게 되고 멤버 변수인 p.value에 접근해서 P값을 알아낼 수 있습니다.

# T-test two vectors
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
b <- c(2, 3, 4, 5, 6, 7, 8, 9, 10, 11)

t.test(a, b)

# 결과에 대한 자세한 설명을 화면에 출력해봐
t.test(a, b)$p.value
t.test(a, b)$statistic
t.test(a, b)$conf.int
t.test(a, b)$estimate
t.test(a, b)$null.value
t.test(a, b)$alternative
t.test(a, b)$method
t.test(a, b)$data.name
t.test(a, b)$conf.int[1]
t.test(a, b)$conf.int[2]

# chi-square test for two vectors

a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
b <- c(2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
chisq.test(a, b)
if (chisq.test(a, b)$p.value < 0.05) {
  print("귀무가설 기각")
} else {
  print("귀무가설 채택")
}