본문 바로가기

728x90
반응형

Programming

[Ray] 2-3. Ray Core: Objects 예제 Objects task와 actor는 object를 생성하고 계산하는데 이 object를 remote objects로 언급한다. 왜냐면 이것들은 ray 클러스터 어디에나 저장될 수 있기 때문이다. object refs를 사용해 remote objects를 참조한다. object ref는 필수적으로 포인터나 id를 가지고 있다. 이 id는 remote object의 값을 보지 않더라도 참조할 때 사용된다. object refs는 아래 두가지 방법으로 생성될 수 있다. 1. remote function 호출 2. put(docstring)을 사용한 반환 Fetch Object Data get 함수를 사용해서 object ref로부터의 remote object의 결과를 가져올 수 있다. 만약 현재 노드의 ob.. 더보기
[Ray] 2-2. Ray Core : Actors 예제 Actors Actors는 RAY API에서 함수가 클래스로 확장된 개념이다. 새로운 actor가 생성되면 새 worker가 생성되고, actor의 method는 특정 worker에 스케쥴링되어 접근 및 사용될 수 있다 import ray import time ray.shutdown() ray.init() @ray.remote class Counter(): def __init__(self): self.value = 0 def increment(self): self.value += 1 return self.value def get_counter(self): return self.value counter = Counter.remote() Specifying required resources @ray.remo.. 더보기
[Ray] 2-1. Ray Core: Tasks 예제 Tasks Ray는 별도의 파이썬 작업자에서 임의의 함수를 비동기적으로 실행할 수 있다. 그런 기능을 ray remote function이라고 하고 비동기식 호출을 ray tasks라고 한다. import ray import time ray.shutdown() ray.init() def normal_function(): return 1 # @ray.remote 데코레이터를 붙임으로써 ray remote function으로 정의할 수 있음 @ray.remote def my_function(): return 1 # 위의 remote function을 적용하기 위해 'remote' method 사용 # 이는 즉각 object ref(미래시점에)을 반환하고 task를 생성한다. obj_ref = my_funct.. 더보기
[Ray] 2. Ray Core Ray Core란? 분산 어플리케이션을 만들기 위해 제공된 핵심 요소들 (i.e., tasks, actors, objects) Key Concept Tasks Ray는 분산된 파이썬 작업들을 비동기로 실행할 수 있는 함수를 제공하는데, 이 비동기 함수를 'tasks'라고 부른다. Ray를 사용하면tasks가 CPUs, GPUs, 사용자 요구 측면에서 자원을 지정할 수 있다. 이 리소스 요청은 병렬 처리를 위해 clueter scheduler가 task를 분배할 때 사용된다. ( Actors 함수에서 클래스로 Ray API가 확장된 것이다. actor는 필수적으로 stateful(네트워크 연결 상태를 추적할 수 있는) 작업이나 서비스이다. 새로운 actor 객체가 생성되면, 새로운 작업이 생성되고, act.. 더보기
[자료구조] Heap 우선순위 큐 (Priority Queue) 우선순위 큐란 자료구조 큐에 우선순위 개념을 도입 데이터가 들어온 순서에 따라 나가게 되는 큐, 스택과 달리 데이터들의 우선순위에 따라 나가는 순서가 달라진다 ex: 물건 데이터를 자료구저에 넣었다가 꺼내는 경우, 가치가 높은 물건부터 꺼내서 확인 자료구조 삭제되는 요소 스택(Stack) LIFO (Last in, first out) 큐(Queue) FIFO(First in, first out) 우선순위큐(Priority Queue) 가장 우선순위가 높은 데이터 우선순위 큐의 구현 단순히 리스트를 이용해 구현 힙(heap)을 이용해 구현 배열, 연결 리스트, 힙으로 구현할 수 있지만 그 중 힙(heap)으로 구현하는 것이 가장 효율적 구현 방식 삽입시간 삭제시간.. 더보기
[Ray]1. 시작하며 https://docs.ray.io/en/latest/ray-overview/installation.html Installing Ray — Ray 2.0.0 .rst .pdf to have style consistency --> docs.ray.io Ray란? Ray는 AI와 Python 어플리케이션의 확장을 위한 통합 프레임워크이다. Ray는 핵심 분산 runtime과 ML 계산의 단순화를 위한 라이브러리 툴킷으로 구성되어 있다. Ray AIR Datasets : 분산된 데이터 전처리 Train : 분산 학습 Tune : 확장 가능한 하이퍼파라미터 튜닝 Serve : 확장 및 프로그래밍 가능한 서빙 RLib : 확장 가능한 강화학습 Ray Core Tasks : 클러스터에서 실행되는 상태 비저장 함수 .. 더보기
Python functools 모듈의 내장함수[기본] functools 모듈은 python 표준 라이브러리 중 하나로써 다른 함수에 적용하거나 다른 함수를 반환하는 고차 함수를 위한 모듈이다. functools 모듈의 함수를 잘 사용한다면 더 심플하면서 풍부한 표현을 할 수 있다. functools.reduce iterable의 두 인자를 왼쪽에서 오른쪽으로 연산을 누적으로 적용해서 최종적으로 단일 값으로 줄인다. 간단한 예는 아래와 같다. reduce(lambda x, y: x+y, [1,2,3,4,5]) # (((1+2)+3)+4)+5 연산의 과정을 다 산출하고 싶으면 functools.accumulate()를 사용할 수 있다. functools.cmp_to_key(func) key함수를 인자로 가진 함수 (sorted(), min(), max()..... 더보기
파이썬 로그 핸들링 Logging이란 프로그램이 실행되는 동안 일어나는 정보를 기록으로 남기는 것 남겨야 하는 기록의 종류로는 유저의 접근, 프로그램의 Exception, 특정 함수의 사용 등이 있다. 남기는 방법으로는 console 화면에 출력하거나 파일 또는 DB에 남길 수 있다. 기록된 로그를 분석해서 의미있는 결과를 도출할 수 있으며, 실행시점 또는 개발시점에 남겨야 하는 기록은 상이할 수 있다. Print로 하면 되지 않을까? print를 이용해서는 console 창에만 출력할 수 있는데 이후 분석에는 사용할 수 없다. 개발이나 운영 레벨별 / 또는 모듈별로 기록을 남길 필요도 있는데 이러한 기능을 체계적으로 지원하는 모듈을 사용해서 logging을 남겨야 한다. Logging Level 프로그램의 진행 상황에 따.. 더보기

728x90
반응형