hikettei / cl-waffe2

[Experimental] Graph and Tensor Abstraction for Deep Learning all in Common Lisp
https://hikettei.github.io/cl-waffe2/
MIT License
124 stars 5 forks source link

[Enhancement] Proceed has become much clever! #46

Closed hikettei closed 11 months ago

hikettei commented 11 months ago

Changes

  1. No need to run an additional compiling when using the proceed function. Now cl-waffe2 is working on its interpreter separated from acceptor.lisp
CL-WAFFE2-REPL> (let ((a (randn `(100 100))))
          (time (proceed (!softmax a))))
Evaluation took:
  0.003 seconds of real time
  0.003321 seconds of total run time (0.002208 user, 0.001113 system)
  100.00% CPU
  7,856,886 processor cycles
  1,059,920 bytes consed

{CPUTENSOR[float] :shape (100 100) :named ChainTMP3135 
  :vec-state [computed]
  ((0.0069278497 0.00603512   0.003370682  ~ 0.016770806  0.0043490976 0.0053714155)                    
   (0.002915412  0.002544673  0.0023770544 ~ 0.0041544093 0.035565276  0.0024806873)   
                 ...
   (0.010166328  0.009509797  0.01469743   ~ 0.011308163  0.0051625143 0.0010121359)
   (0.0073646964 0.0056514535 0.005828529  ~ 0.018997418  0.0022856644 0.008197666))
  :facet :input
  :requires-grad NIL
  :backward <Node: PROCEEDNODE-T (A[~] -> A[~])>}

It is not necessary to care in which part of the computation node is compiled. If you want speed, just build it.