pip install ray
multiprocessing
에 비해 여러 가지 장점을 가지고 있습니다.
multiprocessing
에서 발생하는 직렬화 오버헤드 문제가 발생하지 않습니다.@ray.remote
라는 데코레이터로 감쌌다면 그 함수는 Task라고 부릅니다.remote()
메서드를 써서 호출 가능하며 ObjectRef
라는 값을 반환합니다. ray.get(ObjectRef)
를 하여 Task를 실행하고 값을 반환받을 수 있습니다.ray.put()
을 통해 생성되는 값입니다.ray.put()
을 통해 Object로 만들어 Ray에서 빠르게 사용할 수 있습니다.다만 Object는 Spark의 RDD와 같이 immutable합니다.@ray.remote
를 통해서 Actor Class로 만들 수 있고, 이 클래스의 메서드 호출은 Stateful Task가 됩니다.위 핵심 요소들을 쉽게 이해하기 위해서 간략한 설명을 붙이자면, Python Class가 있는데 그 Class를 @ray.remote
를 통해서 Actor를 만들 수 있고, 그 Actor Class의 메소드 호출을 Stateful Task(Actor의 Method가 아닌 Remote Function Call은 Stateless Task)라고 불리며 Task는 실제 결과인 Object의 위치를 가리키는 ObjectRef를 즉시 반환합니다.
Ray를 시작하기 위해서는 import ray
로 Ray를 Import하고 ray.init()
을 통해 Ray Cluster를 실행합니다.
ray.init()
에 추가적인 인자를 전달하지 않을 경우 Cluster는 모든 CPU Core를 활용합니다.