페이지

2022년 12월 10일 토요일

Iltimate AWS Certified(SAA-C03) IAM:Permissions

- Users or Groups can be assigned JSON documents called policies

- These policies define the permisssions of the users

- In AWS you apply the least privilege principle: don't give more permissions than a user needs


{

    "Version": "2012-10-17",

    "Statement" : [

        {

            "Effect" : "Allow",

            "Action" : "ec2:Describe*",

            "Resource" : "*"

        },

        {

            "Effect" : "Allow",

            "Action" : "elasticloadbalancing:describe*",

            "Resource" : "*"

        },

        {

            "Effect" : "Allow",

            "Action" : " [

                "cloudwatch:ListMetrics",

                "cloudwatch:GetMetricStatistics",

                "cloudwatch:Describe*"

            ],

            "Resource" : "*"

        }

    ]

}







Iltimate AWS Certified(SAA-C03) IAM:Users & Groups

- IAM = Identity and Access Management, Global service

- Root account created b y default, shouldn't be used or shared

- Users are people within your organization, and can be grouped

- Groups only  contain users, not other groups

- Users don't have to belong to a group, and user can belong to multiple groups


2022년 11월 12일 토요일

Software Architecture

 [AN ARCHITECTURAL DECISION IS]

THOSE DECISIONS WHICH AFFECT THE STRUCTURE, NON-FUNCTIONAL CHARACTERISTICS, DEPENDENCIES, INTERFACES, OR CONSTRUCTION THECHNOLOGY

- Michael Nygard, Documenting Architecture Decisions (2011)

YOU THINK THAT BECAUSE YOU UNDERSTAND "ONE" THAT YOU MUST THERERFORE UNDERSTAND "TWO" BECAUSE ONE AND ONE MAKE TWO. BUT YOU FORGET THAT YOU MUST ALSO UNDERSTAND "AND".

- Donella Meadows, Thinking in Systems



2022년 10월 9일 일요일

Kubernetes - few key terms

 CNI and CSI

- The containser networking and storage interfaces, respectively, that allow for pluggable networking and storage for Pods(containers) that run in Kubernets.


Container

- A Docker or OCI image that typically runs an application.


Control plane 

- The brains of a Kubernetes cluster, where scheduling of containers and managing all Kubernets objects takes place (sometimes referred to as Masters)

DaemonSet

- Like a deployment, but it runs on every node of a cluster.


Deployment

- A collection of Pods that is managed by Kubernetes.


kubectl

- The command-line tool for talking to the Kubernetes control plane.


kubelet

- The Kubernetes agent that runs on your cluster nodes. It does what the control plane needs it to do.


Node 

- A machine that runs a kubelet process.


OCI

- The common image format for building executable, self-containerd applications. Also referred to as Docker images.


POD

- The Kubernetes object that encapsulates a running container.


2022년 10월 4일 화요일

30.1 확인 1: Variable 인스턴스 변수

 첫 번째로 Variable 클래스의 인스턴스 변수에 관해 복습하겠습니다. 우선 Variable 클래스를 초기화하는 __init__ 메서드를 보죠.


이와 같이 Variable 클래스에는 인스턴스 변수가 여러 개입니다. 그중 data와 grad에 주목해보죠. data와 grad는 각각 순전파 계산과 역전파 계산 시 사용됩니다. 주의할 것은 data와 grad 모두 ndarray 인스턴스를 저장한다는 사실입니다. 이 점을 부각하기 위해 [그림 30-1]처럼 그리겠습니다.


[그림 30-1]과 같이 data 와 grad는 '입방체의 상자'로 그리겠습니다. 그리고 data와  grad가 ndarray 인스턴스를 참조한느 경우에는 [그림 30-2]처럼 그립니다.

STEP 30 고차 미분(준비편)

 현재의 DeZero는 미분을 자동으로 계산할 수 있지만 1차 미분 한정입니다. 그래서 이번 단계에서는 2차 미분도 자동으로 계산할 수 있도록, 나아가 3차 미분, 4차 미분,... 형태의 모든 고차 미분까지 자동으로 계산할 수 있도록 DeZero를 확장할 것입니다.

그러려면 DeZero를 사용하여 2차 미분을 계산하려는 현재의 역전파 구현을 근본적으로 재검토해야 합니다. DeZero의 역전파는 Variable과 Function 클래스에 기초해 동작합니다. 그래서 우선 Variable과 Function의 현재 구현부터 간단히 되돌아 보려 합니다. 앞으로의 이야기는 조금 길어지므로 3개 절로 나눠 하나씩 확인하겠습니다.


2022년 10월 3일 월요일

29.2 뉴턴 방법을 활용한 최적화 구현

 그럼 뉴턴 방법을 구현해봅시다. 뉴턴 방법을 활용한 최적화를 구현하려면 [식 29.5]를 구현하기만 하면 됩니다. 하지만 DeZero는 아쉽게도 2차 미분은 자동으로 구하지 못하므로 다음과 같이 수동으로 2차 미분을 구하기로 합시다.

y = x**4 - 2x**2

dy/dx = 4x**3 - 4x

d2y/dx2 = 12x**2 - 4


이 결과를 사용하면 뉴턴 방법을 활용한 최적화를 다음처럼 구현할 수 있습니다.



이와 같이 1차 미분은 지금까지처럼 역전파로 구하고 2차 미분은 수동으로 코딩해 구합니다. 그런 다음 뉴턴 방법의 갱신 수식에 따라 x를 갱신합니다. 이 코드를 실행하면 x값의 갱신 과정이 다음과 같이 출력됩니다.



이 문제의 답(최솟값)은 1입니다. 앞의 결과를 보면 목적지까지 빠르게 도달했음을 알 수 있ㅅ브니다. 단 7회의 갱신만으로 최솟값에 도달했죠. 한편 경사하강법은 최적값에 도달하는데 오랜 시간이 걸립니다. [그림 29-5]는 두 기법의 갱신 경로를 비교한 모습입니다.


이처럼 경사하강법으로는 갱신을 여러번 해야 합니다. 참고로 [그림 29-5]에서 경사하강법의 모습은 학습률을 0.01로 했을 때의 결과입니다. 이때 x = 1.0 과의 절대오차가 0.001 이하로 좁혀지기까지는 124번이나 갱신해야 했습니다. 그에 반해 뉴턴 방법은 불과 7번 입니다.

이상이 뉴턴 방법의 이론과 구현입니다. 이번 단계에서는 뉴턴 방법을 활용한 최적화를 구현하고 구체적인 문제를 풀어봤습니다. 그리고 실제로 좋은 결과를 얻어냈습니다. 그러나 구현시 2차 미분을 수동으로 계산했다는 한계가 있군요(2차 미ㅜㄴ을 계산하기 위해 수식을 손으로 써내려갔고, 그 결과를 하드코딩했습니ㅏㄷ). 이쯤이면 자연스럽게 집작이 되시겠죠? 다로 다음으로 정복할 목표ㅕ는 자동화하는 것입니다.