작년에 우리는 모델 배포 솔루션인 슬롯 커뮤니티 Engine One을 출시했습니다. 이 솔루션을 통해 중앙 컴퓨팅 서버에서 작업을 예약하고 실행할 수 있습니다.REST API .
Engine One은 기계 기반 슬롯 커뮤니티 라이센스를 위한 완벽한 추가 기능입니다. 복잡한 모델링 시나리오를 이전보다 훨씬 쉽게 개발하고 IT 환경에 통합할 수 있으며 개발 시간과 비용을 줄이는 데 도움이 됩니다.
그동안 우리 개발자들은 한 단계 더 발전했으며, 이를 발표하게 되어 매우 기쁩니다.GAMS 슬롯 커뮤니티 SaaS, 슬롯 커뮤니티 Engine One의 원칙과 기존 이점을 클라우드로 이전합니다. 기준쿠버네티스,슬롯 커뮤니티 SaaS는 Amazon Web Services(AWS)에서 제공하는 컴퓨팅 인프라를 사용합니다. 결과적으로 Engine SaaS에는 몇 가지 주요 추가 이점이 있습니다.
수평 자동 확장
슬롯 커뮤니티 SaaS의 각 GAMS 작업은 자체 가상 EC2 인스턴스에서 실행됩니다. 또는노드Kubernetes에서는 말합니다. 실질적으로 AWS는 EC2 인스턴스를 무제한으로 제공할 수 있습니다. 따라서 하나의 작업 또는 100개의 작업을 동시에 실행해야 하는 경우 인프라는 사용자 측에서 요구되는 복잡한 구성 없이 자동으로 확장됩니다.
인스턴스 크기 조정
수평적 확장 외에도 EC2는 메모리 및 CPU 측면에서 광범위한 인스턴스 유형을 제공합니다. 따라서 우리는 최소 16GB부터 최대 4TB까지 다양한 크기의 인스턴스를 제공할 수 있습니다. 필요한 경우 사용자는 각 작업에 대해 다른 인스턴스 유형을 선택할 수 있습니다. 우리는 현재 AWS를 사용하고 있습니다.z1d소형 인스턴스(최대 192GB)의 경우 유형을 입력하고x1e위의 모든 항목에 대해 최대 4TB를 입력합니다.
귀하의 요구 사항에 따라, 예를 들어 메모리가 그다지 중요하지 않지만 코어 수가 중요한 경우 다양한 인스턴스 유형을 추가할 수도 있습니다.
유지보수가 필요 없고 높은 신뢰성
우리는 소프트웨어를 최신 상태로 유지하는 것을 포함하여 고객을 위한 인프라 운영을 관리합니다. 고객은 최종 사용자 애플리케이션에 집중할 수 있으며, 최적화 부분은 당사의 전문 지식과 높은 안정성을 갖춘 AWS 인프라의 지원을 받아 "제대로 작동"합니다.
간편한 라이센스 처리
IT 관리자는 슬롯 커뮤니티 SaaS에 대한 자체 로그인을 가지며 개별 사용자를 무제한으로 추가할 수 있습니다. 각 사용자는 관리자가 소유한 것과 동일한 라이선스를 자동으로 상속하므로 알아야 할 라이선스는 하나만 있으며 사용자가 설치할 필요는 없습니다.
간단한 웹 사용자 인터페이스
그슬롯 커뮤니티 SaaS 웹 UI사용자, 그룹, 네임스페이스 및 작업을 간단하고 직관적인 방법으로 관리할 수 있습니다. 이는 시작하고 계정에서 일어나는 일에 대한 빠른 개요를 얻는 데 유용합니다. 또한 다음을 사용하여 이러한 모든 작업을 직접 수행할 수도 있습니다.슬롯 커뮤니티 API, 그 중 일부는 아래에서 자세히 설명하겠습니다.
가격 고려사항
GAMS 슬롯 커뮤니티에 관해 질문이 있는 경우 주저하지 말고 다음 주소로 문의해 주세요.sales@슬롯 커뮤니티com. 귀하를 위한 데모 일정을 계획하고 귀하의 개별 사용 사례에 대해 논의하게 되어 기쁘게 생각합니다.
무엇보다도 컴퓨팅 시간 및 인스턴스 크기 요구 사항과 관련된 요구 사항에 대해 논의하겠습니다.
- 슬롯 커뮤니티 작업에 필요한 일반적인 메모리 요구사항은 무엇입니까?
- 해마다 해당 작업을 몇 시간이나 실행할 것으로 예상하십니까?
- 어떤 해결사가 필요합니까?
이 정보를 바탕으로 우리는 귀하에게 맞는 맞춤형 패키지 제안을 만들 것입니다. 이 제안에는 선호하는 인스턴스 크기(32GB 또는 4TB)에 대한 시간당 할당량이 포함됩니다. 사례별로 다른 인스턴스 크기에서 작업을 실행할 수 있는 옵션이 항상 제공되므로 유연성이 뛰어납니다.
당신이 알아야 할 유일한 것은 각 인스턴스 크기에 연결된 승수가 있다는 것입니다. 가장 작은 인스턴스에 대해 1부터 시작하여 더 큰 인스턴스에 대해 더 높은 값으로 올라갑니다. 승수는 "벽 시간"에 비해 할당량을 소진하는 속도를 결정합니다. 정확한 배율은 라이선스를 부여하기로 선택한 솔버와 할당량의 연간 총 규모에 따라 달라집니다.
파이썬의 간단한 예
나는 GAMS 슬롯 커뮤니티으로 할 수 있는 최소한의 작업을 보여주기 위해 인위적인 예를 사용하여 사용이 얼마나 간단한지 알려드리겠습니다(파이썬을 조금 알고 이해하신다면요청라이브러리). 시작하는 데 몇 줄의 코드만 필요하다는 것을 알 수 있습니다!
이라는 사용자가 있다고 가정합니다.jon_doe슬롯 커뮤니티 SaaS에 등록되었습니다. 이 사용자는 네임스페이스에 액세스할 수 있습니다.테스트, 각각 'GAMS_z1d.large_A' 및 'GAMS_z1d.xlarge_A' 라벨이 붙은 16GB 및 32GB의 두 가지 인스턴스 크기로 확장됩니다.
우리는 다음을 사용하겠습니다요청라이브러리와 Jupyter Notebook을 사용하여 REST API를 탐색하고 간단한 슬롯 커뮤니티 작업을 제출하고 결과를 가져옵니다.
인증
먼저 우리는 다음을 가져와야 합니다요청라이브러리를 확인하고 사용자 인증을 처리하세요.
가져오기 요청
from requests.auth 가져오기HTTPBasicAuth가져오기 시간
au=HTTP기본 인증("john_doe","some_password")
url= "https://engine.슬롯 커뮤니티com/api"
당신은 Engine Saas에 가입한 후 우리 영업팀으로부터 이메일로 당신의 사용자 이름과 비밀번호를 받게 될 것입니다.
첫 번째 요청 만들기
그런 다음 API를 쿼리하여 사용자가 액세스할 수 있는 인스턴스에 대한 정보를 얻을 수 있습니다. 결과는 json 형식으로 제공됩니다. 값은cpu_request은 각 인스턴스에서 사용할 수 있는 vCPU 수에 해당하며 AWS 홈페이지에서 찾을 수 있는 명목 값보다 약간 낮습니다. 이는 슬롯 커뮤니티 소프트웨어 스택(특히 Kubernetes)이 제대로 작동하려면 일부 리소스가 필요하기 때문입니다. 의 경우에도 마찬가지입니다.memory_request값은 사용 가능한 메모리에 해당하며 Kubernetes에 작은 비율을 예약하기도 합니다.workspace_request값은 각 작업에 사용 가능한 디스크 공간(50GB)을 표시합니다. 마지막으로,승수인스턴스 유형이 실제 시간과 비교하여 할당량을 얼마나 빨리 소비하는지 결정하는 요소입니다.
r=요청.get(url+ '/사용/인스턴스/john_doe', 인증=au)r.json()'instances_inherited_from': 'john_doe',
'default_inherited_from': 'john_doe',
'instances_available': ['label': 'GAMS_z1d.large_A',
'cpu_request': 1.8,
'memory_request': 15070,
'workspace_request': 50000,
'node_selectors': ['key': '슬롯 커뮤니티com/instanceType', 'value': 'z1d.large'],
'관용': [],
'승수': 1.0,
'라벨': 'GAMS_z1d.xlarge_A',
'cpu_request': 3.8,
'memory_request': 30710,
'workspace_request': 50000,
'node_selectors': ['key': '슬롯 커뮤니티com/instanceType', 'value': 'z1d.xlarge'],
'관용': [],
'승수': 1.1],
'default_instance': 'label': 'GAMS_z1d.large_A',
'cpu_request': 1.8,
'memory_request': 15070,
'workspace_request': 50000,
'node_selectors': ['key': '슬롯 커뮤니티com/instanceType', 'value': 'z1d.large'],
'관용': [],
'승수': 1.0
작업 제출
계속해서 GAMS 작업을 슬롯 커뮤니티에 제출하겠습니다. 우리는trn스포츠모델을 현재 디렉토리에 복사했으며 제출하기 전에 압축해야 합니다. 압축된 파일은 다음에서 사용됩니다.게시물API에 요청합니다. 또한 슬롯 커뮤니티에게를 사용하도록 지시합니다.GAMS_z1d.large_A인스턴스 유형.
응답에는 작업을 식별하는 데 필요한 작업 토큰이 포함되어 있습니다.
from zip파일 가져오기압축파일
와Zip파일('모델.zip','w') as zip: zip.쓰기('trnsport.gms')
query_params={ '모델':'tnsport',
'네임스페이스':'테스트',
'라벨':'인스턴스=GAMS_z1d.large_A'
}
# 모델 zip 파일로 dict 생성
작업_파일={'모델_데이터':열기('모델.zip','rb')}
r=요청.게시물(url+ '/작업/', 매개변수=query_params, 파일=job_files, 인증=au)토큰=r.json()['토큰']이 예를 따라갈 때 값을 조정하십시오.네임스페이스저희 영업팀이 귀하의 사용자 정보와 함께 이메일을 통해 귀하에게 보낸 정보입니다. 조직의 다른 사람이 Engine SaaS에 초대한 경우 해당 사람에게 이 정보를 요청해야 합니다.
작업은 백그라운드에서 비동기적으로 실행되며 이제 더 많은 작업을 추가하거나 다른 작업을 수행할 수 있습니다.
작업 결과 가져오기
슬롯 커뮤니티 SaaS에 약 2분의 시간을 주어야 하며, 이는 작업을 위해 새로운 EC2 인스턴스를 가동하는 데 걸리는 시간입니다. 새로 비워진 인스턴스는 재사용되어 즉시 사용할 수 있으므로 이는 연속 작업 행의 첫 번째 작업에만 필요합니다.
이제 다음을 보내서 간단한 작업의 상태를 확인해 보겠습니다.얻기요청.
r=요청.get(url+ '/작업/' +토큰, 인증=au)r.json()'토큰': '842b85cd-d7e2-42dc-8268-cc25ed3d66ce',
'모델': 'trnsport',
'is_temporary_model': 사실,
'is_data_provided': 거짓,
'상태': 10,
'프로세스_상태': 0,
'stdout_filename': 'log_stdout.txt',
'네임스페이스': '테스트',
'stream_entries': [],
'인수': [],
'submitted_at': '2022-01-13T15:46:32.749866+00:00',
'finished_at': '2022-01-13T15:48:39.520392+00:00',
'사용자': '사용자 이름': 'john_doe', '삭제됨': False, 'old_username': 없음,
'텍스트_항목': [],
'dep_tokens': [],
'라벨': 'cpu_request': 1.8,
'memory_request': 15070,
'workspace_request': 50000,
'관용': [],
'node_selectors': ['key': '슬롯 커뮤니티com/instanceType', 'value': 'z1d.large'],
'결과_존재': 참
다른 정보 중에서 우리는 다음을 볼 수 있습니다.결과_존재현장 보고서사실입니다그리고 그거프로세스_상태필드는 0 값을 보고하며 이는 작업이 성공적으로 완료되었음을 의미합니다. 이제 다른 파일을 보내 zip 파일 형식으로 결과를 다운로드할 수 있습니다.얻기요청.내용반환 객체의 필드에는 zip 파일을 나타내는 원시 바이트 문자열이 포함되어 있으므로 필드를 '있는 그대로' 디스크에 쓸 수 있습니다.
r=요청.get(url+ '/작업/' +토큰+ '/결과', 인증=au)
파일= 열기('결과.zip','wb')
파일.쓰기(r.콘텐츠)파일.닫기()기본적으로 zip 파일에는 실행에 대한 GAMS 로그, 모델 파일 사본 및 lst 파일이 포함되어 있습니다. 다음은 GAMS 슬롯 커뮤니티에서 모델을 실제로 성공적으로 해결했음을 보여주는 로그 섹션입니다.
변수 출력 변수의 반복 이중 목표
1 73.125000 x(시애틀,뉴욕) 수요(뉴욕) 여유
2 119.025000 x(시애틀,시카고) 수요(시카고) 여유
3 153.675000 x(san-diego,topeka) 수요(topeka) 여유
4 153.675000 x(san-diego,new-york) 공급(시애틀) 여유
--- LP 상태(1): 최적.
--- Cplex 시간: 0.11초(0.01틱 감지)
최적의 솔루션 발견
목표: 153.675000보안에 대한 몇 가지 설명
저희 개발팀은 특히 GAMS 슬롯 커뮤니티이 클라우드에서 실행된다는 점을 고려하여 소프트웨어 보안을 중요하게 생각합니다. 이것이 바로 우리가 기본 소프트웨어 구성 요소가 출시되자마자 버그 수정을 포함하도록 자주 업데이트하는 이유입니다.
다음은 귀하의 데이터를 안전하게 유지하는 일부 설계 선택에 대한 높은 수준의 요약입니다.
웹 애플리케이션에 대한 일반 모범 사례
먼저, 우리는 업계 표준 암호화 방법을 사용합니다. 이는 모든 데이터가 TLS 암호화된 인터넷을 통해 전송된다는 것을 의미합니다. 귀하의 사용자 자격 증명은 슬롯 커뮤니티 사용자 데이터베이스에 솔트 처리 및 해시 처리되어 저장됩니다(저희는 다음을 사용합니다.PBKDF2알고리즘). 데이터는 당사 데이터베이스에 저장된 AES-256 암호화되며 백업도 암호화됩니다. GAMS 슬롯 커뮤니티에 대한 업데이트를 출시하기 전에 코드 변경 사항은 우리 팀에서 동료 검토를 거쳐 알려진 취약점이 있는지 추가로 검사하고 CI 파이프라인에서 테스트됩니다.
슬롯 커뮤니티별 고려사항
우리는AWS EKS34856_35064A어떤 상황에서도 사용자가 무엇인지 볼 수 없습니다B하고 있습니다. GAMS 슬롯 커뮤니티에 예약된 각 작업은 모델을 해결하기 위해 이전에 사용된 적이 없는 새롭고 격리된 컨테이너화된 환경에서 실행됩니다. 그러나 슬롯 커뮤니티에 작업을 수행하도록 구체적으로 지시할 수 있습니다.B직업에 따라 다름A, 이 경우 작업의 데이터A작업에 액세스할 수 있습니다B.
또한 우리의 네임스페이스 구조를 통해 누가 어떤 모델에 액세스할 수 있는지, 그리고 모델로 무엇을 할 수 있는지 선택할 수 있습니다. 우리는 Unix 운영 체제에 존재하는 표준 권한 시스템(읽기, 쓰기, 실행)을 따릅니다.
할당량을 사용하면 조직 내 개별 사용자의 사용량을 제한하여 사람들이 컴퓨팅 볼륨을 너무 빨리 소모하는 것을 방지할 수 있습니다. 할당량은 시작된 동시 작업 수, 사용자가 사용할 수 있는 시간, 사용자가 사용할 수 있는 인스턴스 유형, 사용 가능한 스토리지 양에 대해 설정할 수 있습니다.
이 개요에 관심이 있으신 경우, 주저하지 마시고 저희에게 연락해 주십시오. 귀하의 요구 사항에 대해 기꺼이 논의하고 개인적인 전화를 통해 자세한 정보를 제공해 드리겠습니다.