BYU-PRISM / GEKKO

GEKKO Python for Machine Learning and Dynamic Optimization
https://machinelearning.byu.edu
Other
594 stars 104 forks source link

Local Solve for t4g (ARM based) for AWS #160

Closed APMonitor closed 8 months ago

APMonitor commented 1 year ago

From Alex Bakker

Hello All

Firstly, a big thank you to everyone who works on Gekko. It is a truly impressive piece of technology.

To date I have been using Gekko to optimize reinforcement learning problems on AWS t2/t3 (x86 based) EC2 instances. This is working well.

The other day I was checking to make sure I was still using the most appropriate instance type (as it seems AWS is always introducing new types). The article below

https://www.learnaws.org/2020/12/19/t3-t3a-t4g/

made me wonder if I should consider using the t4g (ARM based) type. After making a few environment changes I was able to get my infrastructure working.... with the exception of

m = GEKKO(remote=False)

optimization. For example, the problem

https://gekko.readthedocs.io/en/latest/examples.html#hs-71-benchmark

works fine with its remote=True setting. However, setting remote=False is a crash at line 2097 of gekko.py at

https://github.com/BYU-PRISM/GEKKO/blob/master/gekko/gekko.py

Note that my python environment is

sys.platform 'linux' os.uname()[4] 'aarch64'

The code between lines 2080 and 2095 suggests that it is only looking for Raspberry Pi version of ARM where os.uname()[4].startswith("arm").

Therefore, I think it is simply the case that Gekko is not currently setup for this version of ARM.

Normally I would stand down at this point .... however..... the following points

  1. AWS is backing ARM (now pushing their third generation of graviton chips);
  2. the instances are significantly cheaper than comparable t2/t3 (x86) variants; and
  3. the t4g ARM instances use less power

all encourage me to want to be able to purse local optimization on an ARM architecture with GEKKO.

I am very keen to know if this might be on the horizon. Thank you again for all the great work.

Alex

Sponge-Bas commented 10 months ago

What is the status of the support for aarch64? 64-bit arm is also becoming more standard for Raspberry Pi's so it would be a nice feature to have

APMonitor commented 10 months ago

No progress on this architecture yet. Another recent issue shows some discussion on the best way to deliver local solve for a variety of platforms with the most capable solvers. The aarch64 currently would only support APOPT and BPOPT solvers. Would you want IPOPT in the aarch64 as well?

APMonitor commented 10 months ago

A new binary apm_aarch64 is added to the bin folder and changes to gekko.py to support local solve on arm64 / aarch64. New v1.0.7 will be released soon.